Visualizzazione dei risultati da 1 a 2 su 2

Discussione: script che va in loop

  1. #1

    script che va in loop

    Ciao a tutti,
    ho creato uno script per la gestione dei "Mi piace" per le pagine del mio sito, ovviamente, devo controllare prima che chi ha già messo mi piace una volta non possa metterlo più. Pensavo di averlo fatto bene ma se clicco sul Mi piace un altra volta, mi appare l'alert che ho impostato, ma mi appare circa 4 volte e come se non bastasse mi incrementa lo stesso il numero di mi piace... Come posso fare per risolverlo? Dove ho sbagliato? Sarà che è tardi ma non ci sto capendo più niente

    Ecco il codice

    codice:
    <form method="POST">
        <input type="image" src="./image/like.png" name="b_like" style="height: 40px;" value="Mi piace">
    </form>
    <?
    if (isset($_SESSION['valid_user'])){
            $q_id_user="SELECT id FROM utente WHERE username='$_SESSION[valid_user]'";
            $_id_user=mysql_query($q_id_user);
            $id_user=mysql_result($_id_user,0,"id");
            $q_check_id="SELECT id_like,si FROM guida WHERE id='$id'";
            $check_id=mysql_query($q_check_id);
            $stringa_id=mysql_result($check_id,0,"id_like");
            $tot_si=mysql_result($check_id,0,"si");
            $array_id=explode(",",$stringa_id);
            $conta=count($array_id);
            for($i=0;$i<$conta;$i++){
                if($array_id[$i]==$id_user){
                    ?>
                    <script type='text/javascript'>
                        alert("Hai gia' detto che ti piace");
                    </script>
                    <?
                }else{
                    $like=$stringa_id.$id_user.",";
                    $add_si=$tot_si+1;
                    $q_add_like="UPDATE guida SET id_like='$like' , si='$add_si' WHERE id='$id'";
                    mysql_query($q_add_like);
                }
            }
        }
    ?>
    Quindi, ricapitolando:
    Per la prima volta premo mi piace e tutto va bene,
    Clicco di nuovo e mi si apre l'alert con il messaggio di errore per 4 volte circa e si incrementa il mi piace lo stesso...

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    se ho capito bene, in $stringa_id hai tutto l'elenco di id che hanno dato il "mi piace"

    se è così, mi pare normale che l'id dell'utente venga inserito più volte, dato che ad ogni passaggio del for il valore di $array_id sarà diverso da quello di $id_user. Per risolvere il problema, devi uscire dal for quando mostri il messaggio a schermo (basta inserire un break quando si verifica la condizione) oppure invece che fare un for sull'array, usa la funzione in_array()

    però, se mi posso permettere, avrei fatto una tabella di correlazione like/user, che forse ti evita tutti questi giri di query, explode e ricerca in array, magari gestendo il tutto con una sola query

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.