Salut tout le monde, j'ai un légé problème avec une de mes requêtes... Je m'explique:
J'ai suivi le tutoriel de Grafikart concernant les likes/dislikes, tout est bien et beau, mais dans ma table votes (où sont stockés les votes),
la colonne value "1/-1(like/dislike" ne veut se mettre à jour:

        if($vote_record){
            if($vote_record->value == $vote){
                return false;
            }

            $this->former_vote = $vote_record;
            $req = $this->pdo->prepare("UPDATE votes SET value = ? WHERE id = ?");
            $req->execute([$vote, $vote_record->id]);
            return true;

        }

Si quelqu'un serait m'aider, cdt, alex.

12 réponses


Steeve VERDIEU
Réponse acceptée

S'il ne se met pas a jour, c'est sans doute parceque tu as passé la meme valeur pour le like et le dislike au niveau des liens menant a la page vote....Essaie de bien verifier la valeur de la variable qui contient la valeur du vote.

Mes connaissances en PHP sont peut êtres limitées, mais tu lui fait passer quoi comme valeur/variable à te fonction execute là ?

$req->execute([$vote, $vote_record->id]);

Ne serait ce pas plutôt :

$req->execute($vote,$vote_record->id);
Alex
Auteur

Non, je t'explique:
Lorsque tu utilises execute dans PDO tu dois obligatoirement mettre les valeurs dans un tableau, donc soit tu met array($valeurs) sois tu mets [] = array(); . Voilà.

Je ne vois pas ou est l'erreur au niveau du code...Regarde plutot au niveau du lien qui mene vers la page qui insere les votes.

Salut,

Est-ce que MySQL ou PDO te retourne une erreur ? As-tu consulté les logs d'erreurs ?

Alex
Auteur

Je n'ai aucun erreur.

Si tu met un die('je suis ici'); au tout début de ta fonction appellé. Ca fait quoi ?

Y'a forcément quelque chose qui ne va pas si l'insertion ne se fait pas.
As-tu regardé le tuto dans son entier ?

Bonsoir, peux-tu faire un var_dump de $vote_record,$vote,$this->pdo
Merci.

Moi ce que je ferai, c'est afficher la requête avec les valeurs du genre :

"UPDATE votes SET value = 20 WHERE id = 3"

(je ne sais pas qu'elle valeur doit avoir "value").
Une fois la requête affiché, soit tu vois le soucis, sinon tu l'executes manuellement dans PHPMyAdmin et tu vois..

Pourquoi pas tout simplement ça ?

$req = $this->pdo->prepare("UPDATE votes SET value = ".$vote." WHERE id = ".$vote_record->id);
Alex
Auteur

Après revue, ça vient enfaite de $this->former_vote->id;
Il n'est égale à rien :x

Sunny -> Sinon les valeurs ne sont pas protégés!

Merci de l'aide tout le monde !