Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Php - Mysql
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 03-01-12, 21:12   #1 (permalink)
User
 
Data di registrazione: Oct 2011
Ubicazione: Como
Messaggi: 24
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:

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> 
<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
moneta173 non in linea   Rispondi citando
Vecchio 03-01-12, 21:57   #2 (permalink)
 
L'avatar di tigrone
 
Data di registrazione: Oct 2009
Ubicazione: Garlasco... non sono stato io!!!!
Messaggi: 347
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.

Codice:
<input type="hidden" name="id_foto" value="'.$risultatouomini['id'].'" />
Codice:
$id_foto=$_POST['id_foto'];
 mysql_query("UPDATE foto SET si = '$votasi' WHERE id = '$id_foto'");
Prova così.
__________________
www.tuo-web.com
tigrone non in linea   Rispondi citando
Vecchio 03-01-12, 22:27   #3 (permalink)
User
 
Data di registrazione: Oct 2011
Ubicazione: Como
Messaggi: 24
Grazie, ho fatto come mi hai detto e funziona.

Ecco il nuovo codice:

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!
moneta173 non in linea   Rispondi citando
Vecchio 03-01-12, 23:22   #4 (permalink)
 
L'avatar di tigrone
 
Data di registrazione: Oct 2009
Ubicazione: Garlasco... non sono stato io!!!!
Messaggi: 347
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:
Codice:
$_POST['votasi']='';
$_POST['votano']='';
$_POST['id_foto']='';
P.S.: attenzione, questo:
Codice:
$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.
__________________
www.tuo-web.com
tigrone non in linea   Rispondi citando
Vecchio 04-01-12, 12:14   #5 (permalink)
User
 
Data di registrazione: Oct 2011
Ubicazione: Como
Messaggi: 24
Si, quello lo avrei fatto dopo
Grazie mille, potete chiudere ^^
moneta173 non in linea   Rispondi citando
Rispondi


Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 15:41.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.