Probleme d'affichage liste deroulante php, html, mysql [Résolu/Fermé]

Signaler
Messages postés
5
Date d'inscription
lundi 18 février 2013
Statut
Membre
Dernière intervention
18 février 2013
-
 bbcwatcher -
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

Le soucis vient des ; après chaque variables dans ta boucle.
Messages postés
5
Date d'inscription
lundi 18 février 2013
Statut
Membre
Dernière intervention
18 février 2013

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();	
Messages postés
8320
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 490
ta requête, tu as tout attaché, mets des espaces :

$requete= "SELECT * FROM domaine";
Messages postés
5
Date d'inscription
lundi 18 février 2013
Statut
Membre
Dernière intervention
18 février 2013

Merci,
rien a toujours changé :(
Messages postés
8320
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 490
la requête est bonne ? (dans phpmyadmin)
on rentre dans la boucle ? (un bête echo "coucou"; dans la boucle)
Messages postés
5
Date d'inscription
lundi 18 février 2013
Statut
Membre
Dernière intervention
18 février 2013

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.
Messages postés
223
Date d'inscription
mardi 11 janvier 2011
Statut
Membre
Dernière intervention
19 février 2013
14
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;
}
Messages postés
8320
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 490
l'intérêt des fonctions, c'est de les réutiliser, là je ne pense pas que ça soit la solution
Messages postés
223
Date d'inscription
mardi 11 janvier 2011
Statut
Membre
Dernière intervention
19 février 2013
14
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.
Messages postés
5
Date d'inscription
lundi 18 février 2013
Statut
Membre
Dernière intervention
18 février 2013

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> 
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();
?>