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 :

PHP Menu déroulant problème 3eme menu


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Par défaut PHP Menu déroulant problème 3eme menu
    Je souhaite faire apparaitre 3 menu déroulant le premier menu qui comprend les région le deuxiéme qui comprend les categories et le troisiéme qui comprend les sous-categories.

    mes deux premiers menu fonctionne trés bien mais c'est quand j'essaye d'appeler le troisiéme menu rien apparait.

    voici mon code total

    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
     
    <?php
     
     
    echo("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
    /* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
    $serveur = "aaaa";
    $admin   = "aaaaa";
    $mdp     = "aaaaa";
    $base    = "aaaaa";
     
    $idr = isset($_POST['departement'])?$_POST['departement']:null;
    $ics = isset($_POST['categorie'])?$_POST['categorie']:null;
    ?>     
            <div id="formulaire">
                            Votre departement :<br />
    <?php
     
            $connexion = mysql_pconnect($serveur, $admin, $mdp);
            if($connexion != false)
            {
                    $choixbase = mysql_select_db($base, $connexion);
     
                    $sql1 = "SELECT `id_departement`, `departement`".
                    " FROM `departement`".         
                    " WHERE `id_region` = 18".
                    " ORDER BY `id_departement`";          
                    $rech_departement = mysql_query($sql1);
     
                    $code_departement = array();
                    $departement = array();
                    /* On active un compteur pour les categories */
                    $nb_departement = 0;
                    if($rech_departement != false)
                            {
                                    while($ligne = mysql_fetch_assoc($rech_departement))
                                    {
                                            array_push($code_departement, $ligne['id_departement']);
                                            array_push($departement, $ligne['departement']);
                                            /* On incrémente de compteur */
                                            $nb_departement++;
                                    }
                            }
     
    ?>
            <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgcategorie">
                    <select name="departement" id="departement" onchange="document.forms['chgcategorie'].submit();">
                    <option value="-1">- - - Choisissez votre département - - -</option>
    <?php
        for($i = 0; $i < $nb_departement; $i++)
        {
    ?>
     
                    <option value="<?php echo($code_departement[$i]); ?>"<?php echo((isset($idr) && $idr == $code_departement[$i])?" selected=\"selected\"":null); ?>><?php echo($departement[$i]); ?></option>
     
    <?php
        }
    ?>
                    </select>    
            </form>
    <?php
        mysql_free_result($rech_departement);
     
        if(isset($idr) && $idr != -1)
        {
     
            $sql2 = "SELECT `id_categorie`, `categorie`".
            " FROM `categorie`".
            " ORDER BY `id_categorie`;";
            if($connexion != false)
     
            {
                $rech_categorie = mysql_query($sql2, $connexion);
     
                $nd = 0;
     
                $code_categorie = array();
                $nom_categorie = array();
     
                while($ligne_categorie = mysql_fetch_assoc($rech_categorie))
                {
                    array_push($code_categorie, $ligne_categorie['id_categorie']);
                    array_push($nom_categorie, $ligne_categorie['categorie']);
                    $nd++;
                }
     
                ?>
    Votre catégorie :<br />
    <select name="departement" id="departement">
                <?php
                for($d = 0; $d<$nd; $d++)
                {
                 ?>
      <option value="<?php echo($code_categorie[$d].'-'.$nom_categorie[$d]); ?>"<?php echo((isset($categorie_selectionne) && $categorie_selectionne == $code_categorie[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_categorie[$d]); ?></option>
     
                    <?php
                }
    ?>
    </select>
    <?php
            }
     
            mysql_free_result($rech_categorie);
        }
    ?>
     
     
     
     
     
     
     
    <?php  
     
        if(isset($ics) && $ics != -1)
        {
     
            $sql3 = "SELECT `id_souscategorie`, `souscategorie`".
            " FROM `sous-categorie`".
            " ORDER BY `id_souscategorie`;";
            if($connexion != false)
     
            {
                $rech_souscategorie = mysql_query($sql3, $connexion);          
                $nc = 0;
     
                $code_souscategorie = array();
                $nom_souscategorie = array();
     
                while($ligne_souscategorie = mysql_fetch_assoc($rech_souscategorie))
                {
                    array_push($code_souscategorie, $ligne_souscategorie['id_souscategorie']);
                    array_push($nom_souscategorie, $ligne_souscategorie['souscategorie']);
                    $nc++;
                }
     
                ?>
    Votre sous-catégorie :<br />
    <select name="departement" id="departement">
                <?php
                for($c = 0; $c<$nc; $c++)
                {
                 ?>
      <option value="<?php echo($code_souscategorie[$c].'-'.$nom_souscategorie[$c]); ?>"<?php echo((isset($souscategorie_selectionne) && $sous-categorie_selectionne == $code_souscategorie[$c])?" selected=\"selected\"":null); ?>><?php echo($nom_souscategorie[$c]); ?></option>
     
     <?php
                }
    ?>
    </select>
    <?php
            }
     
            mysql_free_result($rech_souscategorie);
        }
    ?>
     
     
     
     
     
     
     
     
     
     
    <?php  
            echo '<input type="hidden" name="departement" id="departement" value="'.$departement[$idr - 1].'"/>';
            echo '<input type="hidden" name="categorie" id="categorie" value="'.$categorie[$ics - 1].'"/>';
    ?>
    <input type="submit" name="ok" id="ok" value="envoyer" />
    <?php
        /* Terminé, on ferme la connexion */
        mysql_close($connexion);
    }
    else
     
    {
        /* Si on arrive là, c'est pas bon signe, il faut vérifier les
        * paramètres de connexion, mot de passe, serveur pas démarré etc... */
    }
    ?>
    Merci pour vote aide

  2. #2
    Membre expérimenté Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Par défaut
    Bonjour,

    Bon j'ai trouvé pas mal d'erreurs!
    - un seul formulaire (le premier) les autres n'ont pas de balise <form ...></form>
    - des variables que tu utilise mais qui ne sont pas initialisées
    - des noms de variable du style $nom-qui_marche_pas
    - tes compteurs sont inutiles (au pire count($tableau) te retourne ce résultat)
    - il n'y a pas l'air d'avoir de relation entre souscategorie et categorie dans ton code!

    Comme je n'avais pas la motive de corriger une par une ces ch'tiotes erreurs, j'ai re-écrit le code. Je suppose la base de données suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    departement:
      id_departement: INTEGER
      departement:     VARCHAR
     
    categorie:
      id_categorie: INTEGER
      categorie:     VARCHAR
     
    souscategorie:
      id_souscategorie: INTEGER
      id_categorie:       INTEGER  (clé étrangère reflétant la catégorie mère)
      souscategorie:     VARCHAR
    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
     
    <?php
    echo("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
    /*
     * Paramètre BDD
     */
    $serveur = "aaaa";
    $admin   = "aaaaa";
    $mdp     = "aaaaa";
    $base    = "aaaaa";
     
    $idr = isset($_POST['departement'])?$_POST['departement']:null;
    $ics = isset($_POST['categorie'])?$_POST['categorie']:null;
    $idsc = isset($_POST['souscategorie'])?$_POST['souscategorie']:null;
    ?>
     
    <div id="formulaire">
    	Votre departement :<br />
     
    	<?php 
    	$connexion = mysql_pconnect($serveur, $admin, $mdp) or die("Erreur connexion Base de donnée => ". mysql_error());
    	if($connexion != false)
    	{
    		$choixbase = mysql_select_db($base, $connexion);
     
    		$sql1 = "SELECT `id_departement`, `departement`
    				 FROM `departement`        
    				 WHERE `id_region` = '18'
    				 ORDER BY `id_departement`";          
    		$rech_departement = mysql_query($sql1);
     
    		// Tableau des départements de la forme: array( "ID département" => "Département")
    		$arr_departement 	  = array();
    		// Si requête à un résultat
    		if($rech_departement != false) {
    			// On boucle le retour de la requête ligne par ligne
    			while($ligne = mysql_fetch_assoc($rech_departement)) {
    				// On met à jour le tableau
    				$arr_departement[ $ligne['id_departement'] ] = $ligne['departement'];
    			}
    		}
    		?>
     
    	<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdepartement">
    		<select name="departement" id="departement" onchange="this.submit();">
    			<option value="-1">- - - Choisissez votre département - - -</option>
    			<?php
    			// On parcours le tableau ($key correspond à l'id_departement et $val son nom)
    			foreach($arr_departement as $key => $val) {
    			?>
    			<option value="<?php echo $key; ?>"<?php echo (($idr == $code_departement[$i])?" selected=\"selected\"":null); ?>><?php echo $val; ?></option>
    			<?php
    			}
    			?>
            </select>    
        </form>
     
    	<?php
        mysql_free_result($rech_departement);
     
        if($idr != -1 && $idr != null) {
     
    		$sql2 = "SELECT `id_categorie`, `categorie`
    				 FROM `categorie`
    				 ORDER BY `id_categorie`;";
     
    		$rech_categorie = mysql_query($sql2, $connexion);
     
    		$arr_categorie = array();
    		while($ligne_categorie = mysql_fetch_assoc($rech_categorie)){
    			$arr_categorie[ $ligne_categorie['id_categorie'] ] = $ligne_categorie['categorie'];
    		}
     
    		?>
    		Votre catégorie :<br />
    		<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgcategorie">
    			<input type="hidden" name="departement" id="departement" value="<?php echo $arr_departement[$idr]; ?>"/>
    			<select name="categorie" id="categorie" onchange="this.submit();">
    			<?php
    			foreach($arr_categorie as $key => $val) {
    			?>
    				<option value="<?php echo $key; ?>"<?php echo (($ics == $key)?" selected=\"selected\"":null); ?>><?php echo $val; ?></option>
    			<?php
    			}
    			?>
    			</select>
    		</form>
    		<?php
            mysql_free_result($rech_categorie);
        }
     
        if($ics != -1 && $ics != null) {
     
    		$sql3 = "SELECT `id_souscategorie`, `souscategorie`
    				 FROM `sous-categorie`
    				 WHERE `id_categorie` = '".$ics."'
    				 ORDER BY `id_souscategorie`;";
     
    		$rech_souscategorie = mysql_query($sql3, $connexion);
     
    		$arr_souscategorie = array();
    		while($ligne_souscategorie = mysql_fetch_assoc($rech_souscategorie)) {
    			$arr_souscategorie[ $ligne_souscategorie['id_souscategorie'] ] = $ligne_souscategorie['souscategorie'];
    		}
     
    		?>
    		Votre sous-catégorie :<br />
    		<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgsouscategorie">
    			<input type="hidden" name="departement" id="departement" value="<?php echo $arr_departement[$idr]; ?>"/>
    			<input type="hidden" name="categorie" id="categorie" value="<?php echo $arr_categorie[$ics]; ?>"/>
    			<select name="souscategorie" id="souscategorie" onchange="this.submit();">
    			<?php
    			foreach($arr_souscategorie as $key => $val) {
    			?>
    				<option value="<?php echo $key; ?>"<?php echo(($idsc == $key)?" selected=\"selected\"":null); ?>><?php echo $val; ?></option>
    			<?php
    			}
    			?>
    			</select>
    		</form>
    		<?php
            mysql_free_result($rech_souscategorie);
        }
     
        /* Terminé, on ferme la connexion */
        mysql_close($connexion);
     
    	} else {
    		/* Si on arrive là, c'est pas bon signe, il faut vérifier les
    		* paramètres de connexion, mot de passe, serveur pas démarré etc... */
    	}
    ?>
    Dis moi si ça marche et ce que tu en pense!
    Bon dév'

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Par défaut
    non je suis désolé cela ne marche pas le premier menu s'affiche bien et lorsque je choisis un departement rien ne se passe le deuxiéme menu n'apparait pas

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Par défaut
    as tu une solution sil te plait car je bloc dure

Discussions similaires

  1. Problème sur menu déroulant selon requête
    Par Lola21 dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 30/06/2006, 11h05
  2. Problème avec menu déroulants
    Par davinout dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/04/2006, 19h33
  3. [CSS] Problème de menu déroulant
    Par Invité dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 30/03/2006, 10h09
  4. Problème de menu déroulant
    Par sourisleo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/03/2006, 15h46
  5. [CSS] petit problème avec menu déroulant et frame
    Par SylvainB dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 14/02/2006, 14h54

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