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 :

Mise à jour liste déroulante


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Mise à jour liste déroulante
    Bonjour a tous !!
    Après quelques jours de recherche, je me résout a venir demandé de l'aide ici...

    Je suis en train de créer une application web concernant la gestion des bâtiments.
    J'ai créer un formulaires avec trois listes déroulantes :
    - Denomination des batiments (unique)
    - Adresses des batiments (un meme nom pour plusieurs adresses)
    - Type des batiments
    J'aimerai qu'en sélectionnant le nom du batiment dans la 1ere liste, que la 2eme liste avec les adresses des batiments soit mise a jour. Et de meme pour la 3eme en choisissant l'adresse du batiment dans la deuxieme liste...

    J'ai donc modifié mon code en conséquence !!
    Mais voila que lorsque je fais mon choix dans la 1ere liste deroulante, cela se met a jour en remettant la valeur de depart "Veuillez selectionner ...", sans m'afficher la deuxieme liste !!!
    Mon probleme doit venir des actions sur les formulaires ou les listes, mais je ne vois pas ou ... Si quelqu'un pouvait m'aider ...
    Voici le code ==>
    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
     
    <?php
    // Paramètres de connection
    $user = "****";
    $pass = "****";
    $host = "****";
    $bdd = "CG_test";
    ?>
     
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <head>
      <title></title>
    </head>
     
    <body>
     
     
    <?php
    // On récupère si elle existe la valeur du nom de batiment envoyée par le formulaire
    $idBat = isset($_POST['nomSite'])?$_POST['nomSite']:null;
     
    if(isset($_POST['rueSite']) && $_POST['rueSite'] != "")
    {
        $siteSelect = $_POST['nomSite'];
        $adSelect = $_POST['rueSite'];
    }
     
    // Connexion
    $connect = mssql_connect($host,$user,$pass);
    if($connect != false)
    {
    //Sélection de la base
    $db = mssql_select_db($bdd, $connect);
    $sql1 = "SELECT numNomSite, nomSite FROM NOM_SITE ORDER BY nomSite";
    $rechSite = mssql_query($sql1);
    $numSite = array();
    $nomSite = array();
    // On active un compteur pour les sites
    $nbSites = 0;
    if($rechSite != false)
    {
        while($ligne = mssql_fetch_array($rechSite))
        {
            array_push($numSite, $ligne['numNomSite']);
            array_push($nomSite, $ligne['nomSite']);
            // On incrémente de compteur
            $nbSites++;
        }
    }
    ?>
     
    <form name="monFormSite" id="idFormSite" method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
        <p>
            Nom du site :
            <select name="monSite" id="idMonSite" onchange="document.forms['idFormSite'].submit();">
            <option value="-1">Veuillez sélectionner un nom de site</option>
                <?php
                for($i = 0; $i < $nbSites; $i++)
                {
                    ?>
                    <option value="<?php echo($numSite[$i]);?>"<?php echo((isset($idBat) && $idBat == $numSite[$i])?" selected=\"selected\"":null); ?>><?php echo($nomSite[$i]); ?></option>
                    <?php
                }
                ?>
            </select>
        </p>
        <p>
        <?php
        mssql_free_result($rechSite);
        // On commence par vérifier si on a envoyé un numéro de site et le cas échéant s'il est différent de -1
        if(isset($idBat) && $idBat != -1)
        {
            $sql2 = "SELECT ADRESSE_SITE.numAdresseSite, rueSite, ville FROM ADRESSE_SITE, NOM_SITE WHERE ADRESSE_SITE.numNomSite = NOM_SITE.numNomSite
            AND ADRESSE_SITE.numNomSite = '".$idBat."' ORDER BY ville";
            // On récupère les données de la BDD
            $rechAd = mssql_query($sql2);
            // Un petit compteur pour les adresses
            $nbAd = 0;
            // On crée deux tableaux pour les numéros et les adresses des sites
            $numAd = array();
            $rueAd = array();
            //$villeAd = array();
            // On va mettre les numéros et noms des départements dans les deux tableaux
            while($ligneAd = mssql_fetch_array($rechAd))
            {
              array_push($numAd, $ligneAd['numAdresseSite']);
              array_push($rueAd, $ligneAd['rueSite']);
              //array_push($villeAd, $ligneAd['ville']);
              $nbAd++;
            }
            // Maintenant on peut construire la liste déroulante
        ?>
            Adresse du site :
            <select name="monAdresse" id="idMonAdresse">
            <option value="0" selected>Veuillez sélectionner l'adresse du site</option>
                <?php
                for($ad = 0; $d<$nbAd; $ad++)
                {
                ?>
                    <option value="<?php echo($numAd[$d]); ?>"<?php echo((isset($adSelect) && $adSelect == $numAd[$ad])?" selected=\"selected\"":null); ?>><?php echo($rueSite[$ad]." (". $numAd[$ad] .")"); ?></option>
                <?php
                }
            }
     
                ?>
     
            </select>
     
        </p>
     
     
    </form>
    <?php
        /* Terminé, on ferme la connexion */
        mssql_close($connect);
    }
    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>
    Merci d'avance a ceux qui me répondrons

  2. #2
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Bonsoir,

    Il semblerait que tu aies une petite faute de frappe au niveau du name de ton select : monSite != nomSite (par rapport avec le isset à la ligne 20).

    Je n'ai pas regardé le reste mais peut être que çà te débloquera.

    Un conseil qui pourrait te permettre de voir ce genre d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<pre>',print_r($_POST),'<pre>';
    (Bien sûr tu peux faire la même chose avec n'importe quel autre tableau, GET, SESSION, SERVER, FILES, un tableau à toi...)

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Huntress Voir le message
    Bonsoir,

    Il semblerait que tu aies une petite faute de frappe au niveau du name de ton select : monSite != nomSite (par rapport avec le isset à la ligne 20).

    Je n'ai pas regardé le reste mais peut être que çà te débloquera.

    Un conseil qui pourrait te permettre de voir ce genre d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<pre>',print_r($_POST),'<pre>';
    (Bien sûr tu peux faire la même chose avec n'importe quel autre tableau, GET, SESSION, SERVER, FILES, un tableau à toi...)
    Tu parles de cette ligne la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $idBat = isset($_POST['nomSite'])?$_POST['nomSite']:null;
    Ca doit donné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $idBat = isset($_POST['monSite'])?$_POST['nomSite']:null;
    ???
    Je ne comprend pas trop cette ligne de code ... Le '?' attache la liste deroulante au formulaire non ?

  4. #4
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $idBat = isset($_POST['nomSite'])?$_POST['nomSite']:null;
    C'est un opérateur ternaire, c'est équivalent à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isset($_POST['nomSite']))
        $idBat =  $_POST['nomSite']
    else
        $idBat = null;

    As-tu corrigé le name du select ? Est-ce que çà marche maintenant ?

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Ok!! J'avais vraiment pas compris lol
    J'ai donc mis monSite (nom du select) dans les $_POST, maintenant, j'ai bien ma deuxieme liste deroulante qui s'actualise, mais ca me met des choses bizarre ...

    (15)
    ()
    ()
    ()
    ()
    ()
    ...

    Je ne vois pas d'ou il peut sortir ces données la ...
    Pourtant ma requete me parait bonne ...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    J'ai compris d'ou venais mes ()! Mais les données de ma requete en sont pas recupéré, en fait ca m'affiche une longue liste deroulante blanche !! Et en plus, elle en met drolement du temps avant de s'afficher ...

  7. #7
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    re,

    oh oh oh ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for($ad = 0; $d<$nbAd; $ad++)
    >>> $d != $ad

    D'autre part je ne vois pas où tu crées ton tableau $rueSite

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    J'ai finalement résolu mon problème après pas mal de temps et de recherche ...
    Je met mon code ici si cela peut aidé quelqu'un par la suite !

    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
     
    // On récupère si elle existe la valeur du nom de batiment envoyée par le formulaire
    $idBat = isset($_POST['monSite'])?$_POST['monSite']:null;
     
    // On récupère si elle existe la valeur de l'adresse envoyée par le formulaire
    $idAd = isset($_POST['monAdresse'])?$_POST['monAdresse']:null;
     
    // On récupère si elle existe la valeur du type envoyée par le formulaire
    $idType = isset($_POST['monType'])?$_POST['monType']:null;
     
     
    if(isset($_POST['rueSite']) && $_POST['rueSite'] != "")
    {
        $siteSelect = $_POST['nomSite'];
        $adSelect = $_POST['rueSite'];
    }
     
    if(isset($_POST['libelleType']) && $_POST['libelleType'] != "")
    {
        $typeSelect = $_POST['libelleType'];
    }
     
    ?>
    <a href="accueil.php"><button>Retour</button></a>
    <form name="monFormSite" id="idFormSite" method="post" action="">
    <table width="660" border="0" cellspacing="5" align="center">
      <tr>
        <td>Nom du site :</td>
        <td>
        <select name="monSite" id="idMonSite" onchange="document.forms['idFormSite'].submit();">
          <option value="-1">Veuillez sélectionner un nom de site</option>
          <?php
    if($connect != false)
    {
            $sql1 = "SELECT numNomSite, nomSite FROM NOM_SITE ORDER BY nomSite";
            // On récupère les données de la BDD
            $rechSite = mssql_query($sql1);
            if($rechSite != false)
            {
                // On boucle pour afficher les données
                while($ligne = mssql_fetch_array($rechSite))
                {
                    ?>
                    <option value="<?php echo $ligne['numNomSite'];?>"<?php echo((isset($idBat) && $idBat == $ligne['numNomSite'])?" selected=\"selected\"":null); ?>><?php echo$ligne['nomSite']; ?></option>
                    <?php
                }
            }
          ?>
        </select>
        </td>
      </tr>
      <tr></tr>
      <?php
      // On commence par vérifier si on a envoyé un numéro de site et le cas échéant s'il est différent de -1
      if(isset($idBat) && $idBat != -1)
      {
          ?>
          <tr>
            <td>Adresse du site :</td>
            <td>
            <select name="monAdresse" id="idMonAdresse" onchange="document.forms['idFormSite'].submit();">
            <option value="0" selected>Veuillez sélectionner l'adresse du site</option>
            <?php
            $sql2 = "SELECT DISTINCT(ADRESSE_SITE.numAdresseSite), rueSite, ville FROM ADRESSE_SITE, NOM_SITE WHERE ADRESSE_SITE.numNomSite = '".$idBat."' ORDER BY ville";
            // On récupère les données de la BDD
            $rechAd = mssql_query($sql2);
            // On boucle pour afficher les données
            while($ligneAd = mssql_fetch_array($rechAd))
            {
              ?>
              <option value="<?php echo $ligneAd['numAdresseSite'];?>" <?php echo ((isset($idAd) && $idAd == $ligneAd['numAdresseSite'])?" selected=\"selected\"":null) ;?>><?php echo $ligneAd['rueSite'];?></option>';
              <?php
            }
     
            ?>
            </select>
            </td>
            <td>Batiment</td>
            <td><input type="submit" name="supprimerBat" value="Supprimer" onClick = "document.forms['idFormSite'].submit();"/></td>
          </tr>
          <?php
      }
          if(isset($idAd) && $idAd != -1)
          {
          ?>
          <tr>
          <td>Type</td>
          <td>
              <select name="monType" id="idMonType">
                <option value="0" selected>Veuillez sélectionner le type</option>
                  <?php
                  // On commence par vérifier si on a envoyé un numéro de site et le cas échéant s'il est différent de -1
                  $sqlType = "SELECT TYPE_BATIMENT.codeType, libelleType FROM TYPE_BATIMENT, CORRESPONDRE WHERE TYPE_BATIMENT.codeType = CORRESPONDRE.codeType
                  AND CORRESPONDRE.numAdresseSite = '".$idAd."' ORDER BY libelleType";
                  // On récupère les données de la BDD
                  $rechType = mssql_query($sqlType);
                  // On va mettre les numéros et noms des départements dans les deux tableaux
                  while($ligneType = mssql_fetch_assoc($rechType))
                  {
                    ?>
                    <option value="<?php echo $ligneType['codeType']; ?>"<?php echo((isset($idType) && $idType == $numType[$type])?" selected=\"selected\"":null); ?>><?php echo $ligneType['libelleType']; ?></option>
                    <?php
                  }
                  ?>
                </select>
          </td>
          <td>Type</td>
          <td><input type="submit" name="supprimerType" value="Supprimer" onClick = "document.forms['idFormSite'].submit();"/></td>
          </tr>
          <?
          }
          ?>
          <tr></tr>
      <?php
        // Terminé, on ferme la connexion
        mssql_close($connect);
    }
    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, veuillez essayer à nouveau ultérieurement.</p>
        <?php
    }
     
    ?>

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

Discussions similaires

  1. [AC-2003] Mise à jour liste déroulante dans sous-formulaire
    Par jeanpierre78 dans le forum IHM
    Réponses: 2
    Dernier message: 01/04/2011, 21h36
  2. [AC-2003] Mise à jour liste déroulante
    Par cluster26 dans le forum VBA Access
    Réponses: 8
    Dernier message: 22/07/2010, 18h57
  3. [Dojo] Mise à jour liste déroulante, AJAX+Struits
    Par laurent_m dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 20/08/2007, 20h21
  4. mise à jour liste déroulante
    Par stéphane_ais2 dans le forum Access
    Réponses: 32
    Dernier message: 09/11/2005, 16h12
  5. Mise à jour listes déroulantes
    Par mr.t dans le forum ASP
    Réponses: 2
    Dernier message: 20/06/2005, 10h02

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