- Home
- Categorie
- Coding e Sistemistica
- PHP
- Aggiunta voto record sbagliato
-
Aggiunta voto record sbagliato
Ciao a tutti! Sto realizzando una semplice galleria fotografica con possibilità di voto. Ho deciso di mostrare una foto a caso ad ogni aggiornamento, il problema, però, è che il voto non viene aggiunto alla foto giudicata, ma a quella che compare successivamente, dopo l'aggiornamento causato dal form.
Vi posto il codice:
codice PHP:
$estraifotouomini = mysql_query("SELECT * FROM foto WHERE conf = '1' AND sesso = 'm' ORDER BY rand() LIMIT 1"); while($risultatouomini = mysql_fetch_array($estraifotouomini)){ echo "<i>Le foto sono mostrate in modo casuale.</i><br><br><br> <center><img src='" . $risultatouomini['url'] . "'></center>"; if(isset($_SESSION['utente'])){ echo "<br><br> <center> <form method='POST'> <table><tr> <td><input type='submit' name='votasi' value='1'></td> <td><input type='submit' name='votano' value='0'></td> </tr></table> </form> </center>"; if(isset($_POST['votasi']) || isset($_POST['votano'])){ if(isset($_POST['votasi'])){ $votasi = $risultatouomini['si']+1; mysql_query("UPDATE foto SET si = '$votasi' WHERE id = '$risultatouomini[id]'"); } else { $votano = $risultatouomini['no']+1; mysql_query("UPDATE foto SET no = '$votano' WHERE id = '$risultatouomini[id]"); } } } }
Non posso mostrarvi un esempio perchè è tutto in locale. Spero abbiate capito e possiate aiutarmi. Grazie
-
Perchè quando invii il form si ricarica la pagina cambiando la foto...
Col form, devi inviare anche l'id della foto, magari mettendolo in un input hidden.
Quando acquisisci i dati dal form, vai ad aggiornare il record giusto col suo relativo id.<input type="hidden" name="id_foto" value="'.$risultatouomini['id'].'" />
$id_foto=$_POST['id_foto']; mysql_query("UPDATE foto SET si = '$votasi' WHERE id = '$id_foto'");
Prova così.
-
Grazie, ho fatto come mi hai detto e funziona.
Ecco il nuovo codice:
$estraifotouomini = mysql_query("SELECT * FROM foto WHERE conf = '1' AND sesso = 'm' ORDER BY rand() LIMIT 1"); while($risultatouomini = mysql_fetch_array($estraifotouomini)){ echo "<i>Le foto sono mostrate in modo casuale.</i><br><br><br> <center><img src='" . $risultatouomini['url'] . "'></center>"; if(isset($_SESSION['utente'])){ echo "<br><br> <center> <form method='POST'> <table><tr> <input type='hidden' name='id_foto' value='" . $risultatouomini['id'] . "'/> <td><input type='submit' name='votasi' value='1'></td> <td><input type='submit' name='votano' value='0'></td> </tr></table> </form> </center>"; if(isset($_POST['votasi']) || isset($_POST['votano'])){ if(isset($_POST['votasi'])){ $id_foto=$_POST['id_foto']; $votasi = $risultatouomini['si']+1; mysql_query("UPDATE foto SET si = '$votasi' WHERE id = '$id_foto'"); } else { $votano = $risultatouomini['no']+1; mysql_query("UPDATE foto SET no = '$votano' WHERE id = '$risultatouomini[id]"); } } } }
Ora ho un altro problema però: se aggiorno la pagina aggiunge comunque un voto, invece non dovrebbe farlo. Come posso sistemare? Grazie mille ancora!
-
Se non fai submit dal form non dovrebbe aggiungere il voto se aggiorni la pagina... tuttavia, se fai il submit, aggiornare la pagina è come riinviare il form quindi ti aggiunge il voto.
E' il classico problema...
Prova a fare un redirect ad una pagina dove è presente un ulteriore redirect a questa... in pratica: fagli fare un giro e nel frattempo, cerca di svuotare l'array di sessione:
$_POST['votasi']=''; $_POST['votano']=''; $_POST['id_foto']='';
P.S.: attenzione, questo:
$id_foto=$_POST['id_foto']; $votasi = $risultatouomini['si']+1; mysql_query("UPDATE foto SET si = '$votasi' WHERE id = '$id_foto'");
lo devi applicare anche al 'votano' altrimenti ti attribuisce il voto no ad un'altra immagine.
-
Si, quello lo avrei fatto dopo
Grazie mille, potete chiudere ^^