menu déroulant dynamique, besoin d'aide, Merci d'avance:)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : menu déroulant dynamique, besoin d'aide, Merci d'avance:)

par Cyrano » 08 juil. 2007, 00:55

Je dirais que tu as une erreur de conception à la base.

Ta table infos ne devrait avoir qu'une colonne idrubrique en clé étrangère tandis que ta table tbrubrique devrait avoir une colonne idrubriqueparent en clé étrangère vers elle-même en plus de la clé primaire idrubrique et pas de table tbsousrubrique

Comme ça tu rattaches une info à une rubrique et celle-ci peut être soit une rubrique "maitre" soit une sous-rubrique. Comme ça, tu définis d'abord tes rubriques/sous-rubriques et tu y rattaches ensuite les infos.

Supposons donc le jeu d'essai suivant :
-1- Les rubriques :

Code : Tout sélectionner

mysql> SELECT * FROM rubrique; +--------+---------------+---------------+ | rub_id | rub_id_parent | rub_libelle | +--------+---------------+---------------+ | 1 | NULL | Développement | | 2 | NULL | Environnement | | 3 | 1 | PHP | | 4 | 1 | JavaScript | | 5 | 2 | Navigateurs | | 6 | 2 | Éditeurs | +--------+---------------+---------------+ 6 rows in set (0.00 sec)
-2- Les infos :

Code : Tout sélectionner

mysql> SELECT * FROM infos; +--------+--------+---------------------+---------------------------------------------------------------------------------------------------+ | inf_id | rub_id | inf_date | inf_sujet | +--------+--------+---------------------+---------------------------------------------------------------------------------------------------+ | 1 | 3 | 2007-07-08 00:42:44 | La programmation en PHP demande de la rigueur et de la logique | | 2 | 4 | 2007-07-08 00:42:44 | Le JavaScript est un langage dit client... | | 3 | 5 | 2007-07-08 00:42:44 | Le bon développeur teste ses développements sur différents navigateurs... | | 4 | 6 | 2007-07-08 00:42:44 | On peut programmer en PHP simplement avec le Bloc-Note ou encore utiliser un éditeur plus avancé. | +--------+--------+---------------------+---------------------------------------------------------------------------------------------------+ 4 rows in set (0.00 sec)
À partir de là, on peut extraire toutes les informations comme l'illustre ton image :

Code : Tout sélectionner

mysql> SELECT i.inf_date AS 'Date', r1.rub_id AS 'Rubrique', r2.rub_id AS 'Sous-Rubrique', i.inf_sujet AS 'Sujet' -> FROM infos i, rubrique r1, rubrique r2 -> WHERE i.rub_id = r2.rub_id -> AND r1.rub_id = r2.rub_id_parent; +---------------------+----------+---------------+---------------------------------------------------------------------------------------------------+ | Date | Rubrique | Sous-Rubrique | Sujet | +---------------------+----------+---------------+---------------------------------------------------------------------------------------------------+ | 2007-07-08 00:42:44 | 1 | 3 | La programmation en PHP demande de la rigueur et de la logique | | 2007-07-08 00:42:44 | 1 | 4 | Le JavaScript est un langage dit client... | | 2007-07-08 00:42:44 | 2 | 5 | Le bon développeur teste ses développements sur différents navigateurs... | | 2007-07-08 00:42:44 | 2 | 6 | On peut programmer en PHP simplement avec le Bloc-Note ou encore utiliser un éditeur plus avancé. | +---------------------+----------+---------------+---------------------------------------------------------------------------------------------------+ 4 rows in set (0.00 sec)
Et éventuellement on peut faire plus présentable en mettant directement les libellés:

Code : Tout sélectionner

mysql> SELECT i.inf_date AS 'Date', r1.rub_libelle AS 'Rubrique', r2.rub_libelle AS 'Sous-Rubrique', i.inf_sujet AS 'Sujet' -> FROM infos i, rubrique r1, rubrique r2 -> WHERE i.rub_id = r2.rub_id -> AND r1.rub_id = r2.rub_id_parent; +---------------------+---------------+---------------+---------------------------------------------------------------------------------------------------+ | Date | Rubrique | Sous-Rubrique | Sujet | +---------------------+---------------+---------------+---------------------------------------------------------------------------------------------------+ | 2007-07-08 00:42:44 | Développement | PHP | La programmation en PHP demande de la rigueur et de la logique | | 2007-07-08 00:42:44 | Développement | JavaScript | Le JavaScript est un langage dit client... | | 2007-07-08 00:42:44 | Environnement | Navigateurs | Le bon développeur teste ses développements sur différents navigateurs... | | 2007-07-08 00:42:44 | Environnement | Éditeurs | On peut programmer en PHP simplement avec le Bloc-Note ou encore utiliser un éditeur plus avancé. | +---------------------+---------------+---------------+---------------------------------------------------------------------------------------------------+ 4 rows in set (0.00 sec)
Voilà, analyse bien tout ça, tu ne devrais pas avoir trop de difficultés à saisir l'intérêt de la modification suggérée :)

par laurwinl » 08 juil. 2007, 00:21

Bonjour

Merci thehawk pour ton lien qui m'a beaucoup aider.... j'ai vite réglé mon soucis avec ce site...

J'ai un autre soucis plus facile, je dirais meme que c'est la béa ba du php, mais voila, je débute :)

Voila donc le probleme ^^ :

J'ai 3 tables dans ma BDD

1) infos avec les champs : id / date / sujet / idrubrique / idsousrubrique

2) tbrubrique avec les champs : id / rubrique

3) tbsousrubrique avec les champs : id / sousrubrique / idrubrique

Je récupere toutes les infos qui se trouvent dans ma table infos par une boucle whil
Jusque là, pas de soucis

