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 :

Menu déroulant avec PHP


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burundi

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Points : 17
    Points
    17
    Par défaut Menu déroulant avec PHP
    Je voudrais faire un menu déroulant mais si je sélectionne une région, il faut que j'ai les département qui se trouve dans cette région uniquement et si je sélectionne une localité, que veux avoir les localités qui sont dans ce département uniquement en menu déroulant.
    Donc, j'ai: -Région
    -département
    -localité

    Je vous présente mon code déjà fait mais c'est très mal fait.Je voudrais qu'il ait une partie pour le présentation uniquement et une autre pour le traitement.
    Bonjour!!
    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
     
    <?php
    echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
    /* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
    $serveur = "localhost";
    $admin   = "root";
    $mdp     = "";
    $base    = "regions";
    /* On récupère si elle existe la valeur de la région envoyée par le formulaire */
    $idr = isset($_POST['region'])?$_POST['region']:null;
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
    <title>Sélectionner un département selon la région choisie</title>
    <meta name="description" content="Listes déroulantes dynamiques inter-dépendantes" />
    <meta name="keywords" content="" />
    <meta name="author" content="Cyrano" />
    <meta name="generator" content="Zend Studio Environnement et WebExpert 5" />
    <meta http-equiv="imagetoolbar" content="no" />
    <meta http-equiv="Pragma" content="no-cache" />
    </head>
    <body style="font-family: verdana, helvetica, sans-serif; font-size: 85%">
     
    <?php
    if(isset($_POST['ok']) && isset($_POST['departement']) && $_POST['departement'] != "")
    {
        $region_selectionnee = $_POST['region'];
        $dept_selectionne = $_POST['departement'];
    ?>
    <p>Vous avez sélectionné le département <?php echo($dept_selectionne); ?> dans la région <?php echo($region_selectionnee); ?></p>
    <?php
    }
    ?>
    <h3>Trouver un département</h3>
    <?php
    /* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
    *  car on aura besoin de la connexion un peu plus loin dans le script */
    $connexion = mysql_pconnect($serveur, $admin, $mdp);
    if($connexion != false)
    {
        $choixbase = mysql_select_db($base, $connexion);
        $sql1 = "SELECT `id_region`, `region`".
        " FROM `region`".
        " ORDER BY `id_region`";
        $rech_regions = mysql_query($sql1);
        $code_region = array();
        $region = array();
        /* On active un compteur pour les régions */
        $nb_regions = 0;
        if($rech_regions != false)
        {
            while($ligne = mysql_fetch_assoc($rech_regions))
            {
                array_push($code_region, $ligne['id_region']);
                array_push($region, $ligne['region']);
                /* On incrémente de compteur */
                $nb_regions++;
            }
        }
        ?>
    <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
    <fieldset style="border: 3px double #333399">
    <legend>Sélectionnez une région</legend>
    <select name="region" id="region" onchange="document.forms['chgdept'].submit();">
      <option value="-1">- - - Choisissez une région - - -</option>
        <?php
        for($i = 0; $i < $nb_regions; $i++)
        {
    ?>
      <option value="<?php echo($code_region[$i]); ?>"<?php echo((isset($idr) && $idr == $code_region[$i])?" selected=\"selected\"":null); ?>><?php echo($region[$i]); ?></option>
    <?php
        }
        ?>
    </select>
        <?php
        mysql_free_result($rech_regions);
        /* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */
        if(isset($idr) && $idr != -1)
        {
            /* Cération de la requête pour avoir les départements de cette région */
            $sql2 = "SELECT `id_departement`, `departement`".
            " FROM `departement`".
            " WHERE `id_region` = ". $idr ."".
            " ORDER BY `id_departement`;";
            if($connexion != false)
            {
                $rech_dept = mysql_query($sql2, $connexion);
                /* Un petit compteur pour les départements */
                $nd = 0;
                /* On crée deux tableaux pour les numéros et les noms des départements */
                $code_dept = array();
                $nom_dept = array();
                /* On va mettre les numéros et noms des départements dans les deux tableaux */
                while($ligne_dept = mysql_fetch_assoc($rech_dept))
                {
                    array_push($code_dept, $ligne_dept['id_departement']);
                    array_push($nom_dept, $ligne_dept['departement']);
                    $nd++;
                }
                /* Maintenant on peut construire la liste déroulante */
                ?>
    <select name="departement" id="departement">
                <?php  
                for($d = 0; $d<$nd; $d++)
                {
                    ?>
      <option value="<?php echo($code_dept[$d]); ?>"<?php echo((isset($dept_selectionne) && $dept_selectionne == $code_dept[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_dept[$d]." (". $code_dept[$d] .")"); ?></option>
                    <?php
                }
    ?>
    </select>
    <?php
            }
            /* Un petit coup de balai */
            mysql_free_result($rech_dept);
        }
    ?>
    <br /><input type="submit" name="ok" id="ok" value="Envoyer" />
    </fieldset>
    </form>
    <?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... */
    ?>
    <p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
    <?php
    }
    ?>
     
    </body>
    </html>
    Voici le script de la base de donnée mais il faut ajouté une table localité qui manque
    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
     
    -- 
    -- Base de données: `regions`
    -- 
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `region`
    -- 
     
    CREATE TABLE `region` (
      `id_region`   tinyint(4)   NOT NULL   auto_increment,
      `region`      varchar(50)   NOT NULL   default '',
      PRIMARY KEY  (`id_region`)
    );
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `departement`
    -- 
     
    CREATE TABLE `departement` (
      `id_departement`   char(2)   NOT NULL   default '',
      `departement`      varchar(50)   NOT NULL   default '',
      `id_region`      tinyint(4)   NOT NULL   default '0',
      PRIMARY KEY  (`id_departement`),
      KEY `id_region` (`id_region`)
    );
     
    -- --------------------------------------------------------
     
    -- 
    -- Contenu de la table `region`
    -- 
     
    INSERT INTO `region` VALUES (1, 'Alsace');
    INSERT INTO `region` VALUES (2, 'Aquitaine');
    INSERT INTO `region` VALUES (3, 'Auvergne');
    INSERT INTO `region` VALUES (4, 'Basse-Normandie');
    INSERT INTO `region` VALUES (5, 'Bourgogne');
    INSERT INTO `region` VALUES (6, 'Bretagne');
    INSERT INTO `region` VALUES (7, 'Centre');
    INSERT INTO `region` VALUES (8, 'Champagne');
    INSERT INTO `region` VALUES (9, 'Corse');
    INSERT INTO `region` VALUES (10, 'Franche-Comté');
    INSERT INTO `region` VALUES (11, 'Haute-Normandie');
    INSERT INTO `region` VALUES (12, 'Île-de-France');
    INSERT INTO `region` VALUES (13, 'Languedoc-Roussillon');
    INSERT INTO `region` VALUES (14, 'Limousin');
    INSERT INTO `region` VALUES (15, 'Lorraine');
    INSERT INTO `region` VALUES (16, 'Midi-Pyrénées');
    INSERT INTO `region` VALUES (17, 'Nord-pas-de-Calais');
    INSERT INTO `region` VALUES (18, 'Pays de la Loire');
    INSERT INTO `region` VALUES (19, 'Picardie');
    INSERT INTO `region` VALUES (20, 'Poitou-Charentes');
    INSERT INTO `region` VALUES (21, 'Provence-Alpes-Côte-d\'Azur');
    INSERT INTO `region` VALUES (22, 'Rhône-Alpes');
     
    -- 
    -- Contenu de la table `departement`
    -- 
     
    INSERT INTO `departement` VALUES ('01', 'Ain', 22);
    INSERT INTO `departement` VALUES ('02', 'Aisne', 19);
    INSERT INTO `departement` VALUES ('03', 'Allier', 3);
    INSERT INTO `departement` VALUES ('04', 'Alpes-de-Haute-Provence', 21);
    INSERT INTO `departement` VALUES ('05', 'Hautes-Alpes', 21);
    INSERT INTO `departement` VALUES ('06', 'Alpes-Maritimes', 21);
    INSERT INTO `departement` VALUES ('07', 'Ardèche', 22);
    INSERT INTO `departement` VALUES ('08', 'Ardennes', 8);
    INSERT INTO `departement` VALUES ('09', 'Ariège', 16);
    INSERT INTO `departement` VALUES ('10', 'Aube', 8);
    INSERT INTO `departement` VALUES ('11', 'Aude', 13);
    INSERT INTO `departement` VALUES ('12', 'Aveyron', 16);
    INSERT INTO `departement` VALUES ('13', 'Bouches-du-Rhône', 21);
    INSERT INTO `departement` VALUES ('14', 'Calvados', 4);
    INSERT INTO `departement` VALUES ('15', 'Cantal', 3);
    INSERT INTO `departement` VALUES ('16', 'Charente', 20);
    INSERT INTO `departement` VALUES ('17', 'Charente-Maritime', 20);
    INSERT INTO `departement` VALUES ('18', 'Cher', 7);
    INSERT INTO `departement` VALUES ('19', 'Corrèze', 14);
    INSERT INTO `departement` VALUES ('2A', 'Corse-du-Sud', 9);
    INSERT INTO `departement` VALUES ('2B', 'Haute-Corse', 9);
    INSERT INTO `departement` VALUES ('21', 'Côte-d\'Or', 5);
    INSERT INTO `departement` VALUES ('22', 'Côtes-d\'Armor', 6);
    INSERT INTO `departement` VALUES ('23', 'Creuse', 14);
    INSERT INTO `departement` VALUES ('24', 'Dordogne', 2);
    INSERT INTO `departement` VALUES ('25', 'Doubs', 10);
    INSERT INTO `departement` VALUES ('26', 'Drôme', 22);
    INSERT INTO `departement` VALUES ('27', 'Eure', 11);
    INSERT INTO `departement` VALUES ('28', 'Eure-et-Loir', 7);
    INSERT INTO `departement` VALUES ('29', 'Finistère', 6);
    INSERT INTO `departement` VALUES ('30', 'Gard', 13);
    INSERT INTO `departement` VALUES ('31', 'Haute-Garonne', 16);
    INSERT INTO `departement` VALUES ('32', 'Gers', 16);
    INSERT INTO `departement` VALUES ('33', 'Gironde', 2);
    INSERT INTO `departement` VALUES ('34', 'Hérault', 13);
    INSERT INTO `departement` VALUES ('35', 'Ille-et-Vilaine', 6);
    INSERT INTO `departement` VALUES ('36', 'Indre', 7);
    INSERT INTO `departement` VALUES ('37', 'Indre-et-Loire', 7);
    INSERT INTO `departement` VALUES ('38', 'Isère', 22);
    INSERT INTO `departement` VALUES ('39', 'Jura', 10);
    INSERT INTO `departement` VALUES ('40', 'Landes', 2);
    INSERT INTO `departement` VALUES ('41', 'Loir-et-Cher', 7);
    INSERT INTO `departement` VALUES ('42', 'Loire', 22);
    INSERT INTO `departement` VALUES ('43', 'Haute-Loire', 3);
    INSERT INTO `departement` VALUES ('44', 'Loire-Atlantique', 18);
    INSERT INTO `departement` VALUES ('45', 'Loiret', 7);
    INSERT INTO `departement` VALUES ('46', 'Lot', 16);
    INSERT INTO `departement` VALUES ('47', 'Lot-et-Garonne', 2);
    INSERT INTO `departement` VALUES ('48', 'Lozère', 13);
    INSERT INTO `departement` VALUES ('49', 'Maine-et-Loire', 18);
    INSERT INTO `departement` VALUES ('50', 'Manche', 4);
    INSERT INTO `departement` VALUES ('51', 'Marne', 8);
    INSERT INTO `departement` VALUES ('52', 'Haute-Marne', 8);
    INSERT INTO `departement` VALUES ('53', 'Mayenne', 18);
    INSERT INTO `departement` VALUES ('54', 'Meurthe-et-Moselle', 15);
    INSERT INTO `departement` VALUES ('55', 'Meuse', 15);
    INSERT INTO `departement` VALUES ('56', 'Morbihan', 6);
    INSERT INTO `departement` VALUES ('57', 'Moselle', 15);
    INSERT INTO `departement` VALUES ('58', 'Nièvre', 5);
    INSERT INTO `departement` VALUES ('59', 'Nord', 17);
    INSERT INTO `departement` VALUES ('60', 'Oise', 19);
    INSERT INTO `departement` VALUES ('61', 'Orne', 4);
    INSERT INTO `departement` VALUES ('62', 'Pas-de-Calais', 17);
    INSERT INTO `departement` VALUES ('63', 'Puy-de-Dôme', 3);
    INSERT INTO `departement` VALUES ('64', 'Pyrénées-Atlantiques', 2);
    INSERT INTO `departement` VALUES ('65', 'Hautes-Pyrénées', 16);
    INSERT INTO `departement` VALUES ('66', 'Pyrénées-Orientales', 13);
    INSERT INTO `departement` VALUES ('67', 'Bas-Rhin', 1);
    INSERT INTO `departement` VALUES ('68', 'Haut-Rhin', 1);
    INSERT INTO `departement` VALUES ('69', 'Rhône', 22);
    INSERT INTO `departement` VALUES ('70', 'Haute-Saône', 10);
    INSERT INTO `departement` VALUES ('71', 'Saône-et-Loire', 5);
    INSERT INTO `departement` VALUES ('72', 'Sarthe', 18);
    INSERT INTO `departement` VALUES ('73', 'Savoie', 22);
    INSERT INTO `departement` VALUES ('74', 'Haute-Savoie', 22);
    INSERT INTO `departement` VALUES ('75', 'Paris', 12);
    INSERT INTO `departement` VALUES ('76', 'Seine-Maritime', 11);
    INSERT INTO `departement` VALUES ('77', 'Seine-et-Marne', 12);
    INSERT INTO `departement` VALUES ('78', 'Yvelines', 12);
    INSERT INTO `departement` VALUES ('79', 'Deux-Sèvres', 20);
    INSERT INTO `departement` VALUES ('80', 'Somme', 19);
    INSERT INTO `departement` VALUES ('81', 'Tarn', 16);
    INSERT INTO `departement` VALUES ('82', 'Tarn-et-Garonne', 16);
    INSERT INTO `departement` VALUES ('83', 'Var', 21);
    INSERT INTO `departement` VALUES ('84', 'Vaucluse', 21);
    INSERT INTO `departement` VALUES ('85', 'Vendée', 18);
    INSERT INTO `departement` VALUES ('86', 'Vienne', 20);
    INSERT INTO `departement` VALUES ('87', 'Haute-Vienne', 14);
    INSERT INTO `departement` VALUES ('88', 'Vosges', 15);
    INSERT INTO `departement` VALUES ('89', 'Yonne', 5);
    INSERT INTO `departement` VALUES ('90', 'Territoire de Belfort', 10);
    INSERT INTO `departement` VALUES ('91', 'Essonne', 12);
    INSERT INTO `departement` VALUES ('92', 'Hauts-de-Seine', 12);
    INSERT INTO `departement` VALUES ('93', 'Seine-Saint-Denis', 12);
    INSERT INTO `departement` VALUES ('94', 'Val-de-Marne', 12);
    INSERT INTO `departement` VALUES ('95', 'Val-d\'Oise', 12);

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Euh, sans avoir lu ton code, une idée comme ca .. en Jquery ca t'intéresse pas ? Car le "Jquery autocomplete" est très bien pour trier au fur et à mesure .. et certainement beaucoup plus maintenable.
    Règle N° 1 : Si tout va bien, ne touchez à rien.

Discussions similaires

  1. [MySQL] Menu déroulant avec données sql
    Par matt38 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/08/2012, 23h40
  2. Gestion de deux menu déroulant avec php/Mysql
    Par dragon2 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/01/2008, 19h00
  3. [PHP-JS] Menu déroulant avec proposition de login
    Par xender dans le forum Langage
    Réponses: 1
    Dernier message: 16/05/2006, 14h08
  4. [PHP-JS] besoin d'aide pour menu déroulant avec lien
    Par Damarus dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2005, 18h43
  5. Menu déroulant avec préselection automatique
    Par nesbla dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/06/2005, 12h11

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