Problème conditions
Résolu/Fermé
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
-
29 sept. 2016 à 22:08
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - 3 oct. 2016 à 19:48
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - 3 oct. 2016 à 19:48
A voir également:
- Problème conditions
- Votre compte a été désactivé pour violation de nos conditions d’utilisation - Guide
- Mise en forme conditionnelle excel plusieurs conditions - Guide
- Excel reporter des données sur une autre feuille avec conditions ✓ - Forum Excel
- Google sheet mise en forme conditionnelle 2 conditions ✓ - Forum Bureautique
- Désolé. vous ne pouvez pas accéder à cet élément, car il ne respecte pas nos conditions d'utilisation. ✓ - Forum Cloud
3 réponses
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
30 sept. 2016 à 12:25
30 sept. 2016 à 12:25
Salut,
La méthode rowCount() de PDO ne garantie par de retourner le nombre de ligne pour une requête de type SELECT (cf. doc) : https://www.php.net/manual/fr/pdostatement.rowcount.php
Tu peux trouver sur cette même doc un exemple de récupération du nombre de ligne via une requête SELECT COUNT(*) et d'un fetchColumn() à la place de rowCount() : https://www.php.net/manual/fr/pdostatement.rowcount.php#example-1065
Bonne journée,
La méthode rowCount() de PDO ne garantie par de retourner le nombre de ligne pour une requête de type SELECT (cf. doc) : https://www.php.net/manual/fr/pdostatement.rowcount.php
Tu peux trouver sur cette même doc un exemple de récupération du nombre de ligne via une requête SELECT COUNT(*) et d'un fetchColumn() à la place de rowCount() : https://www.php.net/manual/fr/pdostatement.rowcount.php#example-1065
Bonne journée,
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
1 oct. 2016 à 23:23
1 oct. 2016 à 23:23
Bonsoir, donc après quelques recherche je suis arrivé a cela:
Donc au début je voulais récupérer la variable ['tot'] via $reqpseudo['tot'].
Mais j'ai eu une erreur Fatal.
Avec ce code j'ai bien mon message d'erreur en bas comme quoi: "Votre pseudo est déjà utilisé !" mais un message d'erreur aussi tel que: "Notice: Object of class PDOStatement could not be converted".
J'aimerai comprendre afin d'évité ce problème a l'avenir.
Merci d'avance.
$reqpseudo = $bdd->prepare("SELECT COUNT(*) AS tot FORM membres WHERE pseudo = ?"); $reqpseudo->execute(array($pseudo)); //$pseudoexist = $reqpseudo->fetchColumn(); if($reqpseudo == 0)
Donc au début je voulais récupérer la variable ['tot'] via $reqpseudo['tot'].
Mais j'ai eu une erreur Fatal.
Avec ce code j'ai bien mon message d'erreur en bas comme quoi: "Votre pseudo est déjà utilisé !" mais un message d'erreur aussi tel que: "Notice: Object of class PDOStatement could not be converted".
J'aimerai comprendre afin d'évité ce problème a l'avenir.
Merci d'avance.
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
3 oct. 2016 à 09:53
3 oct. 2016 à 09:53
Tu ne peux normalement pas comparer l'objet $reqpseudo avec la valeur 0 puisque cette objet un est PDOStatement et pas directement le résultat de ta requête, d'où le message d'erreur Notice je pense.
L'utilisation de fetchColumn() sur l'objet $reqpseudo est normalement la bonne méthode.
Peux tu stp nous montrer le message d'erreur complet de l'erreur Fatal avec si possible le code correspondant ?
L'utilisation de fetchColumn() sur l'objet $reqpseudo est normalement la bonne méthode.
Peux tu stp nous montrer le message d'erreur complet de l'erreur Fatal avec si possible le code correspondant ?
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
3 oct. 2016 à 19:33
3 oct. 2016 à 19:33
$reqpseudo = $bdd->prepare("SELECT COUNT(*) AS tot FORM membres WHERE pseudo = ?"); $reqpseudo->execute(array($pseudo)); $pseudoexist = $reqpseudo->fetchColumn(); if($pseudoexist == 0)
Donc la aucun message d'erreur mais le code ne sert a rien car le compte est crée sans vérifié si le pseudo est présent dans la base de donnée.
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
3 oct. 2016 à 19:37
3 oct. 2016 à 19:37
$reqpseudo = $bdd->prepare("SELECT COUNT(*) AS tot FORM membres WHERE pseudo = ?"); $reqpseudo->execute(array($pseudo)); $pseudoexist[tot] = $reqpseudo->fetchColumn(); if($pseudoexist == 0)
Donc la j'ai bien le message d'erreur: "Votre pseudo est déjà utilisée !"
Et j'ai un le message de la part du serveur: "Notice: Use of undefined constant tot - assumed 'tot' in C:\wamp64\www\site\inscription.php on line 19"
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
3 oct. 2016 à 19:40
3 oct. 2016 à 19:40
$reqpseudo = $bdd->prepare("SELECT COUNT(*) AS tot FORM membres WHERE pseudo = ?"); $reqpseudo->execute(array($pseudo)); if($pseudoexist == 0)
La donc la condition n'est pas bonne en plus de cela le serveur m'affiche un serveur.
Donc condition fausses.
Message: "Notice: Undefined variable: pseudoexist in C:\wamp64\www\site\inscription.php on line 20"
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
3 oct. 2016 à 19:41
3 oct. 2016 à 19:41
Donc la version 2 est pas mal mais il manque quelque chose.... Vu que j'ai un message.
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
3 oct. 2016 à 19:48
3 oct. 2016 à 19:48
Bonsoir, donc j'ai trouvé la solution je vous la partage.
La tout fonctionne correctement.
$reqpseudo = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?"); $reqpseudo->execute(array($pseudo)); $pseudoexist = $reqpseudo->rowCount(); if ($pseudoexist == 0)
La tout fonctionne correctement.
Modifié par flo39400 le 30/09/2016 à 19:57
je vous montre cela, pour la condition doit être vrai pour le serveur car sinon il devrait avoir une erreur.