Ajax - php - mysql - onay kutusunu

1 Cevap php

Ben Ajax, PHP ve MySQL kullanarak yapmak için çalışıyorum bir web tabanlı oyun için onay kutuları ile dinamik bir sistem oluşturmak için çalışıyorum

Tüm sayfayı yenileme olmadan web sitesinde dinamik kullanıcının seçimine dayalı bilgi bir onay kutusu / seçilmemiş seçildiğinde, tespit veritabanından bilgi çekmek ve görüntülemek için olası yolu var mı?

Şimdiye kadar bu var ..

Benim formu böylece gibi bir veritabanı PHP render ediliyor:

   <form method="POST" action=""> 
<table cellspacing = 6 cellpadding = 2 >
    	<tr bgcolor=#dce3b5>
    		<td><b>Select &nbsp;&nbsp;</b></td>
    		<td><b>Country</b></td>
    		<td><b>Player Name</b></td>
    		<td><b>Points</b></td>
    		<td><b>Total Points</b></td>
    		<td><b>Season Rank</b></td>
    		<td><b>Cost</b></td>			
    	</tr>
 while($row = mysql_fetch_array($result))
  {
  $name = $row['Pname'];
  $PHM = $row['PHM'];
  $nation = $row['nation'];
  echo '<tr>';
  echo '<td>'.'<input type="checkbox" name="team[]" value= "'.$name.'" onClick ="showUser(this.value)">'.'</td>';
  echo'<td>'.$nationf.'</td>';  
  echo '<td>'."$name".'</td>';
  echo '<td>'."$row[points]".'</td>';
  echo '<td>'."$row[tpoints]".'</td>';
  echo '<td>'."$row[seriesrank]".'</td>';
  echo '<td>'."$row[PHM]".'</td>';
  echo  '</tr>';
}

Onay kutusu ile tıklandığında ediliyor zaman ben tespit ediyorum

onClick ="showUser(this.value)"

Yukarıdaki kodda.

Bu kod MY javascript bileşeni:

<script type="text/javascript">

var xmlhttp;

function showUser(str)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }
var url="getuser.php";
url=url+"?q="+str;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}


</script>

Bu gibi çalışır getuser.php php dosyası ....:

$q=$_GET["q"];
// connecting to database and stuff...  

$temp = mysql_query("SELECT PHM FROM current WHERE Pname = '$q' ");
$row = mysql_fetch_assoc($temp); 
$money =$row['PHM'];

echo $money;

ve sonra ben bu ile dinamik öğesi ile am

<div id="txtHint"><b>Changing element goes here.</b></div>

Temel olarak, para belirli bir miktar benim veritabanında bir isim ile ilişkili ve ben bir onay kutusu ile adlarını seçerek am

eg: Bob ----> 100 Rob ----> 200 Nancy --> 300 Ron ----> 50 Jack ----> 30

Ben Bob ve Rob kontrol ederseniz, dinamik eleman Ben Rob kaldırırsanız, o bana teslim düğmesine basmadan 100'e değiştirmek gerekir, 300 diyebilirim.

Şu an itibariyle, ben tıkladım son onay kutusu ile ilişkili para görüntüler ... Ben işaretli tüm onay kutularını algılamak için nasıl hiçbir fikrim yok.

Herkes bana yardımcı olabilir, bu ... Şimdiden teşekkürler harika olurdu :)

1 Cevap

Ben herhangi kütüphanelerin kullanımı olmadan bu yaklaşmakta olduğu takdire düşünüyorum ama gerçekten bir şeyler bir kaç yaparak zaman ve bir sürü sorun kaydedebilirsiniz düşünüyorum.

İlk olarak, jQuery AJAX ve DOM seçim işlerini işlemek için kullanın. Bu işler başlık altında nasıl çalıştığını öğrenmek için iyi ama ben sadece sizin ve çokluğun arasındaki soyutlama some katmanı kullanmak istemiyorsanız kendinizi gelecekte gönül yarası her türlü neden gidiyoruz düşünüyorum tarayıcı uyumsuzlukları.

İkincisi, PHP alanda ben PHP ve HTML karışık gerektiğini görüşünde değilim. Yani IMHO, PHP böyle kötü bir rap alır ve Jeff Atwood 'ın gözleri gibi insanlar kanatır, neden bir sürü. Bu sadece yönetilemez ve okunması zor alır. (Smarty gibi ya da çocuklar bu gün kullandığınız ne olursa olsun) görünümü ve denetleyici kod arasındaki mesafeyi için bazı tür çiftleşmiş kullanın.

Üçüncü olarak, bir URL parametresi alıyorsun ve gerçekten yapılması asla bir sorgu doğrudan koyarak. Ben bir güvenlik uzmanı olmak istemiyoruz ancak bu oldukça ciddi bir sorun olarak görünüyor - potansiyel.

Son olarak, soru cevap:

Yapmanız gereken bir kullanıcı bazı kutularını kontrol ederken bazı değerleri eklemek ise ben kullanıcı kutuları tıklar gibi o gerçek dolar (isim yerine) miktarı ve onları toplayın onay kutularını değerini yapacak. JQuery kullanıyorsanız bunun gibi bir şey olacaktır:

// bind to the click event on all checkboxes
$('input[type=checkbox]').click(function(){   
    // for each checked box, total up all the values 
    var total = 0
    $('input:checked').each(function(){
       total += parseInt($(this).val());
    });

    // display that total in the hint field you mentioned.
    $('#txtHint').val(total);
});

Bu sunucuya bir yolculuk gerektirir olmaz. Aslında hesaplanmış miktarda almak ve sadece kullanıcıya göstermek dışında bir şey yapmak için gidiyoruz eğer söyledi, bu iyi bir fikir olmayabilir. Ayrıca, böylece sadece bir fikir değil, bir nihai ürün olarak tedavi edilmelidir örnek kod yapılıyor hiçbir hata denetimi var.