SELECT SQL pour formulaire via PDO.
Résolu/Fermé
Fontainard
Messages postés
68
Date d'inscription
dimanche 16 mars 2014
Statut
Membre
Dernière intervention
24 janvier 2017
-
Modifié par Fontainard le 30/06/2014 à 15:06
Fontainard Messages postés 68 Date d'inscription dimanche 16 mars 2014 Statut Membre Dernière intervention 24 janvier 2017 - 1 juil. 2014 à 15:11
Fontainard Messages postés 68 Date d'inscription dimanche 16 mars 2014 Statut Membre Dernière intervention 24 janvier 2017 - 1 juil. 2014 à 15:11
A voir également:
- SELECT SQL pour formulaire via PDO.
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Partager des photos via un lien - Guide
- Impossible d'envoyer le message via free erreur 0 - Forum Samsung
- Le formulaire rempli - Guide
3 réponses
Utilisateur anonyme
30 juin 2014 à 15:36
30 juin 2014 à 15:36
Bonjour
Je n'ai pas lu bien loin parce que déjà :
Alors que ta variable c'est $data, pas $base
Quant à tes <?php echo $data['nomUtil']; ?> et autres variable après la sortie du while, ils ne peuvent pas marcher puisque si on est sorti du while, c'est que $data vaut false et que donc $data n'est pas un tableau et $data['nomUtil'] ne veut rien dire.
Je n'ai pas lu bien loin parce que déjà :
$nom = $base['nomUtil']; $prenom = $base['prenomUtil']; ...
Alors que ta variable c'est $data, pas $base
Quant à tes <?php echo $data['nomUtil']; ?> et autres variable après la sortie du while, ils ne peuvent pas marcher puisque si on est sorti du while, c'est que $data vaut false et que donc $data n'est pas un tableau et $data['nomUtil'] ne veut rien dire.
Utilisateur anonyme
30 juin 2014 à 17:03
30 juin 2014 à 17:03
il devrait comprendre à priori
Tu auras fait un gros progrès quand tu seras persuadé que lui, il comprend toujours et que si ça ne fait pas ce que tu veux, c'est parce que toi tu lui a mal expliqué ce qu'il devait faire.
Le while pose problème apparemment, il n'y aurais pas d'autres moyens Tu sembles considérer que la programmation est une affaire de formule magique et que quand une ne marche pas il faut en essayer une autre. Bon, no comments, je ne vais pas t'en mettre des pages, ce n'est pas le but.
Pour en revenir à ton problème, y a-t-il plusieurs utilisateurs qui ont le même idUtil ?
Tu auras fait un gros progrès quand tu seras persuadé que lui, il comprend toujours et que si ça ne fait pas ce que tu veux, c'est parce que toi tu lui a mal expliqué ce qu'il devait faire.
Le while pose problème apparemment, il n'y aurais pas d'autres moyens Tu sembles considérer que la programmation est une affaire de formule magique et que quand une ne marche pas il faut en essayer une autre. Bon, no comments, je ne vais pas t'en mettre des pages, ce n'est pas le but.
Pour en revenir à ton problème, y a-t-il plusieurs utilisateurs qui ont le même idUtil ?
Fontainard
Messages postés
68
Date d'inscription
dimanche 16 mars 2014
Statut
Membre
Dernière intervention
24 janvier 2017
Modifié par Fontainard le 1/07/2014 à 05:25
Modifié par Fontainard le 1/07/2014 à 05:25
A partir du moment où je ne décèle pas les erreurs, et mon wamp non plus, j'ai vraiment du mal à modifier les choses vu que je débute, mais une fois encore tu as entièrement raison et je m'en remet à toi pour se coup.
Non sinon, c'est d'ailleurs la seule valeur que j'arrive à récupérer grâce à mon _POST et ma fonction.
Le bouton modifier est contenu dans chaque ligne d'un autre select, qui est ma bdd.
De cette façon:
J'ai fais des echo test dans mon code php,
De cette manière:
Seulement test1,test2 et test3 apparaissent, il n'aime pas le while apparemment.
Non sinon, c'est d'ailleurs la seule valeur que j'arrive à récupérer grâce à mon _POST et ma fonction.
Le bouton modifier est contenu dans chaque ligne d'un autre select, qui est ma bdd.
De cette façon:
<?php while ($data = $retour ->fetch()) { echo "<tr><td>".$data['idUtil']."</td>"; echo "<td>".$data['nomUtil']."</td>"; echo "<td>".$data['prenomUtil']."</td>"; echo "<td>".$data['fonctionUtil']."</td>"; echo "<td>".$data['loginUtil']."</td>"; echo "<td>".$data['pwdUtil']."</td>"; echo "<td>".$data['niveauUtil']."</td>"; echo "<td>".$data['valideUtil']."</td>"; echo "<td>".$data['mailUtil']."</td>"; echo "<td>".$data['telUtil']."</td>"; ?> <td><a onclick="popupmu(<?php echo $data['idUtil']; ?>);"><img src="images/icomodifier.png"></a> </td> <td><a onclick="popupsu(<?php echo $data['idUtil']; ?>);"><img src="images/icosupprimer.png"></a> </td></tr> <?php } echo "</table>"; $base = null;
J'ai fais des echo test dans mon code php,
De cette manière:
<?php $id = $_POST['idUtil']; echo " test1"; try { $base = new PDO('mysql:host=localhost; dbname=iplanet', 'root'. ''); } catch(exception $e) { die ('Erreur '.$e->getMessage()); } echo "test2"; $base->exec("SET CHARACTER SET utf8"); $retour = $base ->query('SELECT * FROM utilisateur WHERE idUtil= "$id"'); echo "test3"; while ($data = $retour ->fetch()) { echo $data['idUtil']; echo "test4"; $nom = $data['nomUtil']; $prenom = $data['prenomUtil']; $fonction = $data['fonctionUtil']; $login = $data['loginUtil']; $pwd = $data['pwdUtil']; $niveau =$data['niveauUtil']; $valide = $data['valideUtil']; $mail = $data['mailUtil']; $tel = $data['telUtil']; $secteur = $data['id_secteur']; $stock = $data['idStock']; $cdsociete = $data['codeSociete']; echo "test5"; } ?>
Seulement test1,test2 et test3 apparaissent, il n'aime pas le while apparemment.
Utilisateur anonyme
1 juil. 2014 à 08:33
1 juil. 2014 à 08:33
il n'aime pas le while apparemment
Le php n'a pas à "aimer" ou "ne pas aimer". Au risque de répéter ce que j'ai dit dans mon message précédent, le php fait ce que tu lui as demandé.
Soyons logiques, comme l'interpréteur PHP.
S'il n'affiche pas "test4", c'est qu'il n'exécute pas l'instruction.
S'il ne l'exécute pas, c'est qu'il n'entre pas dans la boucle.
S'il n'entre pas dans la boucle, c'est que la condition du while ($data = $retour ->fetch()) est false
Deux possibilités : ou bien elle est en erreur, ou bien il n'y a aucun enregistrement dans ta table qui correspond à $id.
En y regardant bien, il y a une erreur dans ta requête.
'SELECT * FROM utilisateur WHERE idUtil= "$id"'
Ta chaîne commence et se termine par des simples apostrophes.
Donc les variables PHP à l'intérieur ne sont pas traitées comme des variables, mais comme de simples chaînes de caractères. Ce n'est que dans les chaînes entre doubles quotes que les variables PHP sont interprétées.
Tu as plusieurs solutions : tu décompose ta chaîne en plusieurs morceaux que tu concatènes :
ou (perso je préfère) tu inverses les rôles des " et des ' :
Note que tu n'aurais pas eu ce problème (ni quelques autres) si tu avais utilisé PDO comme il est recommandé, c'est à dire avec des requêtes préparées :
Le php n'a pas à "aimer" ou "ne pas aimer". Au risque de répéter ce que j'ai dit dans mon message précédent, le php fait ce que tu lui as demandé.
Soyons logiques, comme l'interpréteur PHP.
S'il n'affiche pas "test4", c'est qu'il n'exécute pas l'instruction.
S'il ne l'exécute pas, c'est qu'il n'entre pas dans la boucle.
S'il n'entre pas dans la boucle, c'est que la condition du while ($data = $retour ->fetch()) est false
Deux possibilités : ou bien elle est en erreur, ou bien il n'y a aucun enregistrement dans ta table qui correspond à $id.
En y regardant bien, il y a une erreur dans ta requête.
'SELECT * FROM utilisateur WHERE idUtil= "$id"'
Ta chaîne commence et se termine par des simples apostrophes.
Donc les variables PHP à l'intérieur ne sont pas traitées comme des variables, mais comme de simples chaînes de caractères. Ce n'est que dans les chaînes entre doubles quotes que les variables PHP sont interprétées.
Tu as plusieurs solutions : tu décompose ta chaîne en plusieurs morceaux que tu concatènes :
'SELECT * FROM utilisateur WHERE idUtil= "'.$id.'"'
ou (perso je préfère) tu inverses les rôles des " et des ' :
"SELECT * FROM utilisateur WHERE idUtil= '$id'"
Note que tu n'aurais pas eu ce problème (ni quelques autres) si tu avais utilisé PDO comme il est recommandé, c'est à dire avec des requêtes préparées :
$retour= $base->prepare('SELECT * FROM utilisateur WHERE idUtil= :id'); $retour->execute(array(':id' => $id));
Fontainard
Messages postés
68
Date d'inscription
dimanche 16 mars 2014
Statut
Membre
Dernière intervention
24 janvier 2017
1 juil. 2014 à 10:24
1 juil. 2014 à 10:24
Merci grandement pour ton aide. Tout fonctionne nickel. J'apprends beaucoup sur le tas alors je ne prend pas forcément les meilleures habitudes, ni parfois la rigueur nécessaire ce qui fait que des petites erreurs font que mes trucs ne fonctionnent pas ^^.
En tout cas, encore merci le père, pour tes explications concises c'est du très bon boulot !
En tout cas, encore merci le père, pour tes explications concises c'est du très bon boulot !
Fontainard
Messages postés
68
Date d'inscription
dimanche 16 mars 2014
Statut
Membre
Dernière intervention
24 janvier 2017
1 juil. 2014 à 15:11
1 juil. 2014 à 15:11
Me connaissant, c'est bien envisageable. J'essaye de me forcer à trouver mes erreurs tout seuls, pas une chose aisée pour moi haha. Je vais terminer mon projet puis certainement reprendre des cours depuis le début en php de quoi consolider mes bases pour pouvoir faire des choses plus compliqués ;P
CCM est un site d'échange fort utile, donc ouais probablement à bientôt alors :P
CCM est un site d'échange fort utile, donc ouais probablement à bientôt alors :P
Modifié par Fontainard le 30/06/2014 à 16:11
Je fais un <?php } ?> à la fin. Je vais encore essayer avec plein d'echo, mais bon, c'est bizarre car il devrait comprendre à priori!
Le while pose problème apparemment, il n'y aurais pas d'autres moyens ?