Liste déroulantes dépendantes d'une base de données [Résolu]

Messages postés
55
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
10 décembre 2019
- - Dernière réponse : modemo2018
Messages postés
55
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
10 décembre 2019
- 27 nov. 2019 à 14:45
Bonjour,
Je suis entrain de créer un site et je voudrai faire une liste déroulante dynamique, voici le code:


<label class="font-weight-bold" for="fullname">Séléctionnez Matières </label>
                  <select name="nomat" id="nomat" class="form-control">
               				<?php
							
	//recherche de la liste des matières de cete classe		  

$class = !empty ( $_GET['class'] ) ? $_GET['class'] : NULL;					  
					  
try
    {		
 $req1 = $bdd->prepare('SELECT * FROM matiere WHERE nomat = ?');
	
	$req1->execute(array($class));
			 
	//Somme des élèves de la classe	
	 }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }												
                while($don = $req1->fetch()){ ?> 
	
              <option value="<?php echo $don['nomat']; ?>"> <?php $don['nomat']; ?></option>
		 
		 <?php } ?>	
		 
</select>




Le problème est que lorsque je teste la BDD, rien s'affiche, qd j'enlève la conditions WHERE, la liste reconnais les données mais n'affiche toujours rien.

Quelqu'un peut-il me dire pourquoi mes infos de BDD ne s'affiche pas, quelqu'un peut-il m'aidé SVP?
Afficher la suite 

1 réponse

Messages postés
27016
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2019
1921
0
Merci
Bonjour,

Si tu veux afficher la liste des matières d'une classe... pourquoi faire ton where sur le champ nomat ??
Je pense que ce que tu veux faire c'est ça
$class = !empty ( $_GET['class'] ) ? $_GET['class'] : NULL;					  

if($class){
  $sql = 'SELECT * FROM matiere WHERE class`class` = ?';
  $datas = array($class);      
  try{		
    $req = $bdd->prepare($sql);
    $req->execute($datas);
    $arrMat =  $req->fetchAll(); //on stocke le résultat dans un array
  }catch(Exception $e){
    die('Erreur : '.$e->getMessage());
  }												
}else{
  echo "<br><span>Variable 'class'  vide !</span>"; 
}
?> 

<label class="font-weight-bold" for="fullname">Séléctionnez Matières </label>
<select name="nomat" id="nomat" class="form-control">
  <?php
  if(!empty($arrMat)){
      foreach($arrMat as $don){
        echo "<option value='".$don['idmat']."'>".$don['nomat']."</option>";
      }
    }
  ?>
</select>

modemo2018
Messages postés
55
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
10 décembre 2019
-
J'ai essayé le code ça n'affiche pas le contenu de ma BDD
modemo2018
Messages postés
55
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
10 décembre 2019
-
Voilà l'erreur qu'il m'affiche :

Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`class` = 'CM2 '' at line 1

comment puis-je faire pour corriger une telle erreur, stp?
modemo2018
Messages postés
55
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
10 décembre 2019
-
C'est bon, j'ai réglé l'erreur, tout s'affiche normalemen super merci Jordan.
L'erreur s'etait cette syntaxe

" class`class` = ?"
Commenter la réponse de jordane45