[PHP] Erreur dans lignes de code
Fermé
chamallowette
-
25 mars 2010 à 09:52
Giorgiolino Messages postés 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 - 26 mars 2010 à 17:34
Giorgiolino Messages postés 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 - 26 mars 2010 à 17:34
A voir également:
- [PHP] Erreur dans lignes de code
- Erreur 0x80070643 - Accueil - Windows
- Code ascii de a - Guide
- Code puk bloqué - Guide
- Code de déverrouillage oublié - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
6 réponses
Maxou88100
Messages postés
197
Date d'inscription
jeudi 3 décembre 2009
Statut
Membre
Dernière intervention
17 juin 2010
11
Modifié par Maxou88100 le 25/03/2010 à 10:05
Modifié par Maxou88100 le 25/03/2010 à 10:05
Ok je vais tenter de t'aider :p
Commence par placer des echo un peu partout pour voir si tu passe dans tes if ! Comme ça tu verra ou se situe ton erreur !
Valide ton formulaire et fait un echo"Allo" dès le début comme ça tu verra si tu entre bien ds ta page. Ensuite, déplace ton echo dans chaque boucle pour voir ou tu passe. Tiens moi au courant
Commence par placer des echo un peu partout pour voir si tu passe dans tes if ! Comme ça tu verra ou se situe ton erreur !
Valide ton formulaire et fait un echo"Allo" dès le début comme ça tu verra si tu entre bien ds ta page. Ensuite, déplace ton echo dans chaque boucle pour voir ou tu passe. Tiens moi au courant
xav3601
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
311
25 mars 2010 à 10:02
25 mars 2010 à 10:02
C'est la merde le php, pas moyen de debug :S
C'est pour ca (entre autre) que je préfère les JSP!
Mais bon comme dis au dessus, commences par mettre des echo partout, et à la limite test en enlevant la requête et en la remplacant par un texte basique pour voir si ca marche!
C'est pour ca (entre autre) que je préfère les JSP!
Mais bon comme dis au dessus, commences par mettre des echo partout, et à la limite test en enlevant la requête et en la remplacant par un texte basique pour voir si ca marche!
Giorgiolino
Messages postés
253
Date d'inscription
vendredi 15 mai 2009
Statut
Contributeur
Dernière intervention
2 mars 2015
52
26 mars 2010 à 17:11
26 mars 2010 à 17:11
[...] le php, pas moyen de debug :S
Pas très objectif comme commentaire. Connais-tu Firebug/Firephp, ...?
Pas très objectif comme commentaire. Connais-tu Firebug/Firephp, ...?
Merci de bien vouloir m'aider! :-)
Hm, alors j'ai testé ça, déjà :
Quand je teste directement, j'ai une page blanche et quand je teste depuis le formulaire, j'obtiens "test", que je laisse les champs "Non défini" ou pas.
Ce qui n'est pas normal, j'aurais du obtenir "Veuillez sélectionner au moin un critère" en laissant tous les champs "Non défini"...
Et si je change en faisant :
A ce moment là, dans tous les cas j'ai "veuillez sélectionner un critère""
C'est comme s'il ne tenait pas compte des conditions...
Hm, alors j'ai testé ça, déjà :
<?php try { $bdd = new PDO('mysql:host=localhost;dbname=systemes_devidage', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } if (isset($_POST['conditionnement'])) { if ($_POST['conditionnement'] != "Non défini" OR $_POST['application'] != "Non défini" OR $_POST['type'] != "Non défini" OR $_POST['vitesse'] != "Non défini" OR $_POST['sens'] != "Non défini" OR $_POST['pac'] != "Non défini" OR $_POST['sag'] != "Non défini") { echo "test"; } } else { echo "Veuillez sélectionner au moins un critère."; } ?>
Quand je teste directement, j'ai une page blanche et quand je teste depuis le formulaire, j'obtiens "test", que je laisse les champs "Non défini" ou pas.
Ce qui n'est pas normal, j'aurais du obtenir "Veuillez sélectionner au moin un critère" en laissant tous les champs "Non défini"...
Et si je change en faisant :
<?php try { $bdd = new PDO('mysql:host=localhost;dbname=systemes_devidage', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } if (isset($_POST['conditionnement'])) { if ($_POST['conditionnement'] = "Non défini" AND $_POST['application'] = "Non défini" AND $_POST['type'] = "Non défini" AND $_POST['vitesse'] = "Non défini" AND $_POST['sens'] = "Non défini" AND $_POST['pac'] = "Non défini" AND $_POST['sag'] = "Non défini") { echo "Veuillez sélectionner au moins un critère."; } } else { echo "test"; }?>
A ce moment là, dans tous les cas j'ai "veuillez sélectionner un critère""
C'est comme s'il ne tenait pas compte des conditions...
Maxou88100
Messages postés
197
Date d'inscription
jeudi 3 décembre 2009
Statut
Membre
Dernière intervention
17 juin 2010
11
25 mars 2010 à 10:57
25 mars 2010 à 10:57
Si je ne me trompe pas, tu affiche test si au moins un champ est différent de non défini. Alors que ton else laisse entendre que l'utilisateur n'a rien sélectionné ! Donc ne faudrait il pas remplacer tes OR par des && ? A moins que je soit à coté de la plaque
Non, c'est ce que je veux : un seul champ rensseigné suffit pour afficher le résultat de la recherche.
Mais là, en l'occurence, ça ne marche même pas : que mes champs soient tous "non défini" ou qu'il y en ait au moins 1 renseigné me renvoie la même chose...
Mais je ne vois pas où est-ce que ça ne va pas dans mon code.
Mais là, en l'occurence, ça ne marche même pas : que mes champs soient tous "non défini" ou qu'il y en ait au moins 1 renseigné me renvoie la même chose...
Mais je ne vois pas où est-ce que ça ne va pas dans mon code.
Maxou88100
Messages postés
197
Date d'inscription
jeudi 3 décembre 2009
Statut
Membre
Dernière intervention
17 juin 2010
11
25 mars 2010 à 12:34
25 mars 2010 à 12:34
Autant pour moi je regardait le code tout en haut :(
if ($_POST['conditionnement'] != "Non défini" OR $_POST['application'] != "Non défini"
OR $_POST['type'] != "Non défini" OR $_POST['vitesse'] != "Non défini" OR $_POST['sens'] != "Non défini"
OR $_POST['pac'] != "Non défini" OR $_POST['sag'] != "Non défini")
...
if ($_POST['conditionnement'] != "Non défini" OR $_POST['application'] != "Non défini"
OR $_POST['type'] != "Non défini" OR $_POST['vitesse'] != "Non défini" OR $_POST['sens'] != "Non défini"
OR $_POST['pac'] != "Non défini" OR $_POST['sag'] != "Non défini")
...
Maxou88100
Messages postés
197
Date d'inscription
jeudi 3 décembre 2009
Statut
Membre
Dernière intervention
17 juin 2010
11
25 mars 2010 à 16:27
25 mars 2010 à 16:27
Arf honnêtement j'ai bien regardé et je vois pas d'erreur à partir de ce petit bout de code... L'erreur viens peut être du formulaire ou d'une requête fausse :( C'est pas facile à estimer sans avoir le code devant les yeux :( Vraiment désolé
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon, je lance un dernier appel, parce que ça m'embête vraiment d'avoir bossé sur ce projet pendant des semaines pour au fil devoir laisser tomber...pour une erreur dans un code! ><
Voici le code de mon formulaire :
Et le code de ma page de traitement :
S'il vous plaaaaaaiiiiiiit...! :'(
Voici le code de mon formulaire :
<form method="post" action="cible5.php"> <p> <label for="conditionnement">Type de conditionnement ?</label><br /> <select name="conditionnement" id="conditionnement"> <option value="non">Non défini</option> <optgroup label="Bobines plastique"> <option value="25 LBS">25 LBS</option> <option value="10 LBS">10 LBS</option> <option value="AM 20">AM 20</option> <option value="B3">B3</option> <option value="B6">B6</option> <option value="BB 20">BB 20</option> <option value="BB 35">BB 35</option> <option value="BB 40">BB 40</option> <option value="BP 3">BP 3</option> <option value="BP 4">BP 4</option> <option value="BP 50">BP 50</option> <option value="BS 15">BS 15</option> <option value="BS 60">BS 60</option> <option value="E 200">E 200</option> <option value="EG 30">EG 30</option> <option value="FT 60">FT 60</option> <option value="GB 2">GB 2</option> <option value="J 55">J 55</option> <option value="K 355">K 355</option> </optgroup> <optgroup label="Bobines bois"> <option value="B 150">B 150</option> <option value="B 300">B 300</option> <option value="MP 100">MP 100</option> <option value="MP 100K">MP 100K</option> <option value="MP 50">MP 50</option> <option value="MP 110C">MP 110C</option> <option value="MP 120K">MP 120K</option> <option value="MP 90K">MP 90</option> </optgroup> <optgroup label="Futs carton"> <option value="C 780">C780</option> <option value="P 500">P500</option> <option value="PPH 760">PPH760</option> <option value="P 1537">P1537</option> <option value="P 604">P604</option> <option value="P 608">P608</option> </optgroup> <optgroup label="Tourets bois"> <option value="R 260C">R 260</option> <option value="R 400">R 400</option> <option value="R 500">R 500</option> <option value="R 700">R 700</option> <option value="SIG">SIG</option> </optgroup> <optgroup label="Tourets bois (bande collée)"> <option value="T09">T09</option> <option value="T13">T13</option> <option value="T15">T15</option> <option value="T17">T17</option> <option value="TD09">TD09</option> <option value="TD08">TD08</option> <option value="Z400">Z400</option> <option value="Z6495">Z6495</option> </optgroup> </select> </p> <p> <label for="application">Type d'application ?</label><br /> <select name="application" id="application"> <option value="non">Non défini</option> <optgroup label="Applications"> <option value="brochage">Brochage</option> <option value="cerclage">Cerclage</option> <option value="emballage bois">Emballage bois</option> <option value="emballage carton">emballage carton</option> <option value="agrafe fil plat">agrafe fil plat</option> <option value="agrafe fil rond">Agrafe fil rond</option> <option value="soudure">Soudure</option> <option value="trombone">Trombone</option> <option value="rayon de vélo">Rayon</option> <option value="armature cable">Armature (cable)</option> <option value="armature gaine">Armature (gaine)</option> <option value="armature tuyau">Armature (tuyau)</option> <option value="ressort">Ressort</option> <option value="liens">Liens</option> <option value="façonnage">Façonage</option> <option value="brosse">Brosse</option> <option value="grillage">Grillage</option> <option value="reliure">Reliure</option> <option value="rivet">Rivet</option> <option value="epingle">Epingle</option> <option value="cintre">Cintre</option> <option value="autre">Autre</option> </optgroup> </select> </p> <p> <label for="type">Type de dévidage ?</label><br /> <select name="type" id="type"> <option value="non">Non défini</option> <optgroup label="Devidage"> <option value="statique">Statique</option> <option value="dynamique">Dynamique</option> </optgroup> </select> </p> <p> <label for="vitesse">Vitesse de dévidage ?</label><br /> <select name="vitesse" id="vitesse"> <option value="non">Non défini</option> <optgroup label="Vitesse"> <option value="<100 m/min"><100 m/min</option> <option value="<300 m/min"><300 m/min</option> <option value=">300 m/min">>300 m/min</option> </optgroup> </select> </p> <p> <label for="sens">Système dépendant du sens de rotation ?</label><br /> <select name="sens" id="sens"> <option value="0">Non défini</option> <option value="1">Oui</option> <option value="0">Non</option> </optgroup> </select> </p> <p> <label for="pac">Possibilité de dévider "par à-coup" ?</label><br /> <select name="pac" id="pac"> <option value="0">Non défini</option> <option value="1">Oui</option> <option value="0">Non</option> </optgroup> </select> </p> <p> <label for="sag">Possibilité de dévider en "stop and go" ?</label><br /> <select name="sag" id="sag"> <option value="0">Non défini</option> <option value="1">Oui</option> <option value="0">Non</option> </optgroup> </select> </p> <p> <br/><br/><input type="submit" value="Rechercher" /> <input type="reset" /> </p> </form> </div> </body> </html>
Et le code de ma page de traitement :
try { $bdd = new PDO('mysql:host=localhost;dbname=systemes_devidage', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $reponse=""; if (isset($_POST['conditionnement'])) { if ($_POST['conditionnement'] != "Non défini" OR $_POST['application'] != "Non défini" OR $_POST['type'] != "Non défini" OR $_POST['vitesse'] != "Non défini" OR $_POST['sens'] != "Non défini" OR $_POST['pac'] != "Non défini" OR $_POST['sag'] != "Non défini") { $reponse = $bdd->query('SELECT systeme.nom FROM systeme, convient, application, necessite, conditionnement WHERE systeme.id = necessite.id_systeme AND necessite.id_conditionnement = conditionnement.id AND conditionnement.id = convient.id_conditionnement AND application.id = convient.id_application AND conditionnement.nom="' . $_POST['conditionnement'] . '" AND application.nom="' . $_POST['application'] . '" AND type="' . $_POST['type'] . '" AND vitesse="' . $_POST['vitesse'] . '" AND sens="' . $_POST['sens'] . '" AND pac="' . $_POST['pac'] . '" AND sag="' . $_POST['sag'] . '" ')or die(print_r($bdd->errorInfo())); while ($donnees = $reponse->fetch()) { echo $reponse['nom'] . '<br/>'; } $reponse->closeCursor(); } } else { echo "Veuillez sélectionner au moins un critère."; } ?>
S'il vous plaaaaaaiiiiiiit...! :'(
Giorgiolino
Messages postés
253
Date d'inscription
vendredi 15 mai 2009
Statut
Contributeur
Dernière intervention
2 mars 2015
52
Modifié par Giorgiolino le 26/03/2010 à 17:54
Modifié par Giorgiolino le 26/03/2010 à 17:54
Bonjour,
inutile de pleurnicher, ça ne va pas t'apporter plus de réponse.
Ceci dit, j'ai examiné ton code que je trouve plutôt propre et bien fait en général.
A ce propos, j'ai deux remarques concernant ton problème:
1/ La validité de tes Tests
Avec $_POST['conditionnement'] != "Non défini" tu voudrais sans doute tester si $_POST['conditionnement'] est non définie. Or quand $_POST['conditionnement'] n'a pas été défini, il a sa valeur par défaut, à savoir "non" (selon ce que tu as défini).
Ton test devrait donc être modifié en conséquence
Idem pour les autres tests dans le bloc IF.
2/ La récupération des données après ta requête
Tu récupère le nom avec l'objet $response alors que tu devrais le récupérer à partir de ta ligne de résultat representée par $donnees. Essaye en le remplaçant par ceci.
Bon courage.
"La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information"
Albert Einstein
inutile de pleurnicher, ça ne va pas t'apporter plus de réponse.
Ceci dit, j'ai examiné ton code que je trouve plutôt propre et bien fait en général.
A ce propos, j'ai deux remarques concernant ton problème:
1/ La validité de tes Tests
Avec $_POST['conditionnement'] != "Non défini" tu voudrais sans doute tester si $_POST['conditionnement'] est non définie. Or quand $_POST['conditionnement'] n'a pas été défini, il a sa valeur par défaut, à savoir "non" (selon ce que tu as défini).
<option value="non">Non défini</option>
Ton test devrait donc être modifié en conséquence
$_POST['conditionnement'] != "non".
Idem pour les autres tests dans le bloc IF.
2/ La récupération des données après ta requête
while ($donnees = $reponse->fetch()){ echo $reponse['nom'] . '<br/>'; }
Tu récupère le nom avec l'objet $response alors que tu devrais le récupérer à partir de ta ligne de résultat representée par $donnees. Essaye en le remplaçant par ceci.
while ($donnees = $reponse->fetch()){ echo $donnees['nom'] . '<br/>'; }
Bon courage.
"La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information"
Albert Einstein