Combo maitre/détail ... [Résolu]

Messages postés
62
Date d'inscription
mercredi 3 novembre 2004
Statut
Membre
Dernière intervention
5 mai 2010
- - Dernière réponse : ehmarc
Messages postés
393
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
29 septembre 2008
- 4 nov. 2004 à 14:21
Hello !

J'ai un petit problème avec un formulaire que je suis en train de créer. En effet, je voudrais créer une relation maitre/détail, qui se mettre à jour automatiquement.

Par exemple quand je fais mon choix dans la combo categorie, je voudrais que la liste des sous-categories s'afficher dans la combo en dessous. Un fonctionnement pourtant simple et standard (dans d'autres langages), mais là je sèche (PHP-SQL-HTML), je ne vois pas comment faire. Est-ce que quelqu'un pourrait me donner un coup de main ?

Voici mon code :

COMBO 1
=====
<?
$marequete="SELECT DISTINCT cat_mere FROM tbl_categorie ORDER by cat_mere";
$monresultat=mysql_query($marequete);
?>
<select name="item_type" id="item_type" >
<?
while($row = mysql_fetch_array($monresultat))
{
echo "<option value=".$row["cat_mere"].">".$row["cat_mere"]."</option>";
}
?>
</select>

COMBO 2
=====
<?
$marequete2="SELECT cat_fils FROM tbl_categorie WHERE cat_mere='".$item_type."' ORDER by cat_fils";
echo $item_type;
$monresultat2=mysql_query($marequete2);
?>
<select name="item_soustype" id="item_soustype">
<?
echo "<option selected value=".$row["cat_fils"].">".$row["cat_fils"]."</option>";
while($row2 = mysql_fetch_array($monresultat2))
{
echo "<option value=".$row2["cat_fils"].">".$row2["cat_fils"]."</option>";
}
?>

Merci pour votre aide.
Hector 78
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
393
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
29 septembre 2008
3
Merci
Encore moi!!!

window.location.href="mapage.php?action=modifier&m=<?php echo "$param";?>";

par souci de portabilité vaut mieux <?php echo "$param"; ?> que <? = $param ?> car si le parametre je sais plu koi est activer ca marche pu

++

"Aucun de nous ne sait ce que nous savons tous, ensemble."
Lao Tseu inventeur du "copier coller" 8-)

Dire « Merci » 3

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

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

Commenter la réponse de ehmarc
Messages postés
393
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
29 septembre 2008
0
Merci
Salut

si jai bien compris ton code tu veut changer les choix d'une liste en fonction d'une autre liste

PHP est un language serveur c a dire qu'il fo renvoyer les donnée au serveur pour que les changement soit effectif (ce qui signifie rafraichir la page)

la solution pour faire ce que tu veut faire c de mettre du javascript qui lui est un langauge client (donc qui s'execute chez toi)

++

"Aucun de nous ne sait ce que nous savons tous, ensemble."
Lao Tseu inventeur du "copier coller" 8-)
Commenter la réponse de ehmarc
Messages postés
393
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
29 septembre 2008
0
Merci
re...

combo1:
<select name="item_type" id="item_type" onChange="modifier()">

et ta fonction modifier du style :

function modifier(){
var item_soustype =new Array();
<?php
connction BDD
$requete="ici ta requete";
effctue ta requete et ferme la BDD
while ($col = mysql_fetch_object(result)){
?>
var colonne = new Array("<?php echo "$col->NondevarCombo1";?>","<?php echo "$col->Nom de varCombo2";?>");
GR[GR.length]=colonne;
<?php
}
?>


voila ca ta produit un tableau bidimensionnel y te reste plus qu'a travailler dessus en javascript pour en extraire les resultat que tu veut

Si tu veut voire ce que ce code produit il faut aller tu fait clique droit sur ta page iexplore afficher la source

cette methode n'est pas valable dans le cas d'une BDD énorme car il ya trop de donnée a transiter vers le client.

J'espere que ca va t'aider. si t'as besoin de précision demande j'essayerai de repondre. :approve)

++

"Aucun de nous ne sait ce que nous savons tous, ensemble."
Lao Tseu inventeur du "copier coller" 8-)
Commenter la réponse de ehmarc
Messages postés
62
Date d'inscription
mercredi 3 novembre 2004
Statut
Membre
Dernière intervention
5 mai 2010
0
Merci
Hello !

Merci pour la réponse rapide. C'est effectivement ce que je veux faire, j'ai plutôt penché pour la première variante.

Mais je n'arrive pas à déclencher l'évènement "refresh" de la page en passant un paramètre (PHP)... Est-ce que quelqu'un pourrait m'expliquer comment faire ?

<script LANGUAGE="JavaScript">
<!--
function Refresh()
{
location.href="item_modify.php?action=modifier¶m=<? $param ?>";
}
//-->
</script>

Merci pour votre aide
Hector78
Commenter la réponse de cs_Hector78
Messages postés
62
Date d'inscription
mercredi 3 novembre 2004
Statut
Membre
Dernière intervention
5 mai 2010
0
Merci
Nickel, ça marche ! merci !
Bonne journée.
Hector78
Commenter la réponse de cs_Hector78
Messages postés
393
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
29 septembre 2008
0
Merci
re

met "réponse accepté" a ce momment :-p

++

"Aucun de nous ne sait ce que nous savons tous, ensemble."
Lao Tseu inventeur du "copier coller" 8-)
Commenter la réponse de ehmarc