Aktualisieren, eine MySql-Datenbank mit PHP über ein onClick-javascript-Funktion
Erstelle ich ein web-Spiel zum lernen von neuen Wörtern, die auf Kinder abzielt.
Habe ich eine Reihe von jeweils vier links die Anzeige eines bestimmten Wortes abgerufen aus meiner Datenbank und eine Ahnung, die ich brauche, um zu überprüfen, dass das Wort, welches ausgewählt wurde, entspricht das richtige Wort für diesen Hinweis.
Ich weiß, dass ich brauche, javascript zu verwenden, da die onClick-Funktion und ich kann erfolgreich überprüfen Sie, ob das Wort ausgewählt, entspricht das richtige Wort. Allerdings habe ich dann aktualisieren müssen eine Punktzahl, die in der Datenbank gespeicherten wenn das Wort richtig abgestimmt, von daher würde ich brauchen, um php zu benutzen.
Von dem, was ich sammeln kann, das bedeutet ich muss die AJAX verwenden, aber ich kann nicht finden, ein gutes Beispiel jemand mit AJAX onClick einen link zum aktualisieren einer Datenbank.
Habe ich versucht, dies zu tun...aber wahrscheinlich komplett falsch, da ich nicht bekommen konnte es ordnungsgemäß zu funktionieren:
//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>
//mein Versuch ajax in einem score.js Datei
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);
?>
InformationsquelleAutor | 2009-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde empfehlen, das lernen die AJAX-richtig - wird es nicht dauern, Sie Alter, aber wird Ihnen helfen zu verstehen, was Sie tun und nicht tun können.
Update eine DB aus einer web-Seite via AJAX ist sehr verbreitet. Ich würde vorschlagen, vereinfachen Sie Ihre JavaScript-Entwicklung mit jQuery (eine JavaScript Bibliothek). Es ist eine gute Einführung in jQuery und AJAX hier.
Im Grunde, was jQuery zu tun ist, schreiben Sie eine Menge von boilerplate-code für Sie. Was Sie schreiben ist so etwas wie dieses:
Was Sie hier tun, ist das senden einer POST-Anforderung an updatescore.php wenn die Antwort richtig ist.
Dann in Ihrer updatescore.php Sie müssen nur PHP-code, wie Sie bereits tun, die aktualisiert die Punktzahl in der Datenbank.
Können Sie natürlich viele weitere Dinge zu komplizieren, als diese, aber hoffentlich wird das genug sein, zum du zu erhalten begannen.
InformationsquelleAutor
Ich bemerkte, haben Sie "Fenster.Lage.reload(true);" im code. Warum? Das scheint, wie es würde die Dinge nicht funktionieren.
Sollten Sie versuchen zu analysieren, Ihr Programm, um herauszufinden, wo das problem geschieht. Dann werden Sie in der Lage sein, uns zu Fragen, eine ganz konkrete Frage wie "warum funktioniert Firefox nicht Feuer der onClick-handler auf, wenn ich auf diesen link klicken" statt nur posting drei Seiten code. Wenn Sie fügen Sie so viel code, ist es ziemlich schwer für uns zu finden, Fehler.
Also hier sind die Fragen, die Sie stellen sollten:
Ist mein HTML geparsed richtig? Für mich sieht es so aus wie es möglicherweise nicht ordnungsgemäß analysiert wird, weil Sie nicht setzen Sie Anführungszeichen um den Wert des onClick. Sie sollten verwenden Sie Anführungszeichen, wie: onClick="..." Um herauszufinden, ob Ihre HTML wird geparst schön, können Sie mit Firefox Ansicht->Quelle-Funktion und betrachten Sie die Farben druckt.
Ist mein onClick-handler immer genannt? Es sieht aus wie Sie mit alert () - 's effektiv so, dass ist gut.
Hat die Anfrage tatsächlich an meinem server? Um dies zu ermitteln, sollten Sie Firefox verwenden, und installieren Sie die Firebug Erweiterung. In der "Netto" - panel, es wird Ihnen zeigen, all die AJAX-Anfragen, die von Ihrer Seite, und es wird Ihnen zeigen die Ergebnisse, dass waren, die vom server zurückgegeben.
Ist das Skript auf meinem server, das richtige zu tun? Also auf der server-Seite, können Sie jetzt fügen Sie Zeilen wie "echo 'Hallo Welt';" und Sie werden sehen, dass Ausgabe in der Firebug Net-panel, das hilft beim Debuggen das Verhalten von serverseitigen Skripts.
Ist mein stateChanged-Funktion immer aufgerufen? Wieder einmal, verwenden Sie die alert () - Anweisungen, oder schreiben Sie Firebug debug-Konsole.
Sobald Sie verengt haben, Ihr problem unten zu verringern, versuchen Sie Ihren code, um die einfachsten möglich code immer noch nicht. Dann zeigen Sie uns den code und sagen Sie uns, was genau die Symptome des Fehlers sind.
Auf einer anderen Anmerkung, ich empfehle immer dieses Buch: Javascript: Die Deinitive Guide, 5th Edition, O ' Reilly. Es deckt viele Coole Sachen wie AJAX und Verschlüsse. Es kostet $50, aber es ist definitiv eine gute Investition, denn Sie erklärt die Dinge in einer sehr viel kohärenteren Weg, dann ist Sie je bekommen können von kostenlosen websites.
InformationsquelleAutor David Grayson