Liste imbriquant 2 tables ? [Résolu]

Messages postés
61
Date d'inscription
dimanche 11 novembre 2007
Statut
Membre
Dernière intervention
18 septembre 2010
- - Dernière réponse : syndrael
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
- 19 sept. 2010 à 10:17
Bonsoir,

Je souhaites dans une page php mettre 2 choix via 2 listes.
La seconde liste sera différente en fonction du choix effectué dans la première liste.
Le contenu de chaque liste fait parti d'une table différente dans une base phpmyadmin.

Le premier choix: c'est une liste de région ( nord,nord est,nord ouest,sud,sud est,sud ouest,dom,tom
Le second choix est une liste des départements en fonction de la région choisie.

Je cherche à n'afficher dans la seconde liste seulement les départements de la région choisi dans la première liste.

Voici le code que j'ai mis pour la liste déroulante pour le choix de la région:


<?php

//----------------------------------------------------------------------------------------------------------------------------------------------
Debut Fonction pour la liste des regions
//----------------------------------------------------------------------------------------------------------------------------------------------

function remplir_liste_region()
{
$lien = mysql_connect("localhost","root","") ;
mysql_select_db("monde",$lien) ;
$ls_region_select = "select region from region order by region" ;
$rs = mysql_query($ls_region_select, $lien) ;
while ($enregion = mysql_fetch_row($rs)) print("<option value="$enregion[0]">$enregion[0]</option>") ;
mysql_free_result($rs) ;
mysql_close($lien) ;
}
?>

<?php
if(isSet($_GET["lb_regions"]))
{
$li_region = $_GET["region"] ;
$lien = mysql_connect("localhost","root","") ;
$bd = mysql_select_db("monde",$lien) ;
mysql_close($lien) ;
}

//----------------------------------------------------------------------------------------------------------------------------------------------
Fin Fonction pour la liste des regions
//----------------------------------------------------------------------------------------------------------------------------------------------


<?php

//----------------------------------------------------------------------------------------------------------------------------------------------
Debut Fonction pour la liste des departements
//----------------------------------------------------------------------------------------------------------------------------------------------


function remplir_liste_departements()
{
$lien = mysql_connect("localhost","root","") ;
mysql_select_db("ipterre",$lien) ;
$ls_select = "select 'numero as' from 'echo .$region 'order by 'numero as'" ;
$rs = mysql_query($ls_select, $lien) ;
while ($enras = mysql_fetch_row($rs)) print("<option value="$enras[0]">$enras[0]-$enras[1]</option>") ;
mysql_free_result($rs) ;
mysql_close($lien) ;
}
?>

<?php
if(isSet($_GET["lb_departements"]))
{
$li_id_auteur = $_GET["numero as"] ;
$lien = mysql_connect("localhost","root","") ;
$bd = mysql_select_db("ipterre",$lien) ;
mysql_close($lien) ;
}
?>


//----------------------------------------------------------------------------------------------------------------------------------------------
Fin Fonction pour la liste des departements
//----------------------------------------------------------------------------------------------------------------------------------------------


?>


<-- ------------------------------------------------------------------------------------------------------------------------------------------- -->

<-- Cadre dans lequel se trouve la liste des regions -->



Choix de la région

<select name="lb_regions">
<?php
echo remplir_liste_region() ;
?>
</select>




<-- Fin du Cadre dans lequel se trouve la liste des regions -->

<-- ------------------------------------------------------------------------------------------------------------------------------------------- -->

<-- Cadre dans lequel se trouve la liste des departements-->



Choix du departements

<select name="lb_departements">
<?php
echo remplir_liste_departements() ;
?>
</select>




<-- Fin du Cadre dans lequel se trouve la liste des departements-->

<-- ------------------------------------------------------------------------------------------------------------------------------------------- -->




Merci pour vos reponses.



Benoît
@+
Afficher la suite 

11 réponses

Meilleure réponse
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
3
Merci
Salut,

Sujet maintes fois évoqué.

Je n'ai que jeté un très rapide coup d'oeil à ton code mais n'ai vu nul part trace de Javascript ... ça serait pourtant une bonne idée.

Il existe pas mal de tutos un peu partout (qui utilisent Ajax)
De mémoire il y en a un bien foutu sur ce site, écrit par Neigedhiver il me semble.

Une petite recherche sur les tutos devrait t'y amener.


Cordialement,


Kohntark -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 205 internautes nous ont dit merci ce mois-ci

Commenter la réponse de kohntark
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13
3
Merci
Merci Kohntark... Mon tuto est encore sur la page d'accueil, c'est dire s'il est bien planqué : http://www.phpcs.com/tutoriaux/LIER-DEUX-LISTES-SELECT_1033.aspx

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 205 internautes nous ont dit merci ce mois-ci

Commenter la réponse de neigedhiver
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
11
0
Merci
C'est bête mais il essaie peut-être de faire son remplissage de select après un submit de son formulaire. Peut-être le Javascript n'est pas encore à sa portée.
Par contre c'est clair que si des tuto existent (et je remercie ceux qui prennent le temps d'en faire..), c'est tojours utile de se demander s'il faut ré-inventer la roue..
S.
Commenter la réponse de syndrael
Messages postés
61
Date d'inscription
dimanche 11 novembre 2007
Statut
Membre
Dernière intervention
18 septembre 2010
0
Merci
Bonjour,

