• User

    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


  • User Attivo

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


  • User

    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!


  • User Attivo

    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.


  • User

    Si, quello lo avrei fatto dopo 😉
    Grazie mille, potete chiudere ^^