Liste déroulantes dépendantes d'une base de données

Résolu/Fermé
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 - 27 nov. 2019 à 13:11
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 - 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?

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
27 nov. 2019 à 14:17
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>

0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
27 nov. 2019 à 14:35
J'ai essayé le code ça n'affiche pas le contenu de ma BDD
0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
27 nov. 2019 à 14:39
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?
0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
27 nov. 2019 à 14:45
C'est bon, j'ai réglé l'erreur, tout s'affiche normalemen super merci Jordan.
L'erreur s'etait cette syntaxe

" class`class` = ?"
0