Système de like - Requête qui refuse de marcher...

Par Alex, il y a 10 ans


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

Benjamin Derepas, il y a 10 ans

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, il y a 10 ans

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

Steeve VERDIEU, il y a 10 ans

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.

betaWeb, il y a 10 ans

Salut,

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

Alex, il y a 10 ans

Je n'ai aucun erreur.

Azorgh, il y a 10 ans

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

betaWeb, il y a 10 ans

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 ?

Mehdi Kamil, il y a 10 ans

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

Steeve VERDIEU, il y a 10 ans

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.

Keller, il y a 10 ans

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

LesTutossUE4, il y a 10 ans

Pourquoi pas tout simplement ça ?

$req = $this->pdo->prepare("UPDATE votes SET value = ".$vote." WHERE id = ".$vote_record->id);
Alex, il y a 10 ans

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 !