mais j'aimerais pouvoir récuperer le nom qui correspond à la rubrique de l'id dans le champs idrubrique de ma table infos qui se trouve donc dans ma table tbrubrique

Je dois donc par rapport au champs idrubrique de la table infos affichier le nom qui se trouve dans le champs rubrique de la table tbrubrique grace à l' ID

voici l'image pour mieux comprendre : Image
Shot at 2007-07-07


Je dois donc faire la meme chose avec la sous rubrique...
Je suis perdue ^^

Merci d'avance à tous ^^

par Invité » 07 juil. 2007, 19:06

Bonjour tout le monde :) J'ai réussi a faire ce dont j'avais besoin, j'ai juste un soucis je pense d'incompatibilité avec IE de innerHTML

Mon code de la page script.php

Code : Tout sélectionner

/* PAR AVOCK */ var retour = ''; var tableau = new Array(); // En premier dans chaque ligne le nom de la région suivit du nom des villes <?php mysql_select_db('xx', mysql_connect('xx', 'xx', 'xx')); $ssrubriques = array(); $retour_sql = mysql_query("SELECT rubrique, sousrubrique FROM tblsousrubrique") or die(mysql_error()); while ( $resultat = mysql_fetch_assoc( $retour_sql ) ) { $ssrubriques[$resultat['rubrique']] .= ', \''.$resultat['sousrubrique'] .'\''; } $i = 0; $retour_sql = mysql_query("SELECT rubrique FROM tblrubrique") or die(mysql_error()); while ( $resultat = mysql_fetch_assoc( $retour_sql ) ) { $rub_mere = $resultat['rubrique']; echo 'tableau['. $i .'] = new Array(\''. $rub_mere .'\''.$ssrubriques[$rub_mere].');'; echo "\r\n"; $i++; } ?> function get_ss_rub(id_rub) { for (var i=1; i<tableau[id_rub].length; i++) { retour += '<option value="'+tableau[id_rub][i]+'">'+tableau[id_rub][i]+'</option>'; } document.getElementById('2emeselect').innerHTML = retour; retour = ''; } function get_Rub() { for (var i=0; i<tableau.length; i++) { retour += '<option value="'+tableau[i][0]+'" onclick="get_ss_rub('+i+')">'+tableau[i][0]+'</option>'; } document.getElementById('1erselect').innerHTML = retour; retour = ''; }
et mon code html dans index.html

Code : Tout sélectionner

<html> <head> <script type="text/javascript" src='script.php'></script> </head> <body onload = "get_Rub()"> <form> <select name="1erchoix" id="1erselect"></select> <select name="2emechoix" id="2emeselect"></select> </form> </body> </html>
on m'a dit que c'etait surment a cause de getElementById

Quelqu'un saurait m'aider s'il vous plait ?

par thehawk » 06 juil. 2007, 16:52

Et puis on est la pour t aidez ^^

par laurwinl » 06 juil. 2007, 16:38

lol ^^ okidoki, merci ^^ je comprenais pas grand chose, j'ai peut etre un espoir alors :)

Merci encore =)

par thehawk » 06 juil. 2007, 16:05

je me suis tromper d adresse je vien d editer relis mon post ^^

Bonne journée

@+thehawk

par laurwinl » 06 juil. 2007, 16:03

Bonjour et merci d'avoir répondu si vite :)

Je regarde donc en profondeur la fonction d'ajax, forcément, je suis partie sur une mauvais base...

J'espere trouver la solution ici, Merci beaucoups, je te tiens au courant

Si d'autres ont des suggestions, je suis toute ouïe :)

Merci encore =)

par thehawk » 06 juil. 2007, 15:58

Ce que tu cherche a faire appartient au domaine de l ajax , où lorsque l'on selectionne dans ton premier champ une donnée elle s'afficher "simultanément" dans la seconde liste deroulante .

Ainsi ton probleme est solvable en cherchant sur google : "Autocompletion Ajax" et avec notre ami google , on tombe sur ce site qui traite dans un exemple ton probleme :

@+ thehawk

Bon vu que je suis gentil aujourd'hui voici le lien : Developpez

Edit je me suis tromper d adresse la voici ^^
La bonne adresse
Pourquoi pas un design ^^

menu déroulant dynamique, besoin d'aide, Merci d'avance:)

par laurwinl » 06 juil. 2007, 15:25

Bonjour,

Depuis bien deux jours, je suis dessus... hélas sans trover la solution...


Mon probleme :

Je voudrais ajouter à mon formulaire actuel deux menus déroulants, le premier m'affiche une liste de rubrique issus de la BDD, et le second, les sous rubriques en fonction de la rubrique selectionnée précedemment...

donc toutes mes infos viennent de table dans la BDD

il y a la table :
tblrubrique avec les champs : ID / RUBRIQUE

Et une table :
tblsousrubrique avec les champs : ID / RUBRIQUE / SOUSRUBRIQUE

Donc je suppose que pour faire un lien entre rubrique et sousrubrique pour faire en sorte que ma liste déroulante des sous rubriques corresponde à la rubrique sélectionnée il faut un code qui dit :

"si rubrique de la table tblsousrubrique est égale à la rubrique de la table tblrubrique, alors affiche les sousrubriques qui correspondent à la rubrique sélectionnée."

??

Après ceci, tous les résultats des champs de mon formulaire y compris les listes déroulantes seront stoquées dans une autre table pour les ressortir plus tard sur une autre page. je dois donc récuperer les données de chaque champs du formulaire...

quelqu'un peut il m'éclairer ??? me donner un lien ou n'importe qui pourrait m'avancer ??

Je remercie mille fois les personnes qui prendront le temps de me lire et de m'aider, j'en ai vraiment besoin, je suis prête à rentre service de graphisme en échange....

Merci,

Laureen