Bir onClick javascript fonksiyonu ile PHP kullanarak bir MySQL veritabanı güncelleniyor

2 Cevap php

Ben çocuklara yönelik yeni kelime öğrenme için bir web oyun oluşturma.

Ben her zaman veritabanı ve bir ipucu alınan belirli bir kelime görüntüleme dört bağlantılar bir dizi var, ben seçilmiş kelime o ipucu için doğru sözcüğü uygun olup olmadığını kontrol etmek gerekir.

Ben çünkü onClick fonksiyonu javascript kullanmak gerektiğini biliyorum ve başarılı seçilen kelime doğru sözcüğü uygun olup olmadığını kontrol edebilirsiniz. Ancak, ben o yüzden ben php kullanmak gerekir, Sözcük doğru uyumlu ise veritabanında tutulan bir puan güncellemeniz gerekir.

Anladığım kadarıyla bu AJAX kullanmanız gerektiği anlamına gelir ama sonra bir veritabanını güncellemek için bir bağlantı AJAX onClick kullanan herkes için iyi bir örnek bulamıyorum.

Ben düzgün çalışması için alamadım gibi bunu yapmak için çalıştı ... ama onun muhtemelen tamamen yanlış adres:

//This is my link that I need to use in my game.php file where $newarray[0] is that answer I want to check against $newarray[$rand_keys]

<a onClick=originalUpdateScore('$newarray[0]','$newarray[$rand_keys]')>$newarray[0]</a>

/ / A score.js dosyasında ajax benim girişimi

var xmlHttp;

function originalUpdateScore(obj,corr){
    xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
	alert ("Browser does not support HTTP Request");
	return;
}

if(corr == obj){

var url="getscore.php";
//url=url+"?q="+str;
//url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
//xmlHttp.open("GET",url,true);
xmlHttp.open(url,true);
xmlHttp.send(null);

	alert('Correct');

}
else
{
	alert('AHHHHH!!!');
}

window.location.reload(true);

}

function stateChanged() 
    { 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{ 
		document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
	} 
}
function GetXmlHttpObject()
{
	var xmlHttp=null;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		//Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
return xmlHttp;

}

//attempting to update the database in a getscore.php file

<?php
//$q=$_GET["q"];
include("dbstuff.inc");
$con = mysqli_connect($host, $user, $passwd, $dbname)
or die ("Query died: connection");

$sql= "UPDATE `temp` SET `tempScore`= `tempScore`+1 WHERE (temp.Username='$_SESSION[logname]')";

$showsql = "SELECT `tempScore` FROM `temp` WHERE (temp.Username='$_SESSION[logname]')";
$result = mysqli_query($con, $showsql);

echo "$result";

mysqli_close($con);
?>

2 Cevap

Ben son derece düzgün AJAX öğrenme tavsiye ederim - bu yaş almayacağız ama sen ve onunla yapamayacağı anlamanıza yardımcı olacaktır.

AJAX ile bir web sayfası bir DB güncelleniyor çok yaygındır. I jQuery (bir JavaScript kütüphanesi) kullanarak JavaScript geliştirme basitleştirilmesi öneririm. JQuery ve AJAX için iyi bir tanıtım var here.

Temelde ne jQuery sizin için yapacak Demirbaş kodu bir sürü yazma. Ne yazma sona erecek bu gibi bir şeydir:

function updateScore(answer, correct) {
  if (answer == correct) {
    $.post('updatescore.php');
  }
}

...

<a onclick="updateScore(this, correct)" ...> </a>

Burada ne yapıyoruz cevap doğru olduğunda updatescore.php bir POST isteği gönderiyor.

Ardından, updatescore.php yılında, sadece zaten veritabanında puan güncelleme hangi yapmak gibi PHP kodu olması gerekir.

Sen belli ki çok daha fazla bu daha şeyler karmaşık yapabilirsiniz, ama umarım bu başlangıç ​​için yeterli olacaktır.

Ben fark ettim "window.location.reload (true);" kodunuzda. Neden? O şey işe yapacak gibi görünüyor.

Siz sorun oluyor nerede programı bulmak için analiz etmeye çalışacağım. Sonra bize gibi çok özel bir soru sormak mümkün olacaktır yerine sadece kod üç sayfa gönderme "Ben bu linke tıkladığında neden Firefox onClick işleyicisi yanmıyor". Bu kadar kodu kopyalayıp yapıştırın zaman bize hata bulmak için, bu oldukça zor.

Yani burada sormalısınız sorular şunlardır:

  1. Eğer onClick değeri tırnak koymadı çünkü doğru çözümlenen olabilir gibi Is my HTML being parsed correctly? Benim için, görünüyor. HTML güzel ayrıştırılır ediliyor ise, Firefox'un Görünüm-> Kaynağı özelliğini kullanın ve yazdırır renklere bakabilirsiniz öğrenmek için onClick = "...": Sen gibi tırnak kullanmak gerekir.

  2. Eğer uyarı kullandığınız gibi o yüzden iyi Is my onClick handler getting called? Bu etkili) 's (görünüyor.

  3. Does the request actually get sent to my server? Bunu belirlemek için, Firefox kullanın ve Firebug uzantısı yüklemeniz gerekir. "Net" panelinde, bu sizin sayfası tarafından yapılıyor, ve size sunucudan döndürülen sonuçları gösterecektir tüm AJAX istekleri gösterecektir.

  4. Is the script on my server doing the right thing? Yani sunucu tarafında, şimdi gibi çizgiler ekleyebilirsiniz "echo 'merhaba dünya';" ve size sunucu tarafı komut dosyası davranışı hata ayıklama yardımcı olacak, Firebug Net panelinde o çıkış görürsünüz.

  5. Is my stateChanged function getting called? Bir kez daha, alert () ifadeleri kullanmak veya Firebug's debug console için yazıyorum.

Eğer sorununuzu daralmış ettik, hala başarısız simplest possible kodu kodunuzu azaltmaya çalışın. O zaman bize kodunu göstermek ve hata belirtileri tam olarak ne bize.

Bir başka not, ben bu kitabı almak tavsiye: Javascript: The Deinitive Guide, 5th Edition by O'Reilly. Bu AJAX ve kapanışları gibi serin sürü kapsar. 50 $ maliyeti ancak o zaman hiç özgür sitelerinden alırsınız çok daha tutarlı bir şekilde bir şeyler anlatıyor çünkü bu kesinlikle iyi bir yatırım.