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

PHP & Base de données Discussion :

Ajout d'options dans une liste déroulante à partir du résultat d'une requête [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mars 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Mars 2006
    Messages : 71
    Points : 63
    Points
    63
    Par défaut Ajout d'options dans une liste déroulante à partir du résultat d'une requête
    Bonjour

    J'ai tourné le probléme dans tout les sens, j'ai effectué des recherches qui m'ont permi d'améliorer mon code mais j'ai toujours un probléme que je n'arrive pas à résoudre.

    Explication :

    Je lance une requête mysql sur une table contenant entre autre un champ nommé ['Reference'].

    Je souhaite remplir la liste déroulante à partir du tableau $Reftab contenant les References trouvées. La taille de $Reftab varie en fonction du résultat de la requête.

    Je ne veux pas éxécuter la requête dans le <select>.

    Voici le code qui fonctionne mais qui ne prend pas en compte la taille du tableau :

    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
    <?php
    $id = $_GET["id"];
    $rep = $_GET["rep"];
    $host = "xxxx";
    $user = "xxxx";
    $pass = "xxxx";
    $base = "xxxx";
    	if($db = mysql_connect($host, $user, $pass)) {
    		if($dbb = mysql_select_db($base)) {
    		$query = "SELECT * FROM `catalogue` WHERE `Index` = '$id' AND `Rep` = '$rep'";
    		$result = mysql_query($query);
    		$i = 0;
    		while($tab = mysql_fetch_array($result)) {
    			global $Reftab;
    			$Reftab[$i] = $tab['Reference'];
    			$i++;
    		}
    		mysql_close();
    		} else {
            die("connexion à la base $base impossible");
    		}
    	} else {
    			die("connexion au serveur $host impossible");
    	  }  
    ?>
    <HTML>
    <HEAD>
    </HEAD>
    <BODY>
    	<form name="form1">
    		Référence N° <SELECT name="Refcombo" onChange="">
    			<OPTION VALUE=""> <?php echo $Reftab[0]; ?> </OPTION>
    			<OPTION VALUE=""> <?php echo $Reftab[1]; ?> </OPTION>
    			<OPTION VALUE=""> <?php echo $Reftab[2]; ?> </OPTION>
    		</SELECT></td>
    	</form>
    </BODY></HTML>
    Et voici le code le moins tordu parmi tout ceux que j'ai essayé qui prend en compte la taille du tableau

    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
    <?php
    $id = $_GET["id"];
    $rep = $_GET["rep"];
    $host = "xxxx";
    $user = "xxxx";
    $pass = "xxxx";
    $base = "xxxx";
    	if($db = mysql_connect($host, $user, $pass)) {
    		if($dbb = mysql_select_db($base)) {
    		$query = "SELECT * FROM `catalogue` WHERE `Index` = '$id' AND `Rep` = '$rep'";
    		$result = mysql_query($query);
    		$i = 0;
    		while($tab = mysql_fetch_array($result)) {
    			global $Reftab;
    			$Reftab[$i] = $tab['Reference'];
    			$i++;
    		}
    		mysql_close();
    		} else {
            die("connexion à la base $base impossible");
    		}
    	} else {
    			die("connexion au serveur $host impossible");
    	  }  
    ?>
    <HTML>
    <HEAD>
    </HEAD>
    <BODY>
    	<form name="form1">
    		Référence N° <SELECT name="Refcombo" onChange="">
    			<script language="javascript">
    				for (i=0; i< <?php echo count($Reftab); ?> i++)
    				document.write("<option value=\"\">" + <?php echo $Reftab[i]; ?> + "</option>");
    				//Je pense que i n'est pas accessible dans echo $Reftab[i];
    			</script>
    		</SELECT></td>
    	</form>
    </BODY></HTML>

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    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
    <HTML>
    <HEAD>
    </HEAD>
    <BODY>
    	<form name="form1">
    		Référence N° <SELECT name="Refcombo" onChange="">
    <?
    	for($i=0;$i<count($Reftab);$i++)
    	{
    			echo'<OPTION>'.$Reftab[$i].'</OPTION>';
    	}
    ?>
     
    		</SELECT></td>
    	</form>
    </BODY></HTML>

    essaye cela par contre je ne comprend pa pourquoi tu ne veux pas tout faire d'un coup plutot que d'abord faire ta requete stoker dans un tableau et ensuite seulement l'utiliser

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mars 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Mars 2006
    Messages : 71
    Points : 63
    Points
    63
    Par défaut
    Merci ton code fonctionne parfaitement .

    Je ne suis pas encore trés habitué à l'architecture de ce language, je souhaite qu'a l'ouverture de la fenêtre la requête se lance, je stock les résultats dans des tableaux et je ferme la connection puis j'utilise le contenu de ces tableaux pour remplir les différents contrôles.

    Cela ne me parassait pas logique de lancer une requête dans un controle <select> alors que son résultat est utilisé dans beaucoup d'autres contrôles, mais je me trompe sans doutes

    Si tu as une explication en terme de performance, mise en forme ....

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    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
    <?php
    $i de connexiond = $_GET["id"];
    $rep = $_GET["rep"];
    $host = "xxxx";
    $user = "xxxx";
    $pass = "xxxx";
    $base = "xxxx";
    $db = mysql_connect($host, $user, $pass)) or die ('erreur de connexion'.mysql_error());
    $dbb = mysql_select_db($base)) or die ('erreur de connexion'.mysql_error());
     
    $query = "SELECT Reference FROM `catalogue` WHERE `Index` = '$id' AND `Rep` = '$rep'";
    $result = mysql_query($query)or die ('erreur requete'.mysql_error());	
    echo'<HTML><HEAD></HEAD><BODY>
    
    	<form name="form1">
    		Référence N° <SELECT name="Refcombo" onChange="">';
     
    while($tab = mysql_fetch_array($result)) 
    	{
    			echo'<OPTION>'.$tab['Reference'].'</OPTION>';
    	}
     
    	echo'</SELECT></td></form></BODY></HTML>';
    ?>
    voila je procederai comme cela en faite

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mars 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Mars 2006
    Messages : 71
    Points : 63
    Points
    63
    Par défaut
    Je vais utiliser ta façon de faire car elle évite de passer comme je l'ai fait par un tableau intermédiaire.

    Encore merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/01/2014, 15h58
  2. Réponses: 1
    Dernier message: 15/12/2013, 21h38
  3. [MySQL] Remplir une liste déroulante avec les résultats d'une fonction
    Par Anibel dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 29/10/2013, 11h39
  4. Réponses: 4
    Dernier message: 25/05/2007, 15h25
  5. Réponses: 5
    Dernier message: 16/05/2007, 17h53

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