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 :

Listes déroulantes dynamiques liées


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 3
    Par défaut Listes déroulantes dynamiques liées
    Bonjour à toutes et à tous,
    Petit nouveau sur le site, je m'essaye au php,
    J'ai cherché à créer des listes déroulantes dynamiques liées tirées d'une table de BDD.
    En gros, le choix dans une première liste (continent)fait apparaître une seconde liste dépendante de la première (pays)et ainsi de suite (theme), un classique vous me direz. Mais je le veux sans javascript !!!
    J'y suis arrivé, (en faisant un peu, beaucoup de copier coller, merci aux auteurs)et j'obtiens en URL par exemple
    .....php?continent=AFRIQUE&pays=ALGERIE&theme=AGRICOLE.
    Mon soucis, une fois mes 3 listes affichées, lorsque je veux changer le choix de ma première liste, la seconde se réinitialise mais pas la troisième et je n'arrive pas à obtenir .....php?continent=AFRIQUE seul et que &pays=..... ne s'affiche pas tant que je n'ai pas validée la seconde liste. Ni non plus à ce que la 3ème liste se vide ou du moins remette la valeur par défaut.
    Si vous avez une idée.
    Je ne sais pas si je suis clair dans mes explications, vous me direz et voudrez bien m'en excuser.
    Ci-après le script pour info.
    Merci et bonne soirée.

    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
     
    <?php require_once('Connections/maconnection.php');
    $table = 'article';
    if (isset($_GET['continent']))
    { $valeurA = mysql_real_escape_string($_GET['continent']); }
    else
    { $valeurA = ''; }
    if (isset($_GET['pays']))
    { $valeurB = mysql_real_escape_string($_GET['pays']); }
    else
    { $valeurB = ''; }
    if (isset($_GET['theme']))
    { $valeurC = mysql_real_escape_string($_GET['theme']); }
    else
    { $valeurC = ''; }
     
    ?>
    <?php
    if (!function_exists("GetSQLValueString"))
    {function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
    {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
    $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
    switch ($theType)
    {
    case "text":
    $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
    break;
    case "long":
    case "int":
    $theValue = ($theValue != "") ? intval($theValue) : "NULL";
    break;
    case "double":
    $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
    break;
    case "date":
    $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
    break;
    case "defined":
    $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
    break;
    }
    return $theValue;
    }
    }
     
    mysql_select_db($database_madatabase, $mabdd);
    $query_article = "SELECT * FROM article WHERE id = id";
    $article = mysql_query($query_article, $mabdd) or die(mysql_error());
    $row_article = mysql_fetch_assoc($article);
    $totalRows_article = mysql_num_rows($article);
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <title>essai_3_listes</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
    <style type="text/css">
    <!--
    .Style5 {font-size: 18}
     
    -->
    </style>
    </head>
     
     
    <body>
     
     
    <div id="apDiv12">
     
     
     
    <form id="copath" method="GET" >
     
    <span class="Style1 Style5">Vous pouvez effectuer une recherche par <strong>Continent , Pays et Th&egrave;me.</strong></span> <br />
    <select name="continent" onchange="document.getElementById('copath').submit();">
    <option value="">Choisissez un Continent</option>
    <?php
    $SQL_A = 'SELECT DISTINCT continent FROM '. $table. ' ORDER BY continent ASC';
    $result_A = mysql_query($SQL_A);
    while ($val_A = mysql_fetch_array($result_A))
    {
    if ($valeurA == $val_A['continent'])
    {
    $selection = ' selected';
    }
    else
    {
    $selection = '';
    }
    echo '<option value="'. $val_A['continent'] .'"'. $selection .'>';
    echo $val_A['continent'];
    echo '</option>';
    }
    echo '</select>';
    echo $val_C[''];
    mysql_free_result($result_A);
     
    if ($valeurA != '')
    {
    $SQL_B = 'SELECT DISTINCT pays FROM '. $table .' WHERE continent = \''. $valeurA .'\'';
    $SQL_B .= ' ORDER BY pays ASC';
    $result_B = mysql_query($SQL_B);
     
    ?>
     
    <select name="pays" onchange="document.getElementById('copath').submit();">
    <option value="">Choisissez un Pays</option>
     
    <?php
    while ($val_B = mysql_fetch_array($result_B))
    {
    if ($valeurB == $val_B['pays'])
    {
    $selection = ' selected';
    $valeurid = $val_B['id'];
    }
    else
    {
    $selection = '';
    }
    echo '<option value="'. $val_B['pays'] .'"'. $selection .'>';
    echo $val_B['pays'];
    echo '</option>';
    }
    echo '</select>';
    mysql_free_result($result_B);
    if ($valeurB != '')
    {
    $SQL_C = 'SELECT DISTINCT theme FROM '. $table .' WHERE pays = \''. $valeurB .'\'';
    $SQL_C .= ' ORDER BY theme ASC';
    $result_C = mysql_query($SQL_C);
    ?>
    <br/>
    <select name="theme" onchange="document.getElementById('copath').submit();">
    <option value="">Choisissez un Thème</option>
    <?php
    while ($val_C = mysql_fetch_array($result_C))
    {
    if ($valeurC == $val_C['theme'])
    {
    $selection = ' selected';
    $valeurid = $val_C['id'];
    }
     
    else
    {
    $selection = '';
    }
    echo '<option value="'. $val_C['theme'] .'"'. $selection .'>';
    echo $val_C['theme'];
    echo '</option>';
    }
    echo '</select>';
    mysql_free_result($result_C);
    }
    }
     
    ?>
    </form>
    </div>
     
    </body>
    </html>
    <?php
    mysql_free_result($article);
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Moi j'ai compris car j'ai déjà du faire un truc comme ca.
    Etant donné qu'affichage d'une liste n'a de sens que si la précédente est remplie tu peux n'afficher que les listes utiles.

    Si rien n'est posté : affiche liste continent
    Si continent est posté : affiche liste continent et pays
    Si pays est posté : affiche liste continent - pays et theme
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 3
    Par défaut
    Bonjour,
    Je te remercie pour ta réponse.
    Je vais tenter de coder ça, aïe aïe aÏe.
    c'est mon tout premier script, mais en cherchant bien je devrai trouver.
    Bonne journée.

  4. #4
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 3
    Par défaut Sans sucès
    Bonsoir,
    j'ai bien essayé de coder mais avec le peu d'expérience que j'ai, je n'y suis pas arrivé.
    si tu as 5 minutes à perdre, j'accepte bien volontiers un petit coup de pouce.
    Bonne soirée

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/03/2011, 16h43
  2. Listes déroulantes dynamiques liées envoyant sur une url prédéfinie
    Par Plastifieurs dans le forum Bibliothèques & Frameworks
    Réponses: 7
    Dernier message: 23/07/2010, 22h19
  3. [MySQL] Listes déroulantes dynamiques liées
    Par kopax dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 10/04/2010, 11h49
  4. Réponses: 2
    Dernier message: 12/02/2010, 10h57
  5. listes déroulantes dynamiques liées
    Par warwill dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 19/12/2007, 19h40

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