JeuWeb - Crée ton jeu par navigateur
PDO Count avec variable ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : PDO Count avec variable ? (/showthread.php?tid=3010)



PDO Count avec variable ? - Shua - 05-12-2010

Bonjour,

Après une partie de la nuit à plancher sur la question, je me tourne vers vous pour me venir en aide !
Tout d'abord, et même si c'est peu utile à savoir je pense, j'ai toujours programmé en procédural et essaie de me lancer dans un nouveau projet pour m'initier concrètement à la POO, et au passage à PDO par la même occasion.

Le soucis est le suivant :

J'essaie de repenser totalement ma façon de programmer grâce à un tutoriel trouvé sur le net. Enfin bref tout ça n'est pas la question...
Actuellement en train de programmer l'inscription, j'ai un soucis dans mes vérifications de formulaire. Après quelques tests, ce serait de mes commandes PDO qui ferait tout planter... car oui, en dessous de ma commande, plus rien ne s'affiche, seuls mes print_r qui me permettent de vérifier que les variables n'ont aucun soucis avant.

// Vérification Nom
$d['nom'] = htmlentities($d['nom']);
$nNom = $db->prepare('SELECT COUNT(id) FROM membres WHERE nom = :nom')->fetchColumn();
$nNom->bindParam('nom', $d['nom']);
$nNom->execute();
if(empty($d['nom']))
$nom = '<strong>/!\</strong> Votre pseudo doit être... présent !';
else if($nNom >= 1)
$nom = '<strong>/!\</strong> Ce pseudo est déjà utilisé...';
$nNom->closeCursor();

Je nage encore beaucoup avec PDO mais ce que j'ai du mal à comprendre, c'est qu'en mettant une valeur brute dans la recherche, ça fonctionnait ; et si j'enlève ce bloc de code de ma page, tout fonctionne parfaitement (sans la vérification évidemment).
J'ai essayé plusieurs méthodes (l'array dans execute, le ? dans la requete, rien y fait), le résultat reste inchangé.

NB : Pour info, la variable $d['nom'] renvoi bien le pseudo (dans mon exemple : Shua).

Merci d'avance Smile


RE: PDO Count avec variable ? - Plume - 05-12-2010

Plop!

J'vais p'tet dire une connerie. Ca fait un moment que je ne joue plus avec PHP et encore plus longtemps en ce qui concerne PDO. Je serais toi, je ferais le prepare(), ensuite le bind(), le execute(), ensuite le fetch().

@tchaOo°


RE: PDO Count avec variable ? - Shua - 05-12-2010

D'oh !

je ne sais pas pourquoi, j'étais sûr que c'était un truc aussi ridicule que ça...
comme quoi un œil extérieur... boarf...

*se pend, pi c'est tout*

Merci ^^"

(faudrait que je pense à comprendre ce que je programme au lieu d'écrire les commandes comme ça x.X)


RE: PDO Count avec variable ? - Hell-AstiK - 05-12-2010

Salut, _who a dit de bonne choses,
mais pourquoi bindParam et pas bindValue ? Si tu re-execute cette requête, oui utilise bindParam, sinon utilise bindValue.
ensuite pour :
$nNom->bindParam('nom', $d['nom']);
Il faut bien mettre les : devant la clé (ici nom) puis avec un paramètre, dire s'il s'agit d'une suite de nombre, ou une chaine de caractère quelconque (ou autres).
Supposant que $d['nom'] ne peut contenir qu'une chaine de caractère.

$nNom->bindParam(':nom', $d['nom'], PDO:TongueARAM_STR);
':nom' ma clé, $d['nom'] ma variable, PDO:TongueARAM_STR mon paramètre.


RE: PDO Count avec variable ? - Shua - 05-12-2010

Pourquoi ?

et bien, bonne question ^^
J'avais fait plein de tests, n'ayant pas du tout calculé le coup du ->fetchColumn calé un peu trop tôt.
Et je n'avais pas encore utilisé ces fonctions. Ce n'est qu'en relisant (en diagonale certes) le tuto d'Ekilio que j'ai vu ces fonctions. Avant j'utilisais simplement un array dans l'execute().

En tout cas merci beaucoup Smile
ça nettoie mon code comme ça, moi qui essaie de faire les choses proprement désormais ^^


RE: PDO Count avec variable ? - Hell-AstiK - 05-12-2010

Si tu veut aller plus loin je te propose ces deux tutos trouver :
http://www.siteduzero.com/tutoriel-3-34790-pdo-interface-d-acces-aux-bdd.html
et encore mieux :
http://www.siteduzero.com/tutoriel-3-336595-pdo-comprendre-et-corriger-les-erreurs-les-plus-frequentes.html