Vous avez tous raisons
Merci
Je ne veut pas réinventer la poudre mais quand on ne connait pas on cherche toujours un peu a faire par soi même avant de demander de l'aide.
Je vais donc utiliser le tuto .



Benoît
@+
Commenter la réponse de bakalai
Messages postés
61
Date d'inscription
dimanche 11 novembre 2007
Statut
Membre
Dernière intervention
18 septembre 2010
0
Merci
Re Bonjour,

C'est quand m^me un peu chaud ce tuto "Lier deux listes <select>" pour un débutant.
J'essaye mais je n'y arrive pas.

C'est peu être clair pour vous qui touchez à ces différents langages tous les jours mais pour les autres ....

Benoît
@+
Commenter la réponse de bakalai
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Je dirai que tu ne peut pas mieux tomber pour l'aide : l'auteur du tuto suit cette discussion

Je ne l'ai pour ma part pas relu, mais n'hésite pas à poser tes interrogations.

Cordialement,


Kohntark -
Commenter la réponse de kohntark
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13
0
Merci
Moi je veu bien aider, mais "je n'y arrive pas" ne m'indique pas quelle aide je peux apporter ;)

J'ai tenté de faire un tuto clair, mais je dois reconnaître qu'il nécessite quand même quelques notions de Javascript et de PHP.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Commenter la réponse de neigedhiver
Messages postés
61
Date d'inscription
dimanche 11 novembre 2007
Statut
Membre
Dernière intervention
18 septembre 2010
0
Merci
Bonjour,


Ok merci,

Ma premiere question :
J'a bien vu qu'il fallait une page avec la connexion a la db.

Mais faut il une page en php pour la lecture de 2 tables de ma base et une seconde en html pour l'affichage et le raffraichissement en fonction de mon premier Choix?

Ps :

je n'y connait strictement rien en java.
J'utilise ce qui existe sans trop comprendre des fois mais j'essaye de comprendre .

Benoît
@+
Commenter la réponse de bakalai
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Je n'ai toujours pas relu le tuto, mais le schéma traditionnel reste celui ci :


(1)Page HTML avec script Javascript (Ajax)

<==============>

(2)Script PHP

<==============>

(3)Base de données (mySQL)


- l'utilisateur fait un choix dans le premier select de 1 (une région)
- le script Javascript intercepte ce choix et l'envoie via Ajax à 2
- 2 interroge 3 qui fournie tous les résultats. En l'occurrence il renvoie tous les départements de la région demandée
- 2 renvoie vers 1 les résultats
- le script JS de 1 se charge d'afficher le second select avec les résultats reçus

Ce ne sont que les grandes lignes, et j'imagine que le tuto de Neige suit ce schéma (va falloir que je prenne quelques minutes pour le relire)

Ca peut te paraître compliqué, mais c'est en fait très simple.
Hormis le fait que l'utilisateur n'ait pas à recharger la page, cette méthode permet un découpage qui s'avère bien souvent plus simple que l'utilisation d'un submit de formulaire.


Cordialement,


Kohntark -
Commenter la réponse de kohntark
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13
0
Merci
Tant pis si tu n'y connais rien à Java, ici on va utiliser Javascript.

Pour être plus précis :
- La "page" qui est affichée à l'utilisateur doit afficher la première liste. Pour cela, un script PHP interroge la base de données pour la remplir avec les données qui vont bien. Qu'il soit séparé, intégré à la page HTML, on s'en fout un peu d'un point de vu fonctionnel (tant que ça marche, après, l'esthétique et tout ça, c'est presque accessoire)
- La "requête Ajax" doit "interroger" la base de données. Pour cela, il faut un script PHP dont le seul et unique rôle est de fournir le contenu de la seconde liste en fonction du choix dans la première (qui est donc un argument passé au script via la variable $_GET).
- Javascript va ensuite, avec ce résultat, remplir la seconde liste (éventuellement même, l'afficher si elle était d'abord cachée).

En gros, tu as besoin effectivement d'interroger deux fois la base de données, une fois pour chaque liste. La première fois "dans la page" principale, la seconde via un script dédié.

Dans mon tuto, j'utilise jQuery, parce que moi non plus, Javascript, je suis un peu réfractaire et jQuery permet de s'affranchir de pas mal de corvées. La partie Javascript du tuto ne représente franchement pas grand chose, grâce à jQuery : la doc de jQuery explique très bien comment fonctionnent les requêtes Ajax. Après, ce n'est que de l'adaptation à ce qu'on a.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Commenter la réponse de neigedhiver
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
11
0
Merci
C'est bête à dire mais notre ami ne semble pas avoir les bases en PHP.. donc si on lui rajoute Ajax, Javascript et tout le toutim ça va être chaud non ??
S.
Commenter la réponse de syndrael