IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

probleme fetch_array liste deroulant non chargée


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 217
    Points : 113
    Points
    113
    Par défaut probleme fetch_array liste deroulant non chargée
    bonjour,

    j'ai crée un tableau qui contient les 7 jours de la semaine en entête
    avec des champs de formulaires sélect (liste déroulant) permettant de saisir pour chaque jour de la semaine un nom d'équipe correspondant.

    Mon problème c'est que seul la liste déroulante du premier colonne ( case correspondant à lundi) est remplie les autres sont vides.

    je ne sais pas si on peut faire un fetch_array dans une boucle
    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <!DOCTYPE html>
    </html>
    <head> 
    <title>remplir equipe de la semaine</title> 
    </head> 
    	<link rel="stylesheet" href="styleTable.css" />
    	<body> 
    		<?php
    			$link=mysql_connect("localhost", "root", "" );  
    			$bdd=mysql_select_db("basec3p",$link );  
    			if(!$bdd){
    				die ('Impossible de sélectionner la base de données : ' . mysql_error());
    			}  
    			$repEquipe=mysql_query("SELECT * FROM equipe" );	
    			?>
    			<form action="actionRemplirFichePilote.php" method="post">
    				<input type="hidden" value="<?php echo $idPilote ;?>"/>
    				<table>
    					<caption align="center" ><h1>Semaine<h1></caption>
    					<!-- Entete de mon tableau constitué des jours de la semaine-->
    					<tr>
    						<th>lundi</th>
    						<th>mardi</th>
    						<th>mercredi</th>
    						<th>jeudi</th>
    						<th>vendredi</th>
    						<th>samedi</th>
    						<th>dimanche</th>
    					</tr>
    					<tr>
    						<?php
    						$i=0;
    						//remplissage des nom d'equipe correspondant à chaque jour de a semaine
    						while($i<7)
    						{?>
    							<td>
    								<select name='equipe' id='equipe'>
    									<option value='-1'>Aucun</option>
    									<?php
    									while($donnees = mysql_fetch_array($repEquipe))
    									{?>
    										<option value="<?php echo $donnees['nomEquipe']; ?>"><?php echo $donnees['nomEquipe']; ?></option>
    									<?php	
    									}
    								?>
    								</select>	
    							</td>
    						<?php 
    $i=$i+1;
    						}
    						?>
    					</tr>
    				</table>
    			</form>
    	</body> 
    </html>

    Pouvez vous me dire c'st quoi le problème? y'a t-il un moyen pour le contourner ?

    Merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Bonjour,

    Tu as pointé le problème dans ton message , un fetch_array seul dans une boucle ne va fonctionner qu'une seule fois. Cette commande déplace le curseur sql dans la pile de résultat, ton deuxième while indique que tant que le curseur n'est pas vide on affiche et c'est vrai. Seulement, lors du deuxième passage de la première boucle le curseur sera toujours vide (il n'y a pas de réinitialisation de position du curseur au début de la pile).

    Deux solutions s'offrent à toi :
    Soit tu déplaces le pointeur à chaque début du premier while avec un mysql_data_seek($repEquipe, 0);

    Soit tu initialise un tableau de valeurs avant ton affichage html (je préfère cette méthode qui évite de mélanger sql/php/html).
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $listeNoms = array();
    $repEquipe=mysql_query("SELECT * FROM equipe" );
    while($donnees = mysql_fetch_array($repEquipe))
    {
       $listeNoms[] = $donnees;
      //$listeNoms[] = $donnees['nomEquipe']; // Si tu n'utilises que les noms
    }

    Ensuite dans ton code html tu auras juste a faire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    foreach($listeNoms as $infosNom) {
    ?>
    <option value="<?php echo $infosNom['nomEquipe']; ?>"><?php echo $infosNom['nomEquipe']; ?></option>
     
     
    <!-- Si tu n'utilises que les noms -->
    <!-- <option value="<?php echo $infosNom; ?>"><?php echo $infosNom; ?></option> -->
     
    <?php
    }
    ?>

    Par contre je te conseillerais grandement de passer par mysqli et non plus mysql qui est déprécié . De plus je vois que dans les value="" de tes <option></option html tu met le nom de l'équipe, je ne sais pas si tu remplis ensuite les semaines avec les nom ou les id des équipes dans ta bdd mais si c'est avec les id autant les mettre directement dans le value .

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 217
    Points : 113
    Points
    113
    Par défaut
    Merci beaucoup TERRA
    C'est résolue
    J'ai déplacé la requête dans le select et ça marche nickel

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    $i=0;
    //remplissage des nom d'equipe correspondant à chaque jour de a semaine
    while($i<7)
    {?>
    	<td>
    		<select name='equipe' id='equipe'>
    			<option value='-1'>Aucun</option>
    			<?php
    			$repEquipe=mysql_query("SELECT * FROM equipe" );	
    			while($donnees = mysql_fetch_array($repEquipe))
    			{?>
    				<option value="<?php echo $donnees['nomEquipe']; ?>"><?php echo $donnees['nomEquipe']; ?></option>
    			<?php	
    			}
    			?>
    		</select>	
    	</td>
    <?php 
    $i=$i+1;
    }
    ?>

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    En effet cette méthode fonctionne aussi mais je me permet de commenter un peu .

    En gros avec ton code tu vas faire 7 fois la même requête sql, je suis contre l'utilisation abusive des bases :p après elles ont mal, elles pleurent ... ainsi en tant que protecteur des bases et pour tes prochains programmes je te somme de limiter les requètes xD.

    A prendre au 10ème degré évidemment . Mais il est vrai que faire 7 fois la même requête pour le même résultat n'est pas forcément la meilleur manière de faire . Ceci ne sera pas bien grave car je ne pense pas que tu auras des milliers d'équipe mais en cas de grosse quantité d'informations dans la base il faudra éviter de faire cela au risque de mettre le serveur à genoux .

    (multiplie 7 par le nombre de personne qui pourront regarder la page en même temps )

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 217
    Points : 113
    Points
    113
    Par défaut
    Merci beaucoup encore TERRA
    je vois que ta solution est bien meilleur que de faire la requête 7 fois.
    je vais le changer de suite

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/05/2015, 19h28
  2. probleme liste deroulant champ calcule
    Par patgame dans le forum Modélisation
    Réponses: 4
    Dernier message: 24/07/2007, 19h08
  3. Liste deroulant dynamique
    Par lykim dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 11h22
  4. probleme de selection dans une liste deroulant
    Par biboulou dans le forum IHM
    Réponses: 5
    Dernier message: 04/05/2006, 12h16
  5. Réponses: 8
    Dernier message: 02/04/2004, 17h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo