[PHP] Erreur dans lignes de code
                                    
                        chamallowette                    
                                    -
                                     
Giorgiolino Messages postés 270 Statut Contributeur -
        Giorgiolino Messages postés 270 Statut Contributeur -
        Bonjour!
Je sollicite votre aide afin de corriger mon code, qui doit contenir des erreurs...
Le problème, c'est qu'à la place des messages d'erreur, j'ai une page blanche, donc impossible de savoir où elles se situent... (Les erreurs de syntaxe s'affichent, alors je pense que mon ou mes erreurs se situent dans ma requête).
Pour information, lorsque je teste mon code seul, la page m'affiche "Veuillez sélectionner au moins un critère.", ce qui semble logique puisque je ne touche pas au formulaire.
Par contre, lorsque je teste le code depuis mon formulaire (en cliquant sur envoyer), j'arrive sur une page blanche.
Des idées? (J'ai vraiment besoin de votre aide, je dois présenter ça ce soir...)
Merci d'avance à tous ceux qui voudront bien m'aider!!
                
            
                
    
    
    
        Je sollicite votre aide afin de corriger mon code, qui doit contenir des erreurs...
Le problème, c'est qu'à la place des messages d'erreur, j'ai une page blanche, donc impossible de savoir où elles se situent... (Les erreurs de syntaxe s'affichent, alors je pense que mon ou mes erreurs se situent dans ma requête).
<?php
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.";
}
?>
Pour information, lorsque je teste mon code seul, la page m'affiche "Veuillez sélectionner au moins un critère.", ce qui semble logique puisque je ne touche pas au formulaire.
Par contre, lorsque je teste le code depuis mon formulaire (en cliquant sur envoyer), j'arrive sur une page blanche.
Des idées? (J'ai vraiment besoin de votre aide, je dois présenter ça ce soir...)
Merci d'avance à tous ceux qui voudront bien m'aider!!
        A voir également:         
- [PHP] Erreur dans lignes de code
- Code ascii - Guide
- Code puk bloqué - Guide
- Code de déverrouillage oublié - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
6 réponses
                        
                    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
                        
                    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!
                        
                    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...
                        
                    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.
    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")
...
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...! :'(
                        
                    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
