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 :

Création liste déroulante


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Points : 16
    Points
    16
    Par défaut Création liste déroulante
    Bonjour,

    J'aimerai créer un menu déroulant qui soit crée dynamiquement à partir de la base. Pour un formulaire de recherche sur des annonces.

    Le but est de lister chaque pays présent dans la table annonces
    et pour chaque pays, chaque ville présente dans la table annonces
    et si la ville est Paris, lister chaque arrondissement.

    Le problème est que je n'arrive pas à comprendre ce qui cloche dans ma fonction. Chacun de mes while ne s'exécutent qu'une fois; ce qui me donne un menu déroulant avec 1 pays 1ville...

    C'est probablement tout simple mais je ne saisis pas.

    Voici la fonction:

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    		$tb_blocs["$code_bloc"] .= '<p>RECHERCHE</p>';	
    		$tb_blocs["$code_bloc"] .= '<FORM action="index.php" method="post">';
    		$tb_blocs["$code_bloc"] .= '<INPUT name="module" type=hidden value="recherche">';
     
    		//--- destination ----	
    		$tb_blocs["$code_bloc"] .= '<select name="destination">';
    		$tb_blocs["$code_bloc"].= '<option value="" ></option>';
     
    		//Requête passée ici: "SELECT pays FROM tb_annonces GROUP BY pays ORDER BY pays ASC"
    		$params = array('champs'=>'pays', 'tables'=>'tb_annonces', 'group'=>'pays', 'order'=>'pays asc');
     
    		$cde = $appart->sql_auto_cde($params, $conditions);
    		$result = $appart->requete_sql($appart->db, $cde);
     
    		if ($appart->debug_mode || $params['debug']==1) {
    			echo "<b>tableau_pays</b> $cde (";
    			echo mysql_num_rows($result) . ")<br>";
    		}
     
    		while($tb_pays = mysql_fetch_array($result, MYSQL_ASSOC)) {
    			$infos_pays = $tb_pays['pays'];
     
    			if (strlen($infos_pays)>1) {
     
    				$tb_blocs["$code_bloc"] .= '<option value="' . $infos_pays . '">----------' . ucfirst(strtolower($infos_pays)) . '</option>';
     
    				//Requête passée ici: "SELECT ville FROM tb_annonces WHERE pays='$infos_pays' GROUP BY ville ORDER BY ville ASC"
    				$params = array('champs'=>'ville', 'tables'=>'tb_annonces', 'group'=>'ville', 'order'=>'ville asc');
    				$conditions[] = "and pays='$infos_pays'";
     
    				$cde = $appart->sql_auto_cde($params, $conditions);
    				$result = $appart->requete_sql($appart->db, $cde);
     
    				if ($appart->debug_mode || $params['debug']==1) {
    					echo "<b>tableau_villes</b> $cde (";
    					echo mysql_num_rows($result) . ")<br>";
    				}
     
    				while ($tb_ville = mysql_fetch_array($result, MYSQL_ASSOC)) {
    					$infos_ville = $tb_ville['ville'];
     
    					if($infos_ville == 'Paris') {
     
    						$tb_blocs["$code_bloc"] .= '<option value="' . $infos_ville . '">-----' . $infos_ville . '</option>';
     
    						for($i=1; $i<21; $i++) {
    							if($i==1){
    								$district = '1er';
    							}
    							else {
    								$district = $i.'ème';
    							}
    							if($i<10) {
    								$i = '0'.$i;
    							}
    							$tb_blocs["$code_bloc"] .= '<option value="750' . $i . '">-->' . $district . ' arrondissement</option>';
    						}
    					}
    					else {
    						$tb_blocs["$code_bloc"] .= '<option value="' . $infos_ville . '">' . $infos_ville . '</option>';
    					}
    				}
    			}	
    		}
    		$tb_blocs["$code_bloc"] .= '</select>';
    		$tb_blocs["$code_bloc"] .= '<input type="submit" id="submit" value="RECHERCHER">';
    		$tb_blocs["$code_bloc"] .= '</form>';

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Salut,
    On peut voir les requêtes que tu executes?
    Tu veux faire des listes liées?
    Le tutoriel.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    En fait il y avait 2 soucis dans mon code.

    Les variables stockant requêtes et résultats avaient les mêmes noms pour les deux boucles: $cde et $result

    Et $conditions devait être défini comme tableau.
    Car la fonction sql_auto_cde qui crée les requêtes traite l'ajout de conditions par une boucle incrémentée for.

    voici le code modifié:

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    		$tb_blocs["$code_bloc"] .= '<p>RECHERCHE</p>';	
    		$tb_blocs["$code_bloc"] .= '<FORM action="index.php" method="post">';
    		$tb_blocs["$code_bloc"] .= '<INPUT name="module" type=hidden value="recherche">';
     
    		//--- destination ----	
    		$tb_blocs["$code_bloc"] .= '<select name="destination">';
    		$tb_blocs["$code_bloc"].= '<option value="" ></option>';
     
    		//Requête passée ici: "SELECT pays FROM tb_annonces GROUP BY pays ORDER BY pays ASC"
    		$params = array('champs'=>'pays', 'tables'=>'tb_annonces', 'group'=>'pays', 'order'=>'pays asc');
     
    		$cde = $appart->sql_auto_cde($params, $conditions);
    		$result = $appart->requete_sql($appart->db, $cde);
     
    		if ($appart->debug_mode || $params['debug']==1) {
    			echo "<b>tableau_pays</b> $cde (";
    			echo mysql_num_rows($result) . ")<br>";
    		}
     
    		while($tb_pays = mysql_fetch_array($result, MYSQL_ASSOC)) {
    			$infos_pays = $tb_pays['pays'];
     
    			if (strlen($infos_pays)>1) {
     
    				$tb_blocs["$code_bloc"] .= '<option value="' . $infos_pays . '">----------' . ucfirst(strtolower($infos_pays)) . '</option>';
     
    				//Requête passée ici: "SELECT ville FROM tb_annonces WHERE pays='$infos_pays' GROUP BY ville ORDER BY ville ASC"
    				$params = array('champs'=>'ville', 'tables'=>'tb_annonces', 'group'=>'ville', 'order'=>'ville asc');
                                    $conditions = array();
    				$conditions[] = "and pays='$infos_pays'";
     
    				$vcde = $appart->sql_auto_cde($params, $conditions);
    				$result2 = $appart->requete_sql($appart->db, $vcde);
     
    				if ($appart->debug_mode || $params['debug']==1) {
    					echo "<b>tableau_villes</b> $vcde (";
    					echo mysql_num_rows($result2) . ")<br>";
    				}
     
    				while ($tb_ville = mysql_fetch_array($result2, MYSQL_ASSOC)) {
    					$infos_ville = $tb_ville['ville'];
     
    					if($infos_ville == 'Paris') {
     
    						$tb_blocs["$code_bloc"] .= '<option value="' . $infos_ville . '">-----' . $infos_ville . '</option>';
     
    						for($i=1; $i<21; $i++) {
    							if($i==1){
    								$district = '1er';
    							}
    							else {
    								$district = $i.'ème';
    							}
    							if($i<10) {
    								$i = '0'.$i;
    							}
    							$tb_blocs["$code_bloc"] .= '<option value="750' . $i . '">-->' . $district . ' arrondissement</option>';
    						}
    					}
    					else {
    						$tb_blocs["$code_bloc"] .= '<option value="' . $infos_ville . '">' . $infos_ville . '</option>';
    					}
    				}
    			}	
    		}
    		$tb_blocs["$code_bloc"] .= '</select>';
    		$tb_blocs["$code_bloc"] .= '<input type="submit" id="submit" value="RECHERCHER">';
    		$tb_blocs["$code_bloc"] .= '</form>';
    Tout fonctionne bien je ne suis pas mécontent d'avoir enfin trouvé ça me bloquait depuis un moment.

    Un grand merci pour ton lien c'est exactement ce dont j'ai besoin pour les autres SELECT de mon formulaire.

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

Discussions similaires

  1. [XL-2007] Création listes déroulantes
    Par igno42 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/12/2011, 21h59
  2. Résultat inattendu lors enregistrementMacro - création liste déroulante
    Par JOBiJOBa3 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/10/2011, 20h09
  3. [AC-2003] Problème création liste déroulante
    Par Tom92 dans le forum IHM
    Réponses: 7
    Dernier message: 28/11/2010, 16h09
  4. [PHP 5.3] Création liste déroulante à partir d'une table
    Par Godard dans le forum Langage
    Réponses: 2
    Dernier message: 26/07/2010, 09h03
  5. Création liste déroulante en javascript pour adobe livecyrcle
    Par mad000 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/07/2009, 14h57

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