Recuperer ID d'un "SELECT" en php

Hikashi -  
Alain_42 Messages postés 5413 Statut Membre -
Bonjour, je suis bien conscient qu'il existe d'autre articles répondant à ce problème mais je n'arrive tout de même pas à résoudre le mien...

Information importante :
J'ai deux tables :
CATEGORIE(N°Categorie, LibelleCategorie)
SOUS_CATEGORIE(N°SousCategorie, LibelleSousCategorie, #N°Categorie)

Je veux remplir une première listebox avec mes catégories, et je veux remplir la 2eme en fonction du choix de la première, et ceci en php.

Voici mon code :

<select name = "Categorie"  STYLE="width:71">
<?php
$listecategorie = 'SELECT * FROM Categorie;';
$query = mysql_query($listecategorie) or die('Erreur');
$nb = mysql_num_rows($query);
if ($nb[0])
{
		echo '<option>Aucune catégorie</option>'; 
}
else
{
		while ($list = mysql_fetch_array($query))
		{
			echo '<option value="'.$list['N°Categorie'].'">'.$list['LibelleCategorie'].'</option>'; 
		}
}		
?>
</select>
<select name = "SousCategorie"  STYLE="width:71">
<?php
$listesouscategorie = "SELECT * FROM Sous_Categorie WHERE  N°Categorie =".$_POST['Categorie']." ";
$query_sc = mysql_query($listesouscategorie) or die('Erreur');
$nb_sc = mysql_num_rows($query_sc);
if ($nb_sc[0])
{
		echo '<option>Aucune catégorie</option>'; 
}
else
{
		while ($list_sc = mysql_fetch_array($query_sc))
		{
			echo '<option value="'.$list_sc['N°SousCategorie'].'">'.$list_sc['LibelleSousCategorie'].'</option>'; 
		}
}		
?>
</select>


Le problème est que je n'arrive pas à récupérer l'id de la première listebox pour remplir la deuxième, de plus, je me demandais si c'était la méthode à effectuer.

Je vous remercie pour votre aide.
Hikashi

3 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    pourquoi l'ID,

    voici une méthode, pas testé, il peut subsister qqs fautes de frappe:
    <?php
    	if(isset($_POST['Categorie'])){
    		$categorie=$_POST['Categorie'];
    	}else{
    		$categorie=""; //initialisation à vide par defaut et pour le premier affichage
    	}
    ?>
    <form name=""form1" method="post" action="" >
    <select name = "Categorie"  onchange="submit();" style="width:71">
    	<option value="" >--choisissez--</option> <!-- ligne obligatoire pour avoir onchange à chaque fois -->
    <?php
    $listecategorie = 'SELECT * FROM Categorie;';
    $query = mysql_query($listecategorie) or die('Erreur');
    $nb = mysql_num_rows($query); //c'est un nompbre
    if ($nb==0)
    {
    		echo '<option>Aucune catégorie</option>'; 
    }
    else
    {
    ?>
    	<select name = "Categorie"  onchange="submit();" style="width:71">
    <?php	
    		while ($list = mysql_fetch_array($query))
    		{
    			$option= '<option value="'.$list['N°Categorie'].'"';
    			if($categorie==$list['N°Categorie']) {$option.='selected="seleted"';} //ça c'est pour conserver la sélection au réaffichage
    			$option.=' >'.$list['LibelleCategorie'].'</option>';
    				
    				echo $option;
    		}
    ?>
    	</select>
    <?php		
    }		
    ?>
    
    
    <?php
    	if(isset($_POST['Categorie']) && $_POST['Categorie'] !=""){
    		$categorie=mysql_real_escape_string($_POST['Categorie']); //securité
    ?>
    		<select name = "SousCategorie"  style="width:71">
    		<?php
    		$listesouscategorie = "SELECT * FROM Sous_Categorie WHERE  N°Categorie =".$categorie." ";
    		$query_sc = mysql_query($listesouscategorie) or die('Erreur');
    		$nb_sc = mysql_num_rows($query_sc); //c'est un nompbre
    		if ($nb_sc==0])
    		{
    				echo '<option>Aucune catégorie</option>'; 
    		}
    		else
    		{
    				while ($list_sc = mysql_fetch_array($query_sc))
    				{
    					echo '<option value="'.$list_sc['N°SousCategorie'].'">'.$list_sc['LibelleSousCategorie'].'</option>'; 
    				}
    		}		
    		?>
    		</select>
    <?php
    	} //fin if isset($_POST['Categorie']
    ?>
    </form>
    
    
    1
  2. Hikashi
     
    Je te remercie pour ta réponse ! Je vais tester cela ! J'ai un pti problème au niveau du
    if ($nb_sc==0])

    J'ai l'erreur Parse error: syntax error, unexpected ']' donc je vais regarder ça ! Merci en tout cas :)
    0
  3. Alain_42 Messages postés 5413 Statut Membre 904
     
    voila une faute de frappe qui subsiste

    j'ai pas enlevé le ]
    if ($nb_sc==0])

    if ($nb_sc==0)
    0