Probleme d'affichage liste deroulante php, html, mysql

Résolu
Bonjour,

j'ai créé un formulaire avec deux champs à remplir sachant que l'un des champs est une liste déroulante à remplir avec des données que je récupère dans ma base de données mysql. Cependant, le problème c'est que la liste déroulante ne m'affiche rien

J'ai testé la variable qui récupère les données depuis la base et elle contient bien les données qu'il me faut. Je pense que c'est un problème d'affichage mais je ne sais pas où

Voici mon code


<head> 
<title>creation typeOpeation</title> 
</head> 
	<body> 
		<h2>Remplissage formulaire creation type operation</h2> 
		 <form action="creationTypeOperation.php" method="post" >
			<p>Nom type operation : <br /><input type="text" name="nouveautypeOper"/></p>
			<p>
				<SELECT name="domaine" id="domaine">
					<?php// Connexion à la base de donnees C3P
						 try
						{
							$bdd = new PDO('mysql:host=localhost;dbname=basec3p', 'root', '');
						}
						catch(Exception $e)
						{
						die('Erreur : '.$e->getMessage());
						}
						echo "Connection à la base de données reussie <br>"; 
						$requete= "SELECT*FROM domaine";
						$resultatReq=$bdd->query($requete);
						
						while($ligne=$resultatReq->fetch())
						{ 
							 echo '<option value="'.$ligne['domaine'];.'">'.$ligne['domaine'];.'</option>';
						}
						$resultatReq->closeCursor();						
					?>
				</SELECT>
			</p>
			<input name="valider" type="submit" value="Valider" />
		</form> 
		
</body> 
</html>



Merci d'avance

8 réponses

  1. Le soucis vient des ; après chaque variables dans ta boucle.
    0
    1. Merci de votre reponse.
      enfait je l'ai corrigé mais j'ai toujours le meme soucis, rien ne s'affiche

      while($ligne=$resultatReq->fetch())
      						{ 
      							 echo '<option value="'.$ligne['domaine'].'">'.$ligne['domaine'].'</option>';
      						}
      						$resultatReq->closeCursor();	
      
      0
      1. Contributeur
        ta requête, tu as tout attaché, mets des espaces :

        $requete= "SELECT * FROM domaine";
        0
        1. Merci,
          rien a toujours changé :(
          0
          1. Contributeur
            la requête est bonne ? (dans phpmyadmin)
            on rentre dans la boucle ? (un bête echo "coucou"; dans la boucle)
            0
            1. Merci,

              effectivement il ya un truc bizarre quand meme.

              Quand je fais des echos à l'interieur de la balise <select>, il n'y a rien qui s'affiche (y compris à l'interieur de la boucle).

              Cependant quand j'ecris du html par exemple si je met des valeurs bidons pour les option value, il me les met mais une seule fois (donc pas de boucle , peut etre ne prend pas en compte le php làbà ??)

              Or si je ne m'abuse on peut ecrit le php partout dans le code.

              La connexion à la base de donnees marche bien car avec la meme boucle et la meme requette mais à l'exterieur du formulaire quand j'effectue l'affichage , ça marche nickel !

              J'ai vraiement besoin de votre aide car je galere depuis pas mal de temps avec ce probleme.

              Merci d'avance.
              0
              1. Apres tout apprenez à écrire des fonctions et non inserer des codes ici et là.

                exemple

                <html>
                ...
                <body>
                ...
                <select>
                <?php echo getOptionList();?>
                ...
                </html>
                <?php

                function getOptionList()
                {
                $result = "";
                // codes PHP complexes
                return $result;
                }
                0
                1. Contributeur
                  l'intérêt des fonctions, c'est de les réutiliser, là je ne pense pas que ça soit la solution
                  0
                2. Pas forcement: tu confonds: Fonction et la programmation Object.
                  Une fonction n'est pas forcement un object. de plus une fonction te permet de structurer ton code et de le rendre lisible pour autrui.
                  0
              2. J'ai du nouveau !
                En fait, j'ai essayé de mettre le SELECT apres la connexion à la base de données et puis j'ai changé la methode de connexion et l'acces à la base et çamarche nickel!

                Quoi que c'est bizarre qu'il n'accêpte pas le PDO::fetch() directement car c'est la version la plus recente.
                Il doit forcement exister quelque chose d'autre pour l'utiliser avec PDO::fetch().

                voici le code

                <head> 
                <title>creation typeOpeation</title> 
                </head> 
                	<body> 
                		<h2>Remplissage formulaire creation type operation</h2> 
                		 <form action="actionTypeOper.php" method="post" >
                			<p>Nom type operation : <br /><input type="text" name="nouveautypeOper"/></p>
                			<p>domaine associe :</br> 
                					<?php
                						mysql_connect("localhost", "root", "" );  
                						mysql_select_db("basec3p" );  
                						$reponse = mysql_query("SELECT * FROM domaine" );
                						echo'<select name="domaine">';
                						while ( $donnees = mysql_fetch_array($reponse))
                						{
                						?>
                						 <option value="<?php echo $donnees['domaine']; ?>"><?php echo $donnees['domaine']; ?></option>
                						 <?php
                						} 
                						 echo'</select>';
                						 mysql_close(); // Déconnexion de MySQL
                						?>					
                			</p>
                			<input name="valider" type="submit" value="Valider" />
                		</form> 
                		
                </body> 
                
                0
                1. Merci !!! Mon problème c'était que j'avais bien les données qui s'affichaient mais chacune dans sa propre liste déroulante (donc avec une donnée par liste...), déplacer le select avant le while a résolu le problème

                  <?php
                  /*Connection à la BDD*/
                  include("config.php");

                  $reponse = $bdd->query('SELECT * FROM nounou');
                  echo '<select name="etat" id="etat">';
                  while ($donnees = $reponse->fetch())
                  {
                  ?>
                  <option><?php echo $donnees['nom'];?></option>
                  <?php
                  }
                  echo '</select>';
                  /*Fermeture de la BDD*/
                  $reponse->closeCursor();
                  ?>
                  0