Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme condition

    27 mars 2017 à 12:19:33

    <?php
    $bdd= new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    ?>
    <!DOCTYPE html>
    
    <html>
    
      <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Finder</title>
      </head>
      <header> 
      <div id=class"Contact"> </div>
      </header>
    
      <body>
    	<fieldset>
    	<legend><center><h2>Type de course</h2></center></legend>
    	    <div id=class"recherche"> <p>Veuillez choisir le type de course : </p>
    	    	<form>
    				<SELECT name="Type">
    					<option value="1" >Course par tour</option>
    					<option value="2">Course contre la montre </option>
    					<option value="3">Depart arrivee</option>
    					<option value="4">Duathlon</option>
    					<option value="5"></option>
    					    <input type="submit" name="Valeur" value="Definir le type de course" title="valider pour aller à la page sélectionnée" />
    					    <?php
    					    if($Type == '1' ){
    									$bdd= new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    									$donnees = $bdd->query('SELECT * FROM donnees');
    									while ($result = $donnees->fetch()){
    									echo 'Nom : '.$result['Nom'] ; echo '<br>' ; 
    									echo 'Nombre : '.$result['Nombre'] ; echo '<br>'; 
    									echo 'Le : '.$result['Jour'] . '/' . $result['Mois'] .'/'. $result['Annee'] ; echo'<br>'; 
    									echo 'Departement : '.$result['Departement'] ; echo '<br>';
    									echo 'Organisation : '.$result['Organisation'] ; echo '<br>';
    									echo 'Depart : '.$result['Depart'] ; echo '<br>';
    									}
    						} else {echo "Veuillez saisir un type de course ";}
    					   ?>
    				</SELECT>
    			</form>
    	</fieldset>
    	</div>
      </body>
    </html>

    Bonjour a tous je travaille comme chronometreur sportif et j'aimerais classer toutes mes courses dans une BDD pour les retrouver grace a mon site internet, donc j'aimerais que grace a mon menu deroulant je saisisse le type de course et que la base de donnees me renvoi les donnees de cette course en fonction de son Type mais j'ai une erreur je ne comprend pas d'ou elle viens... 

    Mon erreur est :  Notice: Undefined variable: Type in C:\wamp64\www\Site\index.php on line 30

    Pourtant je la recupere bien cette valeur .. 

    -
    Edité par NicolasManellio 27 mars 2017 à 12:22:02

    • Partager sur Facebook
    • Partager sur Twitter
      27 mars 2017 à 12:26:15

      Salut,

      généralement PHP dit vrai, tu ne récupères pas $Type mais plutôt $_POST['Type'] provenant de ton formulaire.

      ++

      -
      Edité par christouphe 27 mars 2017 à 12:26:41

      • Partager sur Facebook
      • Partager sur Twitter
        27 mars 2017 à 13:13:54

        Je suis débutant moi aussi donc c'est à prendre avec des pincettes mais pour moi c'est tout le code qui est à revoir. J'ai l'impression que y a rien de cohérent, en fait.

        Le message de chirstouphe est vrai aussi mais sinon, là tu dis au script : si le type de course est le n°1, affiche moi * (tout !) ce qu'il y en bdd

        -
        Edité par JulienNeo 27 mars 2017 à 13:16:01

        • Partager sur Facebook
        • Partager sur Twitter
          27 mars 2017 à 13:18:31

          la cohérence c'est toi qui l'amène.

          Si tu veux utiliser une variable toto il faut qu'elle existe.

          Ce code pourra t'aider dans ces cas:

          <?php
              //si on veut utiliser $toto il faut qu'il soit défini
              if (!isset($toto)) {
                  $toto = "cool";
              }
          
          //plus loin dans le code,
          //tu ne sais pas si tu l'as défini, mais tu te protèges
              if (isset($toto) && $toto == "cool") {
                 echo " Toto est ".$toto;
              }

          Note: exemple bidon pour te montrer comment vérifier l'existence d'une variable ;)

          Applique le dans ton cas ;)

          ++

          • Partager sur Facebook
          • Partager sur Twitter
            27 mars 2017 à 14:34:51

             <?php
                                    if(@$_POST['Type'] == '1' ){
                                                $bdd= new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                                                $donnees = $bdd->query('SELECT * FROM donnees WHERE type = '.$_POST['type'].'');
                                                while ($result = $donnees->fetch()){
                                                echo 'Nom : '.$result['Nom'] ; echo '<br>' ;
                                                echo 'Nombre : '.$result['Nombre'] ; echo '<br>';
                                                echo 'Le : '.$result['Jour'] . '/' . $result['Mois'] .'/'. $result['Annee'] ; echo'<br>';
                                                echo 'Departement : '.$result['Departement'] ; echo '<br>';
                                                echo 'Organisation : '.$result['Organisation'] ; echo '<br>';
                                                echo 'Depart : '.$result['Depart'] ; echo '<br>';
                                                }
                                    } else {echo "Veuillez saisir un type de course ";}
                                   ?>

            Enjoy.
            J'ai affiché tes résultat en fonction du types. 
            Oublie pas de cocher RESOLU si tu as ta solution.

            -
            Edité par Quentin134 27 mars 2017 à 14:39:11

            • Partager sur Facebook
            • Partager sur Twitter
              27 mars 2017 à 14:51:30

              Quentin134 a écrit:

               <?php
                                      if(@$_POST['Type'] == '1' ){
                                                  $bdd= new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                                                  $donnees = $bdd->query('SELECT * FROM donnees WHERE type = '.$_POST['type'].'');
                                                  while ($result = $donnees->fetch()){
                                                  echo 'Nom : '.$result['Nom'] ; echo '<br>' ;
                                                  echo 'Nombre : '.$result['Nombre'] ; echo '<br>';
                                                  echo 'Le : '.$result['Jour'] . '/' . $result['Mois'] .'/'. $result['Annee'] ; echo'<br>';
                                                  echo 'Departement : '.$result['Departement'] ; echo '<br>';
                                                  echo 'Organisation : '.$result['Organisation'] ; echo '<br>';
                                                  echo 'Depart : '.$result['Depart'] ; echo '<br>';
                                                  }
                                      } else {echo "Veuillez saisir un type de course ";}
                                     ?>


              Enjoy.
              J'ai affiché tes résultat en fonction du types. 
              Oublie pas de cocher RESOLU si tu as ta solution.

              -
              Edité par Quentin134 il y a 3 minutes

              Non rien ne se passe , mais je n'ai plus l'erreur, d'ailleur sj'ai corrige le code c'etait pas 'type' mais 'Type'

               et a quoi sert le @ devant la variable ?

              -
              Edité par NicolasManellio 27 mars 2017 à 14:54:40

              • Partager sur Facebook
              • Partager sur Twitter
                27 mars 2017 à 15:01:15

                en gros, vus que tu calle directement ta condition dans la page, lors de l'exécution du php il va lire toutes ta page ainsi que ta condition et va tomber sur '$_POST['Type'] == '1' il va l'exécuter or vus que tu n'as pas exécuter ton form la variable type n'est pas initialisé donc elle te sortira une erreur.

                car pour moi la requêtes est OK.

                 EDIT + correction de sombrelune ;)

                <form method="POST" action="#">
                                <SELECT name="Type">
                                    <option value="1" >Course par tour</option>
                                    <option value="2">Course contre la montre </option>
                                    <option value="3">Depart arrivee</option>
                                    <option value="4">Duathlon</option>
                                    <option value="5"></option>
                                </SELECT>
                <input type="submit" name="Valeur" value="Definir le type de course" title="valider pour aller à la page sélectionnée" />
                            </form>
                <?php
                                        if(isset($_POST['Type'])){
                                                    $bdd= new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                                                    $donnees = $bdd->query('SELECT * FROM donnees WHERE Type='.$_POST['Type'].'');
                                                    while ($result = $donnees->fetch()){
                                                    echo 'Nom : '.$result['Nom'] ; echo '<br>' ;
                                                    echo 'Nombre : '.$result['Nombre'] ; echo '<br>';
                                                    echo 'Le : '.$result['Jour'] . '/' . $result['Mois'] .'/'. $result['Annee'] ; echo'<br>';
                                                    echo 'Departement : '.$result['Departement'] ; echo '<br>';
                                                    echo 'Organisation : '.$result['Organisation'] ; echo '<br>';
                                                    echo 'Depart : '.$result['Depart'] ; echo '<br>';
                                                    }
                                        } else {echo "Veuillez saisir un type de course ";}
                                       ?>



                -
                Edité par Quentin134 27 mars 2017 à 15:10:48

                • Partager sur Facebook
                • Partager sur Twitter
                  27 mars 2017 à 15:03:54

                  Salut,

                  Le @ devant les fonctions/variables sert à masquer les erreurs PHP, ce n'est pas une bonne pratique de masquer les erreurs, il faut simplement les corriger! Ici il suffit d'utiliser isset($_POST['Type']) pour savoir si la variable existe, et il faut enlever le == 1 qui n'a plus rien à faire ici.

                  Il faut également utiliser une requete PDO prepare/execute pour éviter les injections SQL.

                  Le code donné par Quentin134 sous-entend que tu as une colonne "Type" dans ta table "donnees" qui contiendrait une valeur numérique (dans la liste des valeurs de ton select pour que la requete SQL retourne des résultats).

                  -
                  Edité par Sombrelune 27 mars 2017 à 15:05:44

                  • Partager sur Facebook
                  • Partager sur Twitter
                  - Activer les erreurs : PHP - PDO - MYSQLI - ¯\_ツ_/¯ - Documentations : PHP - MySQL -
                    27 mars 2017 à 15:19:36

                    Quelques erreurs notamment dans te balises même si cela n'empêche pas le code de fonctionner. Fait surtout attention à la façon dont tu récupères les données du formulaire et à ta requête qui ne prends pas en compte le résultat. Bref ceci devrait fonctionner ;)

                    <form>
                    	<!-- Pense a fermer ton select au bon endroit -->
                    	<select name="Type">
                    		<option value="1" >Course par tour</option>
                    		<option value="2">Course contre la montre </option>
                    		<option value="3">Depart arrivee</option>
                    		<option value="4">Duathlon</option>
                    		<option value="5"></option>
                    	</select>
                    	<input type="submit" name="Valeur" value="Definir le type de course" title="valider pour aller à la page sélectionnée" />
                    </form>
                    
                    <!-- Les données à afficher n'ont rien à faire dans le formulaire -->
                    <?php if(isset($_POST['Type'])){ //les données envoyées existent
                    	$bdd = new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                    	$donnees = $bdd->prepare('SELECT * FROM donnees WHERE Type=:type'); //modification de la requête en fonction de la valeur de $_POST['Type'] + requête préparée
                    	$donnees->bindParam('type', $_POST['Type']); //paramètres de la requête
                    	$donnees->execute(); //exécution de la requête
                    	while ($result = $donnees->fetch()){
                    		echo 'Nom : '.$result['Nom'] ; echo '<br>' ;
                    		echo 'Nombre : '.$result['Nombre'] ; echo '<br>';
                    		echo 'Le : '.$result['Jour'] . '/' . $result['Mois'] .'/'. $result['Annee'] ; echo'<br>';
                    		echo 'Departement : '.$result['Departement'] ; echo '<br>';
                    		echo 'Organisation : '.$result['Organisation'] ; echo '<br>';
                    		echo 'Depart : '.$result['Depart'] ; echo '<br>';
                    	}
                    } else { echo "Veuillez saisir un type de course"; } ?>
                    • Partager sur Facebook
                    • Partager sur Twitter

                    </radiax>

                      27 mars 2017 à 15:23:35

                      Il manque également l'attribut method dans le <form> qui doit être en POST ici, le method par defaut étant GET on ne rentrerait jamais dans la condition.

                      <form method="post" action="">

                      -
                      Edité par Sombrelune 27 mars 2017 à 15:27:22

                      • Partager sur Facebook
                      • Partager sur Twitter
                      - Activer les erreurs : PHP - PDO - MYSQLI - ¯\_ツ_/¯ - Documentations : PHP - MySQL -
                        27 mars 2017 à 15:28:25

                        Merci ma condition marche, je vous remercie, je vais maintenant essayer de faire un autre Bloc pour insérer une valeur dans a base de données je vous remercie  

                        Code Final pour qui ça intéresserais : 

                        <?php
                        $bdd= new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                        ?>
                        <!DOCTYPE html>
                        
                        <html>
                        
                          <head>
                        	<meta charset="UTF-8">
                        	<meta name="viewport" content="width=device-width, initial-scale=1.0">
                            <title>Finder</title>
                          </head>
                          <header> 
                          <div id=class"Contact"> </div>
                          </header>
                        
                          <body>
                        	<fieldset>
                        	<legend><center><h2>Type de course</h2></center></legend>
                        	    <div id=class"recherche"> <p>Veuillez choisir le type de course : </p>
                        				<form method="post" action="">
                        				    <!-- Pense a fermer ton select au bon endroit -->
                        				    <select name="Type">
                        				        <option value="1" >Course par tour</option>
                        				        <option value="2">Course contre la montre </option>
                        				        <option value="3">Depart arrivee</option>
                        				        <option value="4">Duathlon</option>
                        				        <option value="5"></option>
                        				    </select>
                        				    <input type="submit" name="Valeur" value="Definir le type de course" title="valider pour aller à la page sélectionnée" />
                        				</form>
                        				 
                        				<!-- Les données à afficher n'ont rien à faire dans le formulaire -->
                        				<?php if(isset($_POST['Type'])){ //les données envoyées existent
                        				    $bdd = new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                        				    $donnees = $bdd->prepare('SELECT * FROM donnees WHERE Type=:type'); //modification de la requête en fonction de la valeur de $_POST['Type'] + requête préparée
                        				    $donnees->bindParam('type', $_POST['Type']); //paramètres de la requête
                        				    $donnees->execute(); //exécution de la requête
                        				    while ($result = $donnees->fetch()){
                        				        echo 'Nom : '.$result['Nom'] ; echo '<br>' ;
                        				        echo 'Nombre : '.$result['Nombre'] ; echo '<br>';
                        				        echo 'Le : '.$result['Jour'] . '/' . $result['Mois'] .'/'. $result['Annee'] ; echo'<br>';
                        				        echo 'Departement : '.$result['Departement'] ; echo '<br>';
                        				        echo 'Organisation : '.$result['Organisation'] ; echo '<br>';
                        				        echo 'Depart : '.$result['Depart'] ; echo '<br>';
                        				    }
                        				} else { echo "Veuillez saisir un type de course"; } ?>
                        	</fieldset>
                        	</div>
                          </body>
                        </html>

                        -
                        Edité par NicolasManellio 27 mars 2017 à 15:33:55

                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 mars 2017 à 15:34:41

                          NicolasManellio a écrit:

                          quoi que je fasse il me demande de saisir un type de course donc ma valeur type nexiste pas .. ??


                          il ne passe en aucun cas dans ton if. look bien le code que je t'es mit logiquement le code la fonctionne
                          • Partager sur Facebook
                          • Partager sur Twitter
                            27 mars 2017 à 15:35:25

                            Bien vu Sombrelune, j'avais oublié que par défaut les données étaient passées en GET.

                            NicolasManellio, tu pourrais prendre un screenshot du schéma de la partie de ta DB qui nous intéresse ? Pour le coup on fait des propositions mais sans connaitre le nom des champs, impossible de savoir précisément si un erreur peut provenir de là ;)

                            EDIT: Le temps que je mette mon message t'as édité le tien :euh: Je suis content que ça fonctionne ^^ N'hésite pas à revenir si tu as d'autres problèmes dans ton projet.

                            -
                            Edité par Radiax18 27 mars 2017 à 15:38:36

                            • Partager sur Facebook
                            • Partager sur Twitter

                            </radiax>

                              27 mars 2017 à 15:44:13

                              Merci ma condition marche, je vous remercie, je vais maintenant essayer de faire un autre Bloc pour insérer une valeur dans a base de données je vous remercie  

                              Code Final pour qui ça intéresserais : 

                              <?php
                              $bdd= new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                              ?>
                              <!DOCTYPE html>
                              
                              <html>
                              
                                <head>
                              	<meta charset="UTF-8">
                              	<meta name="viewport" content="width=device-width, initial-scale=1.0">
                                  <title>Finder</title>
                                </head>
                                <header> 
                                <div id=class"Contact"> </div>
                                </header>
                              
                                <body>
                              	<fieldset>
                              	<legend><center><h2>Type de course</h2></center></legend>
                              	    <div id=class"recherche"> <p>Veuillez choisir le type de course : </p>
                              				<form method="post" action="">
                              				    <!-- Pense a fermer ton select au bon endroit -->
                              				    <select name="Type">
                              				        <option value="1" >Course par tour</option>
                              				        <option value="2">Course contre la montre </option>
                              				        <option value="3">Depart arrivee</option>
                              				        <option value="4">Duathlon</option>
                              				        <option value="5"></option>
                              				    </select>
                              				    <input type="submit" name="Valeur" value="Definir le type de course" title="valider pour aller à la page sélectionnée" />
                              				</form>
                              				 
                              				<!-- Les données à afficher n'ont rien à faire dans le formulaire -->
                              				<?php if(isset($_POST['Type'])){ //les données envoyées existent
                              				    $bdd = new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                              				    $donnees = $bdd->prepare('SELECT * FROM donnees WHERE Type=:type'); //modification de la requête en fonction de la valeur de $_POST['Type'] + requête préparée
                              				    $donnees->bindParam('type', $_POST['Type']); //paramètres de la requête
                              				    $donnees->execute(); //exécution de la requête
                              				    while ($result = $donnees->fetch()){
                              				        echo 'Nom : '.$result['Nom'] ; echo '<br>' ;
                              				        echo 'Nombre : '.$result['Nombre'] ; echo '<br>';
                              				        echo 'Le : '.$result['Jour'] . '/' . $result['Mois'] .'/'. $result['Annee'] ; echo'<br>';
                              				        echo 'Departement : '.$result['Departement'] ; echo '<br>';
                              				        echo 'Organisation : '.$result['Organisation'] ; echo '<br>';
                              				        echo 'Depart : '.$result['Depart'] ; echo '<br>';
                              				    }
                              				} else { echo "Veuillez saisir un type de course"; } ?>
                              	</fieldset>
                              	</div>
                                </body>
                              </html>



                              • Partager sur Facebook
                              • Partager sur Twitter

                              Probleme condition

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown