2012-04-24 15 views
7

Ich versuche, eine mobile Anwendung mit PhoneGap und jQuery Mobile zu erstellen. In meiner App habe ich eine Seite wo ist ein Link zu PHP-Datei, die MYSQL aktualisiert und auf die nächste Seite geht. Aber mit PhoneGap muss ich alle PHP-Dateien auf dem externen Server haben, damit ich meine aktuelle Lösung für diese Anwendung nicht verwenden kann.Update MYSQL mit jQuery/AJAX

Dies ist die PHP, die ich MYSQL zu aktualisieren verwenden, um

<?php 

$var = @$_GET['id'] ; 

$con = mysql_connect("localhost","username","abc123"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("database", $con); 

mysql_query("UPDATE table SET condition=true 
WHERE ID= \"$var\" "); 

header('Location: http://1.2.3.4/test'); 

mysql_close($con); 
?> 

So wie kann ich dieses PHP laufen, wenn der Benutzer auf eine Schaltfläche klickt? Mit jQuery/AJAX nehme ich an?

+0

können Sie Code senden, wo Sie diese PHP-Seite in Apps aufrufen. – vikky

+1

Dies ist anfällig für SQL-Injektion. Fügen Sie die vom Benutzer bereitgestellten Daten niemals direkt in eine Abfrage ein, ohne sie zu umgehen. – Quassnoi

Antwort

8

Nehmen wir an, der obige PHP-Code ist in der Datei update.php. Dann können Sie den folgenden Code verwenden -

<head> 
<script src="jquery.js"></script> 
<script> 
    function UpdateRecord(id) 
    { 
     jQuery.ajax({ 
     type: "POST", 
     url: "update.php", 
     data: 'id='+id, 
     cache: false, 
     success: function(response) 
     { 
     alert("Record successfully updated"); 
     } 
    }); 
} 
</script> 
</head> 
<body> 
<input type="button" id="button_id" value="Update" onClick="UpdateRecord(1);"> 
</body> 

Übergeben Sie einfach eine gültige ID in der Funktion UpdateRecord. Setzen Sie Ihren PHP-Code in die Datei update.php. Nur um auf einer sicheren Seite, in der PHP-Code ersetzen $var = @$_GET['id'] ; mit $var = @$_POST['id'] ; und prüfen, ob dies für Sie

+0

Wie muss ich diesen Code ändern, damit er funktioniert? Jetzt tut es nichts .. – user1323294

+0

Wird es zumindest die Datensätze aktualisieren? – skos

+0

Wenn ich auf den Knopf klicke tut es nichts .. – user1323294

1

sagen Sie Ihre Taste hat eine ID clickme binden Sie einen Event-Handler darauf wie folgt, ich bin Usnig die on-Selektor, um Fälle zu vermeiden, in denen der Code ausgeführt wird, wenn die Schaltfläche nicht auf der Seite vorhanden ist .. Sie können sehr gut binden, um einen click Handler

$(document).on("click","#clickme",function(){ 
    $.ajax({ 

     type:"POST", //GET - update query should be POST 
     url: my_endpoint.php, //your php end point 
     data: {jsonKey1:jsonValue1}, 
     success: function(data){ //if success 
      //do necessary things with data 
     } 

    }) 
}); 

Ist das, was Sie suchen?

+0

Es scheint nicht zu funktionieren – user1323294

0

funktioniert etwas in der Erfolgsfunktion Do

success: function(response) 
    { 
     window.location = response; 
    } 

und Sie sollten html

enthalten und in pHP tun so etwas wie dieses

mysql_query('blah blah'); 
mysql_close($con); 

echo "http://1.2.3.4/test"; 
2
<head> 
<script src="jquery.js"></script> 
<script> 
    function UpdateRecord(id) 
    { 
     jQuery.ajax({ 
     type: "POST", 
     data: 'id='+id,  // <-- put on top 
     url: "update.php", 
     cache: false, 
     success: function(response) 
     { 
     alert("Record successfully updated"); 
     } 
    }); 
} 
</script> 
</head> 
<body> 
<input type="button" id="button_id" value="Update" onClick="UpdateRecord(1);"> 
</body> 

Th ose Codes vorgeschlagen von Sachyn Košare funktioniert, ist das einzige, was die Linie data: 'id='+id oben auf url: "update.php"

sein und können Sie $var = $_POST['id']; für Ihre PHP verwenden.