Bonsoir

J'ai créé dans ma base de donnée, une table 'games', ou il y a les noms de jeux et la console associée.

J'ai relié une listbox à ma base de donnée, et j'aimerais savoir comment procéder pour relier cette
listbox à une autre listbox, afin que quand je choisisse telle console dans la première listbox, j'ai tel jeu dans la 2éme listbox

Voici le code :

$choix = isset($_POST'choix']) ? $_POST'choix'] : '';

// Connexion à la base de donnée
mysql_connect(DB_HOST, DB_LOGIN, DB_PASS) or die('<h1>Connexion au serveur impossible !</h1>');
mysql_select_db(DB_BDD) or die('<h1>Connexion impossible à la base</h1>');

// Début du script
$query = mysql_query("SELECT * FROM games ORDER BY titre;") or die (mysql_error());
if ($query) {
    echo '<form method="post">';
     echo '<select name="choix">';
    while ($array = mysql_fetch_assoc($query)) {
        if ($choix == $array"id"]) {
            echo '<option value="' . $array'id'] . '" selected>' . $array'titre'] . '</option>';
        } else {
            echo '<option value="'.$array'id'] . '">' . $array'titre'] . '</option>';
        }
    }
    echo '</select>';
    echo '<input type="submit" value="OK">';
    echo '</form>';
    echo '</br>';

D'avance merci, Atome.

7 réponses


Flohw
Réponse acceptée

mh, je pense que si tu maitrise pas encore php, tu devrais essayer soit de simplifier ce que tu veux faire (une page avec le formulaire pour les consoles) puis une fois la console sélectionnée, aller sur la page pour selectionner le jeux...
une fois que tu auras découvert plein d'autres choses fantastiques en php et javascript (ajax etant du javascript) tu pourras t'essayer à faire ce genre de choses parce que là, on va te filler un code, tu va le coller, ca va marcher et tu n'auras rien appris (mon point de vue)

il faut que tu utilises javascript (jquery pour que ce soit plus simple)
quand la premiere listbox (qui s'appelle un select ou combobox), change, il faut que tu change le contenu de la deuxieme...
a partir de là, ce que je ferais : toujours avoir le premier select rempli, donc tu fais toujours ta requete qui récupère le nom des consles
et là tu as deux choix : soit tu récupères toujours la liste de tous les jeux par console dans différentes variables, et tu changes la liste du deuxieme select en fonction du premier ;
soit, tu fais de l'ajax et tu récupère la liste des jeux correspondant a la console dès que tu changes de valeur dans le premier select puis tu recharge le deuxieme select...

Atome
Auteur

Ok merci, je pensais que c'était possible en php, pourrez tu me faire une petite démo pour que je vois comment commencer ?

jQuery(function($){
$('#taPremiereListe').change(function(){
// Ici tu changes la liste, par contre je te donne pas tout le code, il me faudrait un peu de temps pour le concevoir etant donné que je ne l'ai jamais fait mais je pense que tu trouveras facilement comment remplir une liste grâce à JS (tutos sur le net et un peu de logique ou d'adaptation des scripts ;))
});
});

Bonjour,

Tiens regarde ici tu trouvera surement ton bonheur sur une explication Link

Cordialement

Atome
Auteur

Merci à vous deux.

Flohw, j'ai regardé de ce coté, mais je n'avance pas.
Bahamut, j'ai vu cette page, même en recopiant le code et en insérant le code sql, ca ne marche pas.

Etant débutant en php, j'essaye de comprendre le code mais ça n'est pas encore dans mes compétences.

J'ai parcouru nombre de site mais j'avoue ne pas avancer sur ce coup la.

Apparemment c'est possible de réaliser 2 combobox liées en php mais cela inclu de recharger la page, chose qu'on ne ferait pas avec ajax ou javascript. Bref je rame.

J'ai fais ce code mais ça ne marche pas :

// Configuration de la connexion à la base de données
require "../inc/config.php";
 // Connexion à la base de donnée
mysql_connect(DB_HOST, DB_LOGIN, DB_PASS) or die('<h1>Connexion au serveur impossible !</h1>');
mysql_select_db(DB_BDD) or die('<h1>Connexion impossible à la base</h1>');
$console = isset($_console'console']) ? $_console'console'] : '';
$jeux = isset($_POST'jeux']) ? $_POST'jeux'] : '';

        echo '<form method="console"> ';
           echo '<select name="console" size="1" onChange="window.location=document.testform.websites.options[document.testform.websites.selectedIndex].value">' ;
              echo '<option value="PS3">PS3</option> ';
               echo '<option value="Xbox">Xbox</option> ';
              echo '<option value="WII">WII</option> ';
              echo '</select> ';
                echo '<input type="submit" value="OK">';
        echo '</form>';

// Affichage du lien choisi

// Début du script
$query = mysql_query("SELECT * FROM games WHERE console='$console';") or die (mysql_error());
if ($query) {
    echo '<form method="post">';
     echo '<select name="jeux">';
    while ($array = mysql_fetch_assoc($query)) {
        if ($jeux == $array"id"]) {
            echo '<option value="' . $array'id'] . '" selected>' . $array'titre'] . '</option>';
        } else {
            echo '<option value="'.$array'id'] . '">' . $array'titre'] . '</option>';
        }
    }
    echo '</select>';
    echo '<input type="submit" value="OK">';
    echo '</form>';
    echo '</br>';
Atome
Auteur

J'ai trouvé un script ICI

J'aurais voulu savoir de quelle manière on peut récupérer les informations de la seconde liste.

Actuellement il n'y a que le nom de la région, mais si je veux rajouter d'autres colonnes dans la table, comment les afficher en fonction de notre choix ?