Probleme d'affichage liste deroulante php, html, mysql

Résolu/Fermé
Mucci
Messages postés
5
Date d'inscription
lundi 18 février 2013
Statut
Membre
Dernière intervention
18 février 2013
- 18 févr. 2013 à 10:03
 bbcwatcher - 29 avril 2014 à 23:44
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.
0
Mucci
Messages postés
5
Date d'inscription
lundi 18 février 2013
Statut
Membre
Dernière intervention
18 février 2013

18 févr. 2013 à 10:31
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
ThEBiShOp
Messages postés
8318
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 595
18 févr. 2013 à 11:22
ta requête, tu as tout attaché, mets des espaces :

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

18 févr. 2013 à 11:55
Merci,
rien a toujours changé :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ThEBiShOp
Messages postés
8318
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 595
18 févr. 2013 à 11:57
la requête est bonne ? (dans phpmyadmin)
on rentre dans la boucle ? (un bête echo "coucou"; dans la boucle)
0
Mucci
Messages postés
5
Date d'inscription
lundi 18 février 2013
Statut
Membre
Dernière intervention
18 février 2013

18 févr. 2013 à 12:53
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
xamurai
Messages postés
223
Date d'inscription
mardi 11 janvier 2011
Statut
Membre
Dernière intervention
19 février 2013
15
Modifié par xamurai le 18/02/2013 à 15:15
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
ThEBiShOp
Messages postés
8318
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 595
18 févr. 2013 à 15:17
l'intérêt des fonctions, c'est de les réutiliser, là je ne pense pas que ça soit la solution
0
xamurai
Messages postés
223
Date d'inscription
mardi 11 janvier 2011
Statut
Membre
Dernière intervention
19 février 2013
15
18 févr. 2013 à 15:23
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
Mucci
Messages postés
5
Date d'inscription
lundi 18 février 2013
Statut
Membre
Dernière intervention
18 février 2013

18 févr. 2013 à 16:46
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
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