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

Signaler
Messages postés
190
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
11 août 2020
-
Messages postés
190
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
11 août 2020
-
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?

1 réponse

Messages postés
29196
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 août 2020
2 685
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>

Messages postés
190
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
11 août 2020

J'ai essayé le code ça n'affiche pas le contenu de ma BDD
Messages postés
190
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
11 août 2020

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?
Messages postés
190
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
11 août 2020

C'est bon, j'ai réglé l'erreur, tout s'affiche normalemen super merci Jordan.
L'erreur s'etait cette syntaxe

" class`class` = ?"