-
Inserire voto database
Salve a tutti. Io, in pratica, genero il tasto "Vota" per ogni news che viene scritta. In queste news, quando clicco "vota", si dovrebbe mandare il tipo di news al database, ma senza aggiornare la pagina. Ho provato con questo codice che si trova nella pagina "home.php", ma senza risultato.
Codice HTML:
<td><input id="elimina" onclick="vota(); return false;" type='button' name="<?php echo $id_user; ?>" value='Vota' /></td> <center>
<?php
$vota = addslashes($id_user);
?>
function vota(){
newss = document.getElementById(<?php $vota ?>).value;
$.ajax({
type: "POST",
url: "/query/query_user_vota.php",
data: newss,
});
}
</script>
Dove sbaglio? E' giusta questa stringa?
Codice HTML:
newss = document.getElementById(<?php $vota ?>).value;
La query che eseguo è questa
Codice PHP:
$vota = addslashes($id_user);
mysql_query("INSERT INTO vota_profilo (news) VALUES ('$vota')") or die(mysql_error());
e si trova nella directory /query. Purtroppo conosco solo php, css e html :oops:
-
Ad esempio, ora al database mi arriva un record vuoto dopo che ho modificato <style> in questo modo:
Codice HTML:
<script type="text/javascript">
function vota(){
$.ajax({
type: "POST",
url: "/query/query_user_vota.php",
data: ({
news: <?php echo $id_user; ?>
}),
});
}
</script>
ma come mai non mi stampa la news, ma arriva vuoto il record?
-
il codice JS per prelevare il valore del Input è corretto .
nel PHP per passare i dati dovresti usare mysqli_real_escape_string
... ma non hai postato tutto il codice AJAX o hai scritto solo quello ?
ho creato un piccolo esempio
dove si richiede di effettuare una votazione , si passa il valore ai file PHP che aggiorna il DB e si legge il risultato modificato con AJAX
nel file iniziale ho inserito un form e lo script AJAX
Codice HTML:
<html>
<body>
<script language="javascript" type="text/javascript">
function ajaxFunction(){
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("risposta").innerHTML=xmlhttp.responseText;
}
}
var voto = document.getElementById('voto').value;
var ID = 1; /* per provare imposto un ID , ma questo valore é ID della News che devi votare */
var queryString = "?vota=" + voto ;
queryString += "&ID=" + ID;
xmlhttp.open("GET","databaseop.php" + queryString,true);
xmlhttp.send();
}
</script>
<form name='mioform'>
Voto: <input type='text' id='voto' /> <br />
<input type='button' onclick='ajaxFunction()' value='VOTA'/>
</form>
<div id='risposta'></div>
</body>
</html>
nel file PHP invece leggo i dati inviati dal form , eseguo un ricerca del ID , estrapolo la votazione precedente e ci sommo quella attuale ; quindi eseguo UPDATE del DB e eseguo un echo del nuovo valore.
Codice PHP:
<?php
$con=mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$vota = mysqli_real_escape_string($con, $_GET['vota']);
$id = mysqli_real_escape_string($con, $_GET['ID']);
$ID = intval ( $id );
$voto = intval ( $vota );
$query = "SELECT * FROM `votazione` WHERE `ID`=$ID";
$qry_result = mysqli_query($con,$query) or die(mysqli_error());
while($row = mysqli_fetch_array($qry_result)){
$votoprec = "$row[vota]";
}
$voto = $voto + $votoprec;
mysqli_query($con,"UPDATE votazione SET vota=$voto WHERE ID=$ID");
$query = "SELECT * FROM `votazione` WHERE `ID`=$ID";
$qry_result = mysqli_query($con,$query) or die(mysqli_error());
while($row = mysqli_fetch_array($qry_result)){
$votoadesso = "$row[vota]";
}
echo $votoadesso;
mysqli_close($con);
?>
chiaramente il codice è minimale allo scopo di semplificarne la comprensione.
P.S.
L'utilizo di AJAX era stato già spiegato nelle guide in "How-To"
-
Grazie mille per la risposta. Correttissima :wink: