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 :

Liste déroulante dynamique et selected


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut Liste déroulante dynamique et selected
    Bonjour à tous,

    J'ai lu les cours et les exemples de scripts sur les listes déroulantes dynamiques et le php mais je n'arrive pas à résoudre mon problème.

    Je ne suis pas une développeuse mais juste une bidouilleuse de codes pour arriver à mes fins et ... là j'ai un gros soucis ... Je ne vois pas comment faire pour résoudre mon problème ... et en plus, y'a justement un bout de code que je ne comprend pas à l'endroit où je dois trouver une solution pour me sortir de mon problème.

    Je vous explique :
    - J'ai une formulaire qui charge dynamiquement une liste déroulante "Régions"
    - En fonction du résultat de cette 1er liste déroulante, j'en ai une autre qui s'affiche dynamiquement aussi et qui se nomme "Domaine"

    Est-ce que vous me suivez jusque là ?

    Je dois ensuite envoyer le résutat de ces 2 listes déroulantes vers une autre page qui m'affichera mes infos.

    J'ai 2 soucis :
    1/ Je n'arrive pas à avoir un domaine qui reste sélectionné dans ma 2ème liste déroulante.
    2/ je n'arrive pas à reprendre mes informations vers ma page d'infos.

    Je tourne en rond depuis hier la dessus ...

    Voici pour voir de quoi je parle : ma page

    Et voici mon code php ... désolé, je n'ai pas l'habitude des forums, je ne sais pas si j'ai le droit de mettre tout mon code mais le voici :

    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
    <?php 
    echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"); 
    /* Variables de connexion : ajustez ces paramètres selon votre propre environnement */ 
    $serveur = ""; // voir hébergeur
    $admin = ""; // vide ou "root" en local
    $mdp = ""; // vide en local
    $base = ""; // nom de la BD
    /* 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 domaine selon une région choisie</title> 
    </head> 
    <body> 
    <?php 
    if(isset($_POST['ok']) && isset($_POST['departement']) && $_POST['departement'] != "") 
    { 
        $region_selectionnee = $_POST['region']; 
        $dept_selectionne = $_POST['departement']; 
    ?> 
    <p>
      <?php 
    } 
    ?> 
    </p> 
    <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`, `nom_region` FROM `region` ORDER BY `nom_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['nom_region']); 
     
                /* On incrémente de compteur */ 
                $nb_regions++; 
            } 
        } 
        ?> 
    </h3> 
    <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept"> 
    <table width="225" border="0" cellspacing="0" cellpadding="0">
    	<tr>
    	<td colspan="2">
    	<select name="region" id="region" class="deroulant" onchange="document.forms['chgdept'].submit();"> 
      <option value="-1">~ 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>
    	</td>
        </tr>
         <tr>
         <td colspan="2"><img src="images/spacer.gif" width="1" height="10" /></td>
         </tr>
          <tr>
          <td width="200" height="22"> 
        <?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_domaine, nom_domaine, id_region, region_domaine_ FROM domaine, region WHERE `id_region` = ". $idr ." and region_domaine_ = id_region ORDER BY `nom_domaine`"; 
            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_domaine']); 
                    array_push($nom_dept, $ligne_dept['nom_domaine']); 
                    $nd++; 
                } 
                /* Maintenant on peut construire la liste déroulante */ 
                ?> 
    <select name="domaine" id="departement" class="deroulant" onchange="document.forms['chgdept'].submit()";> 
      <option value="-1">~ Domaine ~</option> 
                <?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].""); ?></option> 
                    <?php 
                } 
    ?> 
    </select> 
    	</td>
        <td width="25">
      <?php 
            } 
            /* Un petit coup de balai */ 
            mysql_free_result($rech_dept);
    		$region=$_POST['region'];
    		$domaine=$_POST['domaine'];
    ?> 
    </form> 
      <a href="domaine.php?region=$region&&domaine=$domaine" target="_parent"><img src="images/bt.gif" alt="" border="0"/></a>
      </input>
          <?php    } ?>
    </td>
    </tr>
    </table> 
    <?php echo $_POST['region']." - ".$_POST['domaine']; ?>
    <?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>
    Si vous comprennez d'où vient mes problèmes ... j'attend vos remarques !

    Merci pour votre aide future.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    Deux choses :
    Tout d'abord, l'envoi des infos à la page suivante se fait (je suppose) par ce lien :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="domaine.php?region=$region&&domaine=$domaine" target="_parent"><img src="images/bt.gif" alt="" border="0"/></a>
    D'où petit problème : un seul & est nécessaire entre les 2 variables et le html ne connait ni $region, ni $domaine Je te conseille de passer tout ça en restant dans le code php.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="domaine.php?region='.$region.'&domaine='.$domaine.'" target="_parent"><img src="images/bt.gif" alt="" border="0"/></a>';

    Ensuite, au début de ton script tu testes la variable $_POST['ok']. Mais je n'ai pas trouvé le champ qui lui correspond. Erreur de copier/coller ou oubli ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Oh merci Celira !
    Alors mon bouton fonctionne (en effet que je suis bete mes variables n'étaient pas dans mon PHP !! ) et me renvoit bien mes informations sur ma page suivante.

    Par contre, j'ai enlevé le $_POST['ok'] en haut de mon code car je n'en n'ai plus besoin puisque c'est le bouton dont on parle au dessus qui fait la lien mais ... le selected pour les domaines ne fonctionne toujours pas ... et je ne vois pas d'où ca vient.
    Ca fonctionne très bien pour la région et pour le domaine non alors que ca fonctionne sur le même principe ... je commence à désespérer ...

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Il doit y avoir un problème sur la ligne d'option. A première vue le problème vient sans doute de $dept_selectionne.

    Ce que tu peux faire pour vérifier, c'est ajouter un echo là où tu affectes $dept_selectionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $dept_selectionne = $_POST['departement'];
    echo "departement : $dept_selectionne";
    Et également un print_r($_POST) à le fin de ton script pour voir quelles variables sont réellement passées.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Et bien merci Celira !
    En fait $_POST['departement'] ne pouvais être que vide puisque mon champ s'appelle "domaine" et non "département" ...
    C'est en essayant de reprendre la variable que je m'en suis appercu ! merci beaucoup ! ca fonctionne très bien maintenant,

    On se prend souvent le crane sur des petites bétises d'innatention !

    Merci encore pour tout !!

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    De rien !

    On se prend souvent le crane sur des petites bétises d'innatention !
    Encore plus que tu ne crois ! Une fois, on a cherché pendant 2 pages, en s'y mettant à 3 ou 4 un problème qui venait d'un = manquant entre value et la valeur. Ce genre de code là :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" value"15">
    Et en plus ça ne renvoie pas d'erreur (ça ne renvoie rien du tout en fait)

    N'oublie pas le
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. Selected par défaut dans liste déroulante dynamique
    Par casimirine dans le forum Langage
    Réponses: 2
    Dernier message: 25/06/2013, 10h33
  2. Liste déroulante dynamique et selected
    Par Adaviada dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/08/2007, 15h53
  3. [HTML] liste déroulante dynamique
    Par lacousinee dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/08/2005, 20h51
  4. Liste déroulante dynamique ?
    Par Regis.C dans le forum Composants
    Réponses: 5
    Dernier message: 29/06/2005, 12h09
  5. [FORMULAIRE] Liste déroulante dynamique
    Par bchristo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/01/2005, 10h07

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