2012-04-24 23 views
7

Estoy intentando crear una aplicación móvil con PhoneGap y jQuery Mobile. En mi aplicación tengo una página donde hay un enlace al archivo PHP que actualiza MYSQL y se dirige a la página siguiente. Pero con PhoneGap necesito tener todos los archivos PHP en el servidor externo, así que no puedo usar mi solución actual en esta aplicación.Actualizar MYSQL con jQuery/AJAX

Este es el PHP que utilizo para actualizar MySQL

<?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); 
?> 

Entonces, ¿cómo puedo ejecutar este PHP cuando el usuario hace clic en un botón? Con jQuery/AJAX supongo?

+0

puede enviar un código donde llama a esta página php en las aplicaciones. – vikky

+1

Esto es propenso a la inyección 'SQL'. Nunca inserte datos proporcionados por el usuario directamente en una consulta sin escapar de ellos. – Quassnoi

Respuesta

8

Digamos que el código PHP anterior está en el archivo, update.php. A continuación, puede usar el siguiente código:

<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> 

Simplemente pase una identificación válida en la función UpdateRecord. Pon tu código PHP en el archivo update.php. Sólo para estar en un lado más seguro, en su código PHP reemplazar $var = @$_GET['id'] ; con $var = @$_POST['id'] ; y comprobar si esto funciona para usted

+0

¿cómo debo cambiar este código para que funcione? Ahora no hace nada ... – user1323294

+0

¿Al menos actualiza los registros? – skos

+0

Cuando hago clic en el botón no hace nada ... – user1323294

1

dice que su botón tiene un id clickme que vincula un controlador de eventos de la siguiente manera, utilizo el selector on para evitar casos donde el código se ejecuta cuando el botón no existe en la página ... puede hacerlo muy bien enlazar un controlador click

$(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 
     } 

    }) 
}); 

Es esto lo que busca?

+0

Parece que no funciona – user1323294

0

hacer algo en su función de éxito

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

y html debe contener

Y en php hacer algo como esto

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 códigos sugeridos por Sachyn Kosare funciona, lo único es que la línea data: 'id='+id tiene que estar en la cima de url: "update.php"

Y, usted puede utilizar para su $var = $_POST['id']; PHP.

Cuestiones relacionadas