Liste liées Ajax , php



Bonjour
je voudrais intégrer les listes liées dans mon site web pour faciliter l'insertion des données
bref
j'ai trois table
catégorie
sous_catégorie
et element
 
CREATE TABLE IF NOT EXISTS `categorie` (
  `Id_categorie` int(11) NOT NULL AUTO_INCREMENT,
  `designation_categorie` varchar(100) NOT NULL,
  PRIMARY KEY (`Id_categorie`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

CREATE TABLE IF NOT EXISTS `sous_categorie` (
  `designation_sous_categorie` varchar(100) NOT NULL,
  `id_categorie` int(11) NOT NULL,
  PRIMARY KEY (`designation_sous_categorie`),
  KEY `id_categorie` (`id_categorie`),
  KEY `designation_sous_categorie` (`designation_sous_categorie`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


CREATE TABLE IF NOT EXISTS `element` (
  `Designation_element` varchar(100) NOT NULL,
  `designation_sous_categorie` varchar(100) NOT NULL,
  `code_element` varchar(4) NOT NULL,
  PRIMARY KEY (`Designation_element`,`code_element`),
  KEY `designation_sous_categorie` (`designation_sous_categorie`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;




la page liste.php
<?php
include  'includes\db.php';    
// Vérification des paramètres d'accès au fichier liste.php
if(isset($_GET['go']) || isset($_GET['localite_un']) || isset($_GET['localite_deux'])) {
	// connexion à la base de données
	try {
		$bdd = new PDO('mysql:host=localhost;dbname=localite', 'root', '');
	} catch(Exception $e) {
		exit('Impossible de se connecter à la base de données.');
	}
	
	$json = array();
	
	if(isset($_GET['go'])) {
		// requête qui récupère les localités un
		$requete = "SELECT * FROM localite_un ORDER BY localite_un ASC";
		// exécution de la requête
		$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
		// Création de la liste
		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
			// je remplis un tableau et mettant l'id en index
			$json[$donnees["id_localite_un"]][] = utf8_encode($donnees["localite_un"]);
		}
	}
	elseif(isset($_GET['localite_un'])) {
		// requête qui récupère les localités un
		$requete = "SELECT * FROM localite_deux WHERE id_localite_un = '".$_GET['localite_un']."' ORDER BY localite_deux ASC";
		// exécution de la requête
		$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
		// Création de la liste
		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
			// je remplis un tableau et mettant l'id en index
			$json[$donnees["id_localite_deux"]][] = utf8_encode($donnees["localite_deux"]);
		}
	}
	elseif(isset($_GET['localite_deux'])) {
		// requête qui récupère les localités un
		$requete = "SELECT * FROM localite_trois WHERE id_localite_deux = '".$_GET['localite_deux']."' ORDER BY localite_trois ASC";
		// exécution de la requête
		$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
		// Création de la liste
		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
			// je remplis un tableau et mettant l'id en index
			$json[$donnees["id_localite_trois"]][] = utf8_encode($donnees["localite_trois"]);
		}
	}
	 // envoi du résultat au success
	echo json_encode($json);
}

?>


page matériel.php ou existe les select

 <script type="text/javascript" src="../bootstrap/js/jquery-3.2.1.js"></script>
   <script src="../bootstrap/js/bootstrap.js"></script>
   <script type="text/javascript" src="../bootstrap/js/liste.js"></script>
   <link rel="stylesheet" href="../bootstrap/css/bootstrap.css">

<!-- catégori-->

<label> les catégories *:</label>
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
          <select class="form-control" name="categorie" id="categorie">
          <option value="">Séléctionner une catégorie</option>';
         </select>
</div>
        <label> les sous  catégories *:</label>

         <div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
        <select class="form-control" id="sous_categorie" name="sous_categorie">
          <option value="">Séléctionner une  sous catégorie</option>';
        </select>
        </div>

<!--Element-->

<label> les elements *:</label>
<br>
     <div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
  <select class="form-control" name="element" id="element">
 <option value="">Séléctionner un élement</option>

?>
  </select>
</div>




et la page liste.js


// JavaScript Document
$(document).ready(function() {
	var $categorie= $('#categorie');
	var $sous_categorie = $('#sous_categorie');
	var $element = $('#element');

	// chargement de la liste de localité un
	$.ajax({
		url: 'liste.php',
		data: 'go', // on envoie $_GET['go']
		dataType: 'json', // on veut un retour JSON
		success: function(json) {
			$.each(json, function(index, value) {
				// pour chaque noeud JSON
				// on ajoute l option dans la liste
				$('#categorie').append('<option value="'+ index +'">'+ value +'</option>');
			});
		}
	});

	// à la sélection de la localité un dans la liste
	$categorie.on('change', function() {
		var val = $(this).val(); // on récupère la valeur de la localité un
		if(val != '') {
			$sous_categorie.empty(); // on vide la liste de localité deux
			$sous_categorie.append('<option value="">Choisir la sous catégorie</option>');
	
			$.ajax({
				url: 'liste.php',
				data: 'categorie='+ val, // on envoie $_GET['localite_un']
				dataType: 'json',
				success: function(json) {
					$.each(json, function(index, value) {
						$sous_categorie.append('<option value="'+ index +'">'+ value +'</option>');
					});
				}
			});
		}
		else {
			$sous_categorie.empty();
			$sous_categorie.append('<option value="">Choisir la sous catégorie</option>');
			$element.empty(); // on vide la liste de localité deux
			$element.append('<option value="">Choisir element </option>');
		}
	});

	// à la sélection de la localité deux dans la liste
	$sous_categorie.on('change', function() {
		var val = $(this).val(); // on récupère la valeur de la localité deux
		if(val != '') {
			$element.empty(); // on vide la liste de localité trois
			$element.append('<option value="">Choisir element</option>');
			
			$.ajax({
				url: 'liste.php',
				data: 'sous_categorie='+ val, // on envoie $_GET['localite_deux']
				dataType: 'json',
				success: function(json) {
					$.each(json, function(index, value) {
						$element.append('<option value="'+ index +'">'+ value +'</option>');
					});
				}
			});
		}
		else {
			$element.empty();
			$element.append('<option value="">Choisir element</option>');
		}
	});
});


PS: rien n'a été affiché et aucune erreur a été signalé
-Est ce que vous pouvez m'aider ?
Merci bien

18 réponses

Résumé de la discussion

La problématique porte sur l’intégration de listes liées entre les tables catégorie, sous_catégorie et élément pour alimenter des menus déroulants dynamiques via AJAX et JSON sur une page liste.php. Plusieurs réponses soulignent qu’il faut uniformiser le code côté serveur en utilisant mysqli ou PDO seule et remplacer les appels obsolètes mysql_fetch_array par une méthode compatible. Des propositions décrivent de charger les catégories via une requête SQL puis d’alimenter les sous-catégories et éléments via appels AJAX, en s’assurant que liste.php renvoie un JSON structuré et que les noms de variables correspondent. En complément, il est utile de vérifier que la page liste.php accepte les paramètres attendus ('go', 'localite_un', 'localite_deux', 'sous_categorie') et renvoie uniquement des données JSON sans afficher d’erreurs HTML.

Bobot (l’IA à votre service)
  1. Voici le contenu COMPLET de DEBUG
    1. Modérateur
      Tu ne m'as toujours pas déplié la ligne où est marqué DEBUG .. c'est pourtant ça que je te demande depuis le début...

      A la limite on va faire autrement.... mais pour ça j'ai besoin de ton code javascript corrigé que je puisse y ajouter des choses.
      Merci de le coller sur le forum ( mais pas en image.... )
    2. débug

      Object
      DEBUG
      :
      GET
      :
      Array(0)
      length
      :
      0
      __proto__
      :
      Array(0)
      POST
      :
      id_categorie
      :
      "2"
      __proto__
      :
      Object
      __proto__
      :
      Object
      datas
      :
      designation_sous_categorie
      :
      "Calculatrice"
      id_categorie
      :
      "2"
      __proto__
      :
      Object
      query
      :
      "SELECT *
      ↵ FROM `sous_categorie`
      ↵ WHERE id_categorie='2'"
      __proto__
      :
      constructor
      :
      ƒ Object()
      hasOwnProperty
      :
      ƒ hasOwnProperty()
      isPrototypeOf
      :
      ƒ isPrototypeOf()
      propertyIsEnumerable
      :
      ƒ propertyIsEnumerable()
      toLocaleString
      :
      ƒ toLocaleString()
      toString
      :
      ƒ toString()
      valueOf
      :
      ƒ valueOf()
      __defineGetter__
      :
      ƒ __defineGetter__()
      __defineSetter__
      :
      ƒ __defineSetter__()
      __lookupGetter__
      :
      ƒ __lookupGetter__()
      __lookupSetter__
      :
      ƒ __lookupSetter__()
      get __proto__
      :
      ƒ __proto__()
      set __proto__
      :
      ƒ __proto__()


      liste.js
      
      $(document).ready(function() {
      			console.log('document ready !');			
      	$("#form-categorie").change(function() {
      	var spec = $(this).val();
      		console.log('form-categorie CHANGE : ' + spec);
      		$.ajax({
      			type : "POST",
      			url: "liste.php",
                              data : {id_categorie:spec},
                              dataType: 'json'
      		}).done(function(reponse) {
                         console.log(reponse);
      		}).fail(function (jqXHR, textStatus) {
      	console.log('ERREUR AJAX ' + textStatus);
      });
      	});
      	/*** sous catégorie****/
      			$("#form_sous_categorie").change(function() {
      		var spec = $(this).val();
      		console.log('form_sous_categorie CHANGE : ' + spec);
      		$.ajax({
      			type : "POST",
      			url: "liste.php?sous_categorie_id=" + spec,
                              dataType: 'json'
      		}).done(function(reponse) {
                         console.log(reponse);
      			var data = $.parseJSON(reponse);
      			}).fail(function (jqXHR, textStatus) {
      	console.log('ERREUR AJAX ' + textStatus);
      });
      		});			
      	/**** element ***/
      				
      		$("#form_element").html("");
      			data.forEach(function(ent) {
      				$("#form_element").prepend("<option value=\""+ent.code_element+"\">"+ent.Designation_element+"</option>");
      			});
      	
      	
      	
      });
      	
      
    3. DEBUG
      :
      GET
      :
      Array(0)
      length
      :
      0
      __proto__
      :
      Array(0)
      POST
      :
      id_categorie
      :
      "2"
      __proto__
      :
      Object
      __proto__
      :
      Object
  2. sincèrement je ne vois pas , j'ai rectifie le nom des variables pour éviter ce conflit mais rien n'a été
    Liste.php
    changer

    Materiel.php


    liste.js
    1. Modérateur
      Il faut que je vois le contenu COMPLET de DEBUG
      Il faut que je sache ce que contient {POST: {…}
    2. Modérateur
      Ensuite, tu corrigeras également ton code js pour les sous_catégories ...
      Tu n’envoies pas les données de la même façon (il me semblait te l'avoir déjà dit... )

  3. DeBug
    1. Modérateur
      Tu te mélanges un peu ....
      Côté JAVASCRIPT tu envois une variable qui a pour nom : categorie_id (tout en minuscule) (on peut le voir dans le DEBUG, à la ligne : "post:" )

      Côté PHP (dans le fichier AJAX ) tu récupère la variable POST de la façon suivante :
      $categorie_id = !empty($_POST['Id_categorie'])  ? $_POST['Id_categorie'] : NULL;
      

      Ne vois tu pas le problème ?
    2. $categorie_id = !empty($_POST['id_categorie'])  ? $_POST['id_categorie'] : NULL;
      


      NB: rien n'a été change méme erreur

      {DEBUG: {…}, error: "Aucune catégorie ou sous-catégorie envoyée...", post: {…}}
      DEBUG
      :
      {POST: {…}, GET: Array(0)}
      error
      :
      "Aucune catégorie ou sous-catégorie envoyée..."
      post
      :
      {categorie_id: "3"}
      __proto__
      :
      Object
    3. Modérateur
      @deep_seaJe recommence ....
      Dans le code PHP ... tu as :
      $categorie_id = !empty($_POST['id_categorie'])  ? $_POST['id_categorie'] : NULL;
      

      Dans ton code JS (tu le vois dans le debug ...) tu envois :
      {categorie_id: "3"}
      


      NE VOIS TU PAS UN SOUCI ???
      indice ..... LE NOM DES VARIABLES N'EST PAS LE MEME....
  4. la catégorie est le code catégorie a été récupéré

    voici une capture d''écran


    quand je clique dans la 2éme liste sous catégorie


    voici le code liste.php

    <?php
    
    //Activation des erreurs PHP
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    require_once  'includes\db.php';
    
    
    //récupération PROPRE des variables AVANT de les utiliser:
    $categorie_id = !empty($_POST['Id_categorie'])  ? $_POST['Id_categorie'] : NULL;
    $sous_categorie_id = !empty($_POST['sous_categorie_id']) ? $_POST['sous_categorie_id'] : NULL;
    
    $results = array();
    $results['DEBUG'] = array('POST'=>$_POST,'GET'=>$_GET);
    
    if($categorie_id ){
    	$fieldQuery = 'id_categorie';
    	$spec = $categorie_id;
    }elseif($sous_categorie_id){
    	$fieldQuery = 'designation_sous_categorie';
    	$spec = $sous_categorie_id;
    }else{
    	$results['error'] = "Aucune catégorie ou sous-catégorie envoyée...";	
    	$results['post'] = $_POST;
    	$spec = NULL;
    }
    
    if($spec){
    	$sql = "SELECT * 
    		 FROM `sous_categorie` 
    		 WHERE ".$fieldQuery."='".$spec."'";
    
    	$resultat_query = mysqli_query($conn,$sql);
    	$results['query'] = $sql; 
    	while($data =mysqli_fetch_assoc($resultat_query)) {
    	  $results['datas'] = $data;
    	}
     
    }
    
     // Encoder a l'aide de json avant de renvoyer
     echo json_encode($results);
    exit();
    ?>
    
    
    1. Modérateur
      Comment te le dire .....
      On doit voir ce que contient la variable DEBUG (ça fait plusieurs fois que je te le demande..!! )

      Donc...
  5. l'affichage "Aucune catégorie ou sous-catégorie envoyée"
    1. Modérateur
      Tu pourrais déplier le DEBUG (en cliquant sur la petite fleche devant ) et nous en montrer le contenu ?
    2. Modérateur
      Affiche également le code source "généré" de ta page web (depuis ton navigateur lorsque la page est affichée, CTRL + U ) et donne nous la partie qui correspond à la liste déroulante catégories.
    3. le code source généré
      
      <!-- catégorie-->
      <label> les catégories *:</label>
      <div class="input-group">
      <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
                <select class="form-control" name="categorie" id="form-categorie">
                <option value="">Séléctionner une catégorie</option>';
              <br />
      <b>Notice</b>:  Undefined index: id_categorie in <b></b> on line <b>190</b><br />
         <option value="">Accessoire cuisine</option>
               <br />
      <b>Notice</b>:  Undefined index: id_categorie in <b></b> on line <b>190</b><br />
         <option value="">Fourniture de bureau</option>
               <br />
      <b>Notice</b>:  Undefined index: id_categorie in <b></b> on line <b>190</b><br />
         <option value="">Informatique et High-Tech</option>
               <br />
      <b>Notice</b>:  Undefined index: id_categorie in <b></b> on line <b>190</b><br />
         <option value="">Ouvrage</option>
               <br />
      <b>Notice</b>:  Undefined index: id_categorie in <b></b> on line <b>190</b><br />
         <option value="">Service bureau</option>
               <br />
      <b>Notice</b>:  Undefined index: id_categorie in <b></b> on line <b>190</b><br />
         <option value="">Siège et mobilier de bureau</option>
                        </select>
       
      </div>
              <label> les sous  catégories *:</label>
               <div class="input-group">
      <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
              <select class="form-control" id="form_sous_categorie" name="sous_categorie">
                <option value="">Séléctionner une  sous catégorie</option>';
              </select>
              </div>
      <!--Element-->
      <label> les elements *:</label>
      <br>
           <div class="input-group">
      <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
        <select class="form-control" name="element" id="form_element">
       <option value="">Séléctionner un élement</option>
        </select>
      </div>
      
      
    4. Modérateur
      Tu as lu ce que tu viens dee coller ?
      N'as tu pas vu ceci :
      Notice</b>: Undefined index: id_categorie in <b></b> on line <b>190</b><br />
    5. Modérateur
      Sachant que, dans ton premier message tu nous as mis la structure de ta table... et que ton champ c'est :
      `Id_categorie` (avec un I majuscule )
      Donc ton code devrait être
      $id_categorie=$co['Id_categorie'];
      


      C'est pour ça que pour éviter ce genre d'erreur... dans une BDD il est préférable de ne mettre que des minulscules dans le nom des champs... A savoir pour l'avenir...
  6. voici le code j'ai mis le code de la 3eme liste en commentaire , car j'ai rencontré des erreurs concernant ata.forEach(function(ent) {

    voici le code de liste.js
    liste.js

    $(document).ready(function() {
       console.log('document ready !');   
     $("#form-categorie").change(function() {
     var spec = $(this).val();
      console.log('form-categorie CHANGE : ' + spec);
      $.ajax({
       type : "POST",
       url: "liste.php",
                            data : {categorie_id:spec},
                            dataType: 'json'
      }).done(function(reponse) {
                       console.log(reponse);
      });
     });
     /*** sous catégorie****/
       $("#form_sous_categorie").change(function() {
      var spec = $(this).val();
      console.log('form_sous_categorie CHANGE : ' + spec);
      $.ajax({
       type : "POST",
       url: "liste.php?sous_categorie_id=" + spec,
                            dataType: 'json'
      }).done(function(reponse) {
                       console.log(reponse);
       var data = $.parseJSON(reponse);
       });
      }); 
       
     /**** element ***/
        
      /* $("#form_element").html("");
       data.forEach(function(ent) {
        $("#form_element").prepend("<option value=\""+ent.code_element+"\">"+ent.Designation_element+"</option>");
       });
      */
     
     
    });
     
    


    pour l'affichage oui j'ai passé par la page matériel.php puis j'ai constaté que ya pas une erreur dans le code liste.js
    voici la capture d'écran

    1. Modérateur
      Et quand tu fais des choix dans tes listes ... il se passe quoi ?
      Car visiblement tu n'as pas essayé ... sinon y'aurait des choses écrites dans la console....

      Et côté JS .. pense aussi à mettre le .fail
      comme par exemple :
      $.ajax({
          type : "POST",
          url: "liste.php",
          data : {categorie_id:spec},
          dataType: 'json'
      }).done(function(reponse) {
          console.log(reponse);
      }).fail(function (jqXHR, textStatus) {
      	console.log('ERREUR AJAX ' + textStatus);
      });
      
    2. ya pas d'affichage !! c a d il n' ya pas la récupération de la liste catégorie pour pouvoir faire le choix
    3. Modérateur
      Ben... ta liste form-categorie ... tu l'alimentes comment au départ ????
      Car ce n'est pas le code actuellement en place qui doit le faire....
    4. dans la page matériel.php

      Voici un aperçu de code
      <label> les catégories *:</label>
      <div class="input-group">
      <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
                <select class="form-control" name="categorie" id="form-categorie">
                <option value="">Séléctionner une catégorie</option>';
              <?php 
           $requete_liste= "SELECT * FROM `categorie` order by `designation_categorie` asc";
           $resultat_liste = $conn->query($requete_liste) or die ('Erreur '.$requete_liste.' '.$conn->error);
           while($co = mysql_fetch_array($resultat_liste)){
           $id_categorie=$co['id_categorie'];
        $designation_categorie=$co['designation_categorie'];?>
         <option value="<?php echo $id_categorie;?>"><?php echo $designation_categorie;?></option>
               <?php }?>
               </select>
      </div>
              <label> les sous  catégories *:</label>
               <div class="input-group">
      <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
              <select class="form-control" id="form_sous_categorie" name="sous_categorie">
                <option value="">Séléctionner une  sous catégorie</option>';
              </select>
              </div>
      <!--Element-->
      <label> les elements *:</label>
      <br>
           <div class="input-group">
      <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
        <select class="form-control" name="element" id="form_element">
       <option value="">Séléctionner un élement</option>
        </select>
      </div>
      
    5. Modérateur
      @deep_sea
      c a d il n' ya pas la récupération de la liste catégorie pour pouvoir faire le choix

      Pourtant, c'est le code suivant qui est sensé l'alimenté cette liste :
       <select class="form-control" name="categorie" id="form-categorie">
                <option value="">Séléctionner une catégorie</option>';
              <?php 
           $requete_liste= "SELECT * FROM `categorie` order by `designation_categorie` asc";
           $resultat_liste = $conn->query($requete_liste) or die ('Erreur '.$requete_liste.' '.$conn->error);
           while($co = mysql_fetch_array($resultat_liste)){
           $id_categorie=$co['id_categorie'];
        $designation_categorie=$co['designation_categorie'];?>
         <option value="<?php echo $id_categorie;?>"><?php echo $designation_categorie;?></option>
               <?php }?>
      


      As tu vu qu'encore une fois... tu as mélangé du mysqli avec du vieux mysql ???
      Si tu n'es pas capable de te relire.... va falloir aller prendre des cours de lecture....
      Une fois par oubli ça peut arriver ... mais 50 fois de suite... c'est franchement grave.....

      Donc.... remet au propre TOUT ton code avant de poursuivre.
      Sinon on ne s'en sortira jamais....


  7. le tableau est vide et pas d'affichage !!!
    1. Modérateur
      Que donnes ceci :
      côté PHP :
      
      <?php
      
      //Activation des erreurs PHP
      error_reporting(E_ALL);
      ini_set('display_errors', TRUE);
      ini_set('display_startup_errors', TRUE);
      require_once  'includes\db.php';
      
      
      //récupération PROPRE des variables AVANT de les utiliser:
      $categorie_id = !empty($_POST['categorie_id'])  ? $_POST['categorie_id'] : NULL;
      $sous_categorie_id = !empty($_POST['sous_categorie_id']) ? $_POST['sous_categorie_id'] : NULL;
      
      $results = array();
      $results['DEBUG'] = array('POST'=>$_POST,'GET'=>$_GET);
      
      if($categorie_id ){
      	$fieldQuery = 'id_categorie';
      	$spec = $categorie_id;
      }elseif($sous_categorie_id){
      	$fieldQuery = 'designation_sous_categorie';
      	$spec = $sous_categorie_id;
      }else{
      	$results['error'] = "Aucune catégorie ou sous-catégorie envoyée...";	
      	$results['post'] = $_POST;
      	$spec = NULL;
      }
      
      if($spec){
      	$sql = "SELECT * 
      		 FROM `sous_categorie` 
      		 WHERE ".$fieldQuery."='".$spec."'";
      
      	$resultat_query = mysqli_query($conn,$sql);
      	$results['query'] = $sql; 
      	while($data =mysqli_fetch_assoc($resultat_query)) {
      	  $results['datas'] = $data;
      	}
       
      }
      
       // Encoder a l'aide de json avant de renvoyer
       echo json_encode($results);
      exit();
      ?>
      
      


      Et puis.. tu pourrais nous montrer ton code JS (corrigé suite à ma réponse du : https://forums.commentcamarche.net/forum/affich-34951536-liste-liees-ajax-php#47
    2. pour liste.php le même affichage , un tableau vide
      le code de liste.js
      $(document).ready(function() {
      
      			console.log('document ready !');
      			
      			
      			
      	$("#form-categorie").change(function() {
      	
      	var spec = $(this).val();
      		console.log('form-categorie CHANGE : ' + spec);
      		$.ajax({
      			type : "POST",
      			url: "liste.php",
                              data : {categorie_id:spec},
                              dataType: 'json'
      		}).done(function(reponse) {
                         console.log(reponse);
      		});
      	});
      
      
      	/*** sous catégorie****/
      	
      		
      	$("#form_sous_categorie").change(function() {
      		var spec = $(this).val();
      		console.log('form_sous_categorie CHANGE : ' + spec);
      		$.ajax({
      			url: "liste.php?sous_categorie_id=" + spec,
      			cache: false
      		}).done(function(html) {
      			console.log(html);
      			var data = $.parseJSON(html);
      			$("#form_element").html("");
      			data.forEach(function(ent) {
      				$("#form_element").prepend("<option value=\""+ent.code_element+"\">"+ent.Designation_element+"</option>");
      			});
      		}).fail(function (jqXHR, textStatus) {
      			console.log('ERREUR AJAX !');
      			console.log(textStatus);
      		});
      	});
      	
      	
      	
      	
      });
      
    3. Modérateur
      Quand tu dis : "pour liste.php le même affichage , un tableau vide " ... dis voir .. tu le regarde comment ???
      Tu n'essayes pas de l'ouvrir directement hein ??
      Tu passes par le code javascript on est bien d'accord ????
      Et c'est UNIQUEMENT dans la console du navigateur que tu devrais en voir le résultat !

      Sachant que ton JS .. tu n'as corrigé qu'une seule fonction sur les deux....
      Faut également corriger au niveau de ton autre fonction
      $("#form_sous_categorie").change(function() {
  8. Modérateur
    Que contient ton fichier 'includes\db.php' ?

    Ensuite... tu as encore des erreurs de parenthèses dans tes IF ...
    if((!empty($_GET['categorie_id'])) && (is_numeric($_GET['categorie_id']))) {

    Regarde bien cette ligne....

    Ca devrait être :
    if( !empty($_GET['categorie_id'])  && is_numeric($_GET['categorie_id']) ) {
    


    Qui.. plus proprement ... et si tu avais appliqué le contenu des liens que je t'ai déjà donné concernant l'écriture PROPRE du code tu aurais appliqué... devrais se faire comme ceci :
    $categorie_id= !empty($_GET['categorie_id']) && is_numeric($_GET['categorie_id']) ? $_GET['categorie_id'] : NULL;
    if($categorie_id){
    
    


    Mais là encore.. on pourrait améliorer l'écriture de ton code...
    Regarde ce que donnes ceci:
    
    <?php
    
    
    //Activation des erreurs PHP
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    require_once  'includes\db.php';
    
    
    //récupération PROPRE des variables AVANT de les utiliser:
    $categorie_id = !empty($_POST['categorie_id']) && is_numeric($_POST['categorie_id']) ? $_POST['categorie_id'] : NULL;
    $sous_categorie_id = !empty($_POST['sous_categorie_id']) && is_numeric($_POST['sous_categorie_id']) ? $_POST['sous_categorie_id'] : NULL;
    
    $results = array();
    
    
    if($categorie_id ){
    	$fieldQuery = 'id_categorie';
    	$spec = $categorie_id;
    }elseif($sous_categorie_id){
    	$fieldQuery = 'designation_sous_categorie';
    	$spec = $sous_categorie_id;
    }else{
    	$results['error'] = "Aucune catégorie ou sous-catégorie envoyée...";	
    	$results['post'] = $_POST;
    	$spec = NULL;
    }
    
    if($spec){
    	$sql = "SELECT * 
    		 FROM `sous_categorie` 
    		 WHERE ".$fieldQuery."='".$spec."'";
    
    	$resultat_query = mysqli_query($conn,$sql);
    
    	while($data =mysqli_fetch_assoc($resultat_query)) {
    	  $results[] = $data;
    	 }
     
    }
    
     // Encoder a l'aide de json avant de renvoyer
     echo json_encode($results);
    
    ?>
    
    
    


    NB : Tu utilises du POST ..et non du GET !
    J'ai rectifié dans ton code.
    1. Elle contient cette ligne
      }).done(function(html) {
      1. Modérateur
        Ce que tu me montres .. c'est la ligne 29 et non la 10 ...
        Mais bon.. la 10 contient la même chose.
        html ... je ne pense pas que ce soit bien choisit comme nom de variable.... non ?
        A la place... utilise "reponse" ou '"result" ou "response" ...

        Et comme tu fais du POST ... ne place pas tes variables dans l'url mais utilise l'attribut DATA
        Et puis.. précise que tu veux un retour en JSON
        Et pour finir .. retire le CACHE qui ne sert pas ..
        var spec = $(this).val();
        		console.log('form-categorie CHANGE : ' + spec);
        		$.ajax({
        			type : "POST",
        			url: "liste.php",
                                data : {categorie_id:spec},
                                dataType: 'json'
        		}).done(function(reponse) {
                           console.log(reponse)
        
      2. document ready !
      3. Modérateur
        ??
      4. Modérateur
        Ah oui.. tu veux nous dire que dans la console s'affiche document ready..
        Doit le résultat de la ligne de code
        console.log('document ready !');
        

        Donc visiblement plus d'erreur de syntaxe dans le code....

        Donc ça fonctionne non ?
      5. oui il y'a affichage de document ready !! --> pas d'erreur de syntaxe dans le code mais ça ne fonctionne pas
        une autre erreur de syntaxe apparaît dans liste.php
        Parse error: syntax error, unexpected '{' , on line 25
        le problème j'ai vérifié tous les accolades mais j'ai pas trouvée

        
        
        <?php
        echo json_encode($_POST);
        exit();
        
        //Activation des erreurs PHP
        error_reporting(E_ALL);
        ini_set('display_errors', TRUE);
        ini_set('display_startup_errors', TRUE);
        require_once  'includes\db.php';
        
        
        // Vérifier que l'id du catégorie a bien eté envoyé
        if((!empty($_GET['categorie_id'])) && (is_numeric($_GET['categorie_id']))) {
        	$spec = $_GET['categorie_id'];
        	
        	// Tableau des resultats initialisé a vide
        	$results = array();
        	
        	// Séléction les catégories
        
        	$requete_sous_cat= "SELECT * FROM `sous_categorie` WHERE `id_categorie`='".$spec."'";
        	$resultat_categorie= $conn->query($requete_sous_cat) or die ('Erreur '.$requete_sous_cat.' '.$conn->error);
        
        	while($data = mysql_fetch_assoc(($resultat_categorie)) {
        		$results[] = $data;
        	}
        	
        	// Encoder a l'aide de json avant de renvoyer
        	echo json_encode($results);
        }
        
        // Vérifier que l'id den la sous catégorie a bien été envoyé
        else if((!empty($_GET['sous_categorie_id'])) && (is_numeric($_GET['sous_categorie_id']))) {
        	$spec = $_GET['sous_categorie_id'];
        	
        	// Tableau des resultats initialisé a vide
        	$resultat_element = array();
        	
        	// Séléction les élements  qui concernent la sous catégorie choisi
        	$requete_element= "SELECT * FROM `element` WHERE `designation_sous_categorie`='".$spec."'";
        	$resultat_element= $conn->query($requete_element) or die ('Erreur '.$requete_element.' '.$conn->error);
        	while($data_element = mysql_fetch_assoc($resultat_element)) {
        		$resultat_element[] = $data_element;
        	}
        	
        	// Encoder a l'aide de json avant de renvoyer
        	echo json_encode($results);
        }
        ?>
        
        
        
        


    2. aucune erreur , aucun résultat :(
      1. Modérateur
        Essayes ça :
        $(document).ready(function() {
        	console.log('document ready !');
        	$("#form-categorie").change(function() {
        		var spec = $(this).val();
        		console.log('form-categorie CHANGE : ' + spec);
        		$.ajax({
        			type : "POST",
        			url: "liste.php?categorie_id=" + spec,
        			cache: false
        		}).done(function([/html/htmlintro.php3 html]) {
        			<gras>console.log(html);</gras>
        			var data = $.parseJSON(html);
        			$("#form_sous_categorie").html("");
        			data.forEach( function(ent) {
        				$("#form_sous_categorie").prepend("<option value=\""+ent.designation_sous_categorie+"\">"+ent.designation_sous_categorie+"</option>");
        			});
        		}).fail(function (jqXHR, textStatus) {
        			console.log('ERREUR AJAX !');
        			console.log(textStatus);
        		});
        	});
        	
        	$("#form_sous_categorie").change(function() {
        		var spec = $(this).val();
        		console.log('form_sous_categorie CHANGE : ' + spec);
        		$.ajax({
        			url: "liste.php?sous_categorie_id=" + spec,
        			cache: false
        		}).done(function(html) {
        			console.log(html);
        			var data = $.parseJSON(html);
        			$("#form_element").html("");
        			data.forEach(function(ent) {
        				$("#form_element").prepend("<option value=\""+ent.code_element+"\">"+ent.Designation_element+"</option>");
        			});
        		}).fail(function (jqXHR, textStatus) {
        			console.log('ERREUR AJAX !');
        			console.log(textStatus);
        		});
        	});
        });
        
        
      2. Erreur

        Uncaught SyntaxError: Invalid regular expression flags
      3. Modérateur
        A quelle ligne ?
        Ca doit te le dire dans la console
      4. ligne 10
      5. Modérateur
        Et elle contient quoi la ligne 10 ?
    3. Modérateur
      Dans ton fichier JS ....
      Tu as collé
      success: function(html) {
                     console.log(html);
      


      N'IMPORTE OU !!!!

      Tu supprimes ces lignes ....

      Et tu écris dans les .DONE ceci:
      console.log(html);
      

      et c'est tout !
      1. 
        
        
        
        $(document).ready(function() {
        
        	$("#form-categorie").change(function() {
        		var spec = $(this).val();
        
        		$.ajax({
        			type : "POST",
        			url: "liste.php?categorie_id=" + spec,
        			cache: false
        		}).done(function([/html/htmlintro.php3 html]) {
        			<gras>console.log(html);</gras>
        			var data = $.parseJSON(html);
        			$("#form_sous_categorie").html("");
        			data.forEach( function(ent) {
        				$("#form_sous_categorie").prepend("<option value=\""+ent.designation_sous_categorie+"\">"+ent.designation_sous_categorie+"</option>");
        			});
        		});
        	});
        	
        	$("#form_sous_categorie").change(function() {
        		var spec = $(this).val();
        
        		$.ajax({
        			url: "liste.php?sous_categorie_id=" + spec,
        			cache: false
        		}).done(function(html) {
        		<gras>	console.log(html);</gras>
        			var data = $.parseJSON(html);
        			$("#form_element").html("");
        			data.forEach(function(ent) {
        				$("#form_element").prepend("<option value=\""+ent.code_element+"\">"+ent.Designation_element+"</option>");
        			});
        		});
        	});
        });
        
        
      2. @jordane45oui la méme erreur
        Uncaught SyntaxError: Unexpected token (
    4. 
      
      <?php
      echo json_encode($_POST);
      exit();
      
      //Activation des erreurs PHP
      error_reporting(E_ALL);
      ini_set('display_errors', TRUE);
      ini_set('display_startup_errors', TRUE);
      require_once  'includes\db.php';
      
      
      // Vérifier que l'id du catégorie a bien eté envoyé
      if((!empty($_GET['categorie_id'])) && (is_numeric($_GET['categorie_id']))) {
       $spec = $_GET['categorie_id'];
       
       // Tableau des resultats initialisé a vide
       $results = array();
       
       // Séléction les catégories
      
       $requete_sous_cat= "SELECT * FROM `sous_categorie` WHERE `id_categorie`='".$spec."'";
       $resultat_categorie= $conn->query($requete_sous_cat) or die ('Erreur '.$requete_sous_cat.' '.$conn->error);
      
       while($data = mysql_fetch_assoc(($resultat_categorie)) {
        $results[] = $data;
       }
       
       // Encoder a l'aide de json avant de renvoyer
       echo json_encode($results);
      }
      
      // Vérifier que l'id den la sous catégorie a bien été envoyé
      else if((!empty($_GET['sous_categorie_id'])) && (is_numeric($_GET['sous_categorie_id']))) {
       $spec = $_GET['sous_categorie_id'];
       
       // Tableau des resultats initialisé a vide
       $results = array();
       
       // Séléction les élements  qui concernent la sous catégorie choisi
       $requete_element= "SELECT * FROM `element` WHERE `designation_sous_categorie`='".$spec."'";
       $resultat_element= $conn->query($requete_element) or die ('Erreur '.$requete_element.' '.$conn->error);
       while($data = mysql_fetch_assoc($resultat_element)) {
        $results[] = $data;
       }
       
       // Encoder a l'aide de json avant de renvoyer
       echo json_encode($results);
      }
      ?>
      
      

      EDIT : AJOUT DU LANGAGE dans les balises de code

      1. j'utilise MySqli

        liste.php
        
        <?php
        echo json_encode($_POST);
        exit();
        
        //Activation des erreurs PHP
        error_reporting(E_ALL);
        ini_set('display_errors', TRUE);
        ini_set('display_startup_errors', TRUE);
        require_once  'includes\db.php';
        
        
        // Vérifier que l'id du catégorie a bien eté envoyé
        if((!empty($_GET['categorie_id'])) && (is_numeric($_GET['categorie_id']))) {
        	$spec = $_GET['categorie_id'];
        	
        	// Tableau des resultats initialisé a vide
        	$results = array();
        	
        	// Séléction les catégories
        
        	$requete_sous_cat= "SELECT * FROM `sous_categorie` WHERE `id_categorie`='".$spec."'";
        	$resultat_categorie= $conn->query($requete_sous_cat) or die ('Erreur '.$requete_sous_cat.' '.$conn->error);
        
        	while($data = mysql_fetch_array($resultat_categorie)) {
        		$results[] = $data;
        	}
        	
        	// Encoder a l'aide de json avant de renvoyer
        	echo json_encode($results);
        }
        
        // Vérifier que l'id den la sous catégorie a bien été envoyé
        else if((!empty($_GET['sous_categorie_id'])) && (is_numeric($_GET['sous_categorie_id']))) {
        	$spec = $_GET['sous_categorie_id'];
        	
        	// Tableau des resultats initialisé a vide
        	$results = array();
        	
        	// Séléction les élements  qui concernent la sous catégorie choisi
        	$requete_element= "SELECT * FROM `element` WHERE `designation_sous_categorie`='".$spec."'";
        	$resultat_element= $conn->query($requete_element) or die ('Erreur '.$requete_element.' '.$conn->error);
        	while($data = mysql_fetch_assoc($resultat_element)) {
        		$results[] = $data;
        	}
        	
        	// Encoder a l'aide de json avant de renvoyer
        	echo json_encode($results);
        }
        ?>
        
        
        
        
        1. liste.js
          success: function(html) {
                         console.log(html);
          
          
          $(document).ready(function() {
          
          	$("#form-categorie").change(function() {
          		var spec = $(this).val();
          
          		$.ajax({
          			type : "POST",
          			url: "liste.php?categorie_id=" + spec,
          			cache: false
          		}).done(function(html) {
          			var data = $.parseJSON(html);
          			$("#form_sous_categorie").html("");
          			data.forEach( function(ent) {
          				$("#form_sous_categorie").prepend("<option value=\""+ent.designation_sous_categorie+"\">"+ent.designation_sous_categorie+"</option>");
          			});
          		});
          	});
          	
          	$("#form_sous_categorie").change(function() {
          		var spec = $(this).val();
          
          		$.ajax({
          			url: "liste.php?sous_categorie_id=" + spec,
          			cache: false
          		}).done(function(html) {
          			var data = $.parseJSON(html);
          			$("#form_element").html("");
          			data.forEach(function(ent) {
          				$("#form_element").prepend("<option value=\""+ent.code_element+"\">"+ent.Designation_element+"</option>");
          			});
          		});
          	});
          });
          
          
        2. Modérateur
          @deep_seaTu utilises mysqli ????
          Dans ce cas.. que font des instructions telle que mysql_fetch_array dans ton code ??
          Commence par nous présenter un code conforme... on verra ensuite !
      2. Bonjour ,
        page liste.js
        
        
        $(document).ready(function() {
        
        	$("#form-categorie").change(function() {
        		var spec = $(this).val();
        
        		$.ajax({
        			type : "POST",
        			url: "liste.[/php/phpintro.php3 php]?categorie_id=" + spec,
        			cache: false
        		}).done(function(html) {
        			var data = $.parseJSON(html);
        			$("#form_sous_categorie").html("");
        			data.forEach( function(ent) {
        				$("#form_sous_categorie").prepend("<option value=\""+ent.designation_sous_categorie+"\">"+ent.designation_sous_categorie+"</option>");
        			});
        		});
        	});
        	
        	$("#form_sous_categorie").change(function() {
        		var spec = $(this).val();
        
        		$.ajax({
        			url: "liste.php?sous_categorie_id=" + spec,
        			cache: false
        		}).done(function(html) {
        			var data = $.parseJSON(html);
        			$("#form_element").html("");
        			data.forEach(function(ent) {
        				$("#form_element").prepend("<option value=\""+ent.code_element+"\">"+ent.Designation_element+"</option>");
        			});
        		});
        	});
        });
        
        
        
        
        


        page liste.php

        
        <?php
        echo json_encode($_POST);
        exit();
        
        //Activation des erreurs PHP
        error_reporting(E_ALL);
        ini_set('display_errors', TRUE);
        ini_set('display_startup_errors', TRUE);
        require_once  'includes\db.php';
        
        success: function(json) {
                       console.log(json);
        
        
        // Vérifier que l'id du catégorie a bien eté envoyé
        if((!empty($_GET['categorie_id'])) && (is_numeric($_GET['categorie_id']))) {
        	$spec = $_GET['categorie_id'];
        	
        	// Tableau des resultats initialisé a vide
        	$results = array();
        	
        	// Séléction les catégories
        
        	$requete= mysql_query("SELECT * FROM `sous_categorie` WHERE `id_categorie`='".$spec."'") or die (mysql_error());
        	while($data = mysql_fetch_assoc($requete)) {
        		$results[] = $data;
        	}
        	
        	// Encoder a l'aide de json avant de renvoyer
        	echo json_encode($results);
        }
        
        // Vérifier que l'id den la sous catégorie a bien été envoyé
        else if((!empty($_GET['sous_categorie_id'])) && (is_numeric($_GET['sous_categorie_id']))) {
        	$spec = $_GET['sous_categorie_id'];
        	
        	// Tableau des resultats initialisé a vide
        	$results = array();
        	
        	// Séléction les élements  qui concernent la sous catégorie choisi
        	$requete= mysql_query("SELECT * FROM `element` WHERE `designation_sous_categorie`='".$spec."'") or die (mysql_error());
        	while($data = mysql_fetch_assoc($requete)) {
        		$results[] = $data;
        	}
        	
        	// Encoder a l'aide de json avant de renvoyer
        	echo json_encode($results);
        }
        ?>
        
        


        materiel.php
        
        <label> les catégories *:</label>
        <div class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
                  <select class="form-control" name="categorie" id="form-categorie">
                  <option value="">Séléctionner une catégorie</option>';
        		      <?php 
        			  $requete_liste= "SELECT * FROM `categorie` order by `designation_categorie` asc";
        			  $resultat_liste = $conn->query($requete_liste) or die ('Erreur '.$requete_liste.' '.$conn->error);
        			  while($co = mysql_fetch_array($resultat_liste)){
            	$id_categorie=$co['id_categorie'];
        		$designation_categorie=$co['designation_categorie'];?>
        		 <option value="<?php echo $id_categorie;?>"><?php echo $designation_categorie;?></option>
                 <?php }?>
                 </select>
        </div>
        
                <label> les sous  catégories *:</label>
        
                 <div class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
                <select class="form-control" id="form_sous_categorie" name="sous_categorie">
                  <option value="">Séléctionner une  sous catégorie</option>';
                </select>
                </div>
        
        <!--Element-->
        
        <label> les elements *:</label>
        <br>
             <div class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
          <select class="form-control" name="element" id="form_element">
         <option value="">Séléctionner un élement</option>
        
        
          </select>
        </div>
        
        


        les liens
        
        
           <script type="text/javascript" src="../bootstrap/js/jquery-3.2.1.js"></script>
           <script src="../bootstrap/js/bootstrap.js"></script>
           <script type="text/javascript" src="../bootstrap/js/liste.js"></script>
           <link rel="stylesheet" href="../bootstrap/css/bootstrap.css">
        


        Erreur affiché :
        1. Modérateur
          Que vient faire ici cette ligne de code
          success: function(json) {
                         console.log(json);
          
          
        2. @jordane45pour afficher dans la consule les variable de javascript
        3. Modérateur
          @deep_seaC'est du code JAVASCRIPT .... il faut donc le mettre dans ton JAVASCRIPT et non dans le PHP !!!
          Il faut donc le mettre dans le .done
          }).done(function(html) {
             console.log(html);
          
        4. @jordane45méme erreur s'affiche :
          Uncaught SyntaxError: Unexpected token (
      3. Voila la capture

        1. Modérateur
          Y'a peu-être des choses à cocher non ?
          Comme par exemple : log XmlHttpRequest ... pour debug de l'ajax... ça peut aider !
          Tu peux aussi cocher "preserve log".

          Et au passage... tu as bien ajouté des console.log comme je te l'ai demandé ???
          Si oui...ils devraient apparaitre....dans la console...

          Bien entendu.. tu regardes la console après avoir fais des choix dans tes listes déroulantes ..
      4. page liste.php

        
        
        <?php
        
        error_reporting(E_ALL);
        $conn->setattribute(PDO::ATTR_ERRMODE,ERRMODE_EXCEPTION);
        $conn->setattribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
        
        
        /* connexion a la base de donnée*/
          include  'includes\db.php'; 
        
        
        if(isset($_GET['go']) || isset($_GET['categorie']) || isset($_GET['sous_categorie'])) {
        
        
        	
        	$json = array();
        	
        	if(isset($_GET['go'])) {
        
        
        try{
        $requete = "SELECT * FROM `categorie` order by `designation_categorie` asc";
        	
        		$resultat = $conn->query($requete) or die(print_r($conn->errorInfo()));
        	
        		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
        			
        			$json[$donnees["Id_categorie"]][] = utf8_encode($donnees["designation_categorie"]);
        		}
        }
        catch(Exception $e)
        {
        
        	echo "ERREUR!".$e->getmessage();
        	echo "Les datas:";
        	print_r($donnees);
        }
        	
        	
        
        	}
        	elseif(isset($_GET['categorie'])) {
        
        try{
        $var_cat=$_GET['categorie'] ;
        		$requete = "SELECT * FROM `sous_categorie` WHERE `id_categorie` = ORDER BY  `designation_sous_categorie` ASC";
        
        		$resultat = $conn->query($requete) or die(print_r($conn->errorInfo()));
        
        		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
        			
        			$json[$donnees["designation_sous_categorie"]][] = utf8_encode($donnees["designation_sous_categorie"]);
        		}
        
        }
        
        catch(Exception $e1)
        {
        
        	echo "ERREUR!".$e1->getmessage();
        	echo "Les datas:";
        	print_r($donnees);
        }
        	}
        
        
        
        	elseif(isset($_GET['sous_categorie'])) {
        
        
        		try{	$var_sous_cat=$_GET['sous_categorie'];
        		$requete = "SELECT * FROM `element` WHERE `designation_sous_categorie`=$var_sous_cat  ORDER BY `Designation_element ` ASC";
        
        		$resultat = $conn->query($requete) or die(print_r($conn->errorInfo()));
        	
        		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
        
        			$json[$donnees["code_element"]][] = utf8_encode($donnees["Designation_element"]);
        		}}
        
        	}
        
        	echo json_encode($json);
        
        
        
        catch(Exception $e2)
        {
        
        	echo "ERREUR!".$e2->getmessage();
        	echo "Les datas:";
        	print_r($donnees);
        }
        
        
        
        
        
        
        
        
        
        }
        
        ?>
        
        
        1. Modérateur
          Tu as regardé l'exemple du lien que je t'ai donné ??
          As quel moment as tu vu que j'utilisais ce genre de ligne de code
          <coce php>
          die(print_r($conn->errorInfo()));
          </code>
          Et puis... n'as tu pas vu que je faisais du fetchAll ?

          Et il te manque toujours la connexion à ta bdd dans le fichier que tu nous montres....

          Relis toi avant de poster ton code....
        2. Oui méme imprimé les exemple et j'ai suis les étapes !!
          page db.php

          <?php
          	$server = 'localhost';
          	$username = 'root';
          	$password = '';
          	$db = 'bst_gestion';
          	
          	$conn = mysqli_connect($server,$username,$password,$db);
          	mysqli_set_charset( $conn , 'utf8' );
          	
          ?>
          

          la page liste.php

          
          <?php
          try{
          $conn= new PDO ('mysql:host=localhost; dbname=include\db;  charset=utf8', 'user', 'passwor');
          error_reporting(E_ALL);
          $conn->setattribute(PDO::ATTR_ERRMODE,ERRMODE_EXCEPTION);
          $conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
          
          
          }
          
           catch(PDOException $e) {
              die('Erreur : ' . $e->getMessage());
          }
          
          
          
          
          
          if(isset($_GET['go']) || isset($_GET['categorie']) || isset($_GET['sous_categorie'])) {
          
          
          	
          	$json = array();
          	
          	if(isset($_GET['go'])) {
          
          
          try{
          $requete = "SELECT * FROM `categorie` order by `designation_categorie` asc";
          	
          		$resultat = $conn->query($requete) or die(print_r($conn->errorInfo()));
          	
          		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
          			
          			$json[$donnees["Id_categorie"]][] = utf8_encode($donnees["designation_categorie"]);
          		}
          }
          catch(Exception $e)
          {
          
          	echo "ERREUR!".$e->getmessage();
          	echo "Les datas:";
          	print_r($donnees);
          }
          	
          	
          
          	}
          	elseif(isset($_GET['categorie'])) {
          
          try{
          $var_cat=$_GET['categorie'] ;
          		$requete = "SELECT * FROM `sous_categorie` WHERE `id_categorie` = ORDER BY  `designation_sous_categorie` ASC";
          
          		$resultat = $conn->query($requete) or die(print_r($conn->errorInfo()));
          
          		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
          			
          			$json[$donnees["designation_sous_categorie"]][] = utf8_encode($donnees["designation_sous_categorie"]);
          		}
          
          }
          
          catch(Exception $e1)
          {
          
          	echo "ERREUR!".$e1->getmessage();
          	echo "Les datas:";
          	print_r($donnees);
          }
          	}
          
          
          
          	elseif(isset($_GET['sous_categorie'])) {
          
          
          		try{	$var_sous_cat=$_GET['sous_categorie'];
          		$requete = "SELECT * FROM `element` WHERE `designation_sous_categorie`=$var_sous_cat  ORDER BY `Designation_element ` ASC";
          
          		$resultat = $conn->query($requete) or die(print_r($conn->errorInfo()));
          	
          		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
          
          			$json[$donnees["code_element"]][] = utf8_encode($donnees["Designation_element"]);
          		}}
          
          	}
          
          	echo json_encode($json);
          
          
          
          catch(Exception $e2)
          {
          
          	echo "ERREUR!".$e2->getmessage();
          	echo "Les datas:";
          	print_r($donnees);
          }
          
          
          
          
          
          
          
          
          
          }
          
          ?>
          
        3. Modérateur
          Tu peux m'expliquer comment tu peux avoir, d'un côté dans la page db.php ... du mysqli ...
          et dans ton autre fichier (liste.php) ... du PDO ???

          Tes pages web ... tu les as faites avec PDO ou mysqli ??? Il faut choisir l'un ou l'autre !
          Et pas copier/coller bêtement du code sans essayer de le comprendre !!!
        4. tu as raison ,
          j'utilise le mysqli
          ok c juste pour tester
          je vais corriger le programme
          merci pour votre temps
        5. @deep_seaListe.php

          
          
          <?php
          
          include  'includes\db.php';
          
          
          
          
          if(isset($_GET['go']) || isset($_GET['categorie']) || isset($_GET['sous_categorie'])) {
          
          
          	
          	$json = array();
          	
          	if(isset($_GET['go'])) {
          
          
          
          $requete = "SELECT * FROM `categorie` order by `designation_categorie` asc";
          	
          	   $resultat = $conn->query($requete) or die ('Erreur '.$requete.' '.$conn->error);
          		 while($row = mysqli_fetch_assoc($resultat)) {
          			
          			$json[$row ["Id_categorie"]][] = utf8_encode($row ["designation_categorie"]);
          		}
          
          else 
          {
          	echo 'Erreur catégorie!';
          }
          	
          
          	}
          
          
          	
          
          	elseif(isset($_GET['categorie'])) {
          
          $var_cat=$_GET['categorie'] ;
          		$requete = "SELECT * FROM `sous_categorie` WHERE `id_categorie` = ORDER BY  `designation_sous_categorie` ASC";
          
          		
          	   $resultat = $conn->query($requete) or die ('Erreur '.$requete.' '.$conn->error);
          		 while($row = mysqli_fetch_assoc($resultat)) {
          			
          			
          			$json[$row["designation_sous_categorie"]][] = utf8_encode($row["designation_sous_categorie"]);
          		}
          
          else 
          {
          	echo 'Erreur sous catégorie!';
          }
          
          
          }
          
          
          
          
          
          
          	elseif(isset($_GET['sous_categorie'])) {
          
          	$var_sous_cat=$_GET['sous_categorie'];
          		$requete = "SELECT * FROM `element` WHERE `designation_sous_categorie`=$var_sous_cat  ORDER BY `Designation_element ` ASC";
          
          		   $resultat = $conn->query($requete) or die ('Erreur '.$requete.' '.$conn->error);
          		 while($row = mysqli_fetch_assoc($resultat)) {
          
          			$json[$row ["code_element"]][] = utf8_encode($row ["Designation_element"]);
          		}
          
          		
          else 
          {
          	echo 'Erreur sous catégorie!';
          }
          	}
          
          	echo json_encode($json);
          
          
          
          
          
          
          
          
          
          
          
          }
          
          ?>
          
          
      5. La page materiel.php
        <?php
        error_reporting(E_ALL);
        ini_set('display_errors',TRUE);
        ini_set('display_startup_errors',TRUE);
        include  'includes\db.php';    
        ?>
        
        <!DOCTYPE html>
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        		<title>BST Gestion</title>
        
        
           <script type="text/javascript" src="../bootstrap/js/jquery-3.2.1.js"></script>
           <script src="../bootstrap/js/bootstrap.js"></script>
           <script type="text/javascript" src="../bootstrap/js/liste.js"></script>
           <link rel="stylesheet" href="../bootstrap/css/bootstrap.css">
        
        
        <style>
        
        .user-row {
            margin-bottom: 14px;
        }
        
        .user-row:last-child {
            margin-bottom: 0;
        }
        
        .dropdown-user {
            margin: 13px 0;
            padding: 5px;
            height: 100%;
        }
        
        .dropdown-user:hover {
            cursor: pointer;
        }
        
        .table-user-information > tbody > tr {
            border-top: 1px solid rgb(221, 221, 221);
        }
        
        .table-user-information > tbody > tr:first-child {
            border-top: 0;
        }
        
        
        .table-user-information > tbody > tr > td {
            border-top: 0;
        }
        .toppad
        {margin-top:20px;
        }
        
        
        </style>
        
        </head>
        	<body>
        		<?php include 'includes/header.php';?>
        		<div class="container">
        
        
        <label> les catégories *:</label>
        <div class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
                  <select class="form-control" name="categorie" id="categorie">
                  <option value="">Séléctionner une catégorie</option>';
                 </select>
        </div>
        
                <label> les sous  catégories *:</label>
        
                 <div class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
                <select class="form-control" id="sous_categorie" name="sous_categorie">
                  <option value="">Séléctionner une  sous catégorie</option>';
                </select>
                </div>
        
        <!--Element-->
        
        <label> les elements *:</label>
        <br>
             <div class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
          <select class="form-control" name="element" id="element">
         <option value="">Séléctionner un élement</option>
        
        ?>
          </select>
        </div>
        
        
        </div>
        
        </body>
        </html>
        
        
        
        1. Modérateur
          1. j'ai trompé
            le page liste .php

            
            
            <?php
              include  'includes\db.php';  
            // Vérification des paramètres d'accès au fichier liste.php
            if(isset($_GET['go']) || isset($_GET['categorie']) || isset($_GET['sous_categorie'])) {
            	// connexion à la base de données
            
            	
            	$json = array();
            	
            	if(isset($_GET['go'])) {
            		// requête qui récupère les localités un
            		$requete = "SELECT * FROM `categorie` order by `designation_categorie` asc";
            		// exécution de la requête
            		$resultat = $conn->query($requete) or die(print_r($conn->errorInfo()));
            		// Création de la liste
            		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
            			// je remplis un tableau et mettant l'id en index
            			$json[$donnees["Id_categorie"]][] = utf8_encode($donnees["designation_categorie"]);
            		}
            	}
            	elseif(isset($_GET['categorie'])) {
            		// requête qui récupère les localités un
            		$requete = "SELECT * FROM `sous_categorie` WHERE `id_categorie` = '.$_GET['categorie'].' ORDER BY designation_sous_categorie ASC";
            		// exécution de la requête
            		$resultat = $conn->query($requete) or die(print_r($conn->errorInfo()));
            		// Création de la liste
            		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
            			// je remplis un tableau et mettant l'id en index
            			$json[$donnees["designation_sous_categorie"]][] = utf8_encode($donnees["designation_sous_categorie"]);
            		}
            	}
            	elseif(isset($_GET['sous_categorie'])) {
            		// requête qui récupère les localités un
            		$requete = "SELECT * FROM `element` WHERE `designation_sous_categorie`= '.$_GET['sous_categorie'].' ORDER BY Designation_element ASC";
            		// exécution de la requête
            		$resultat = $conn->query($requete) or die(print_r($conn->errorInfo()));
            		// Création de la liste
            		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
            			// je remplis un tableau et mettant l'id en index
            			$json[$donnees["code_element"]][] = utf8_encode($donnees["Designation_element"]);
            		}
            	}
            	 // envoi du résultat au success
            	echo json_encode($json);
            }
            
            ?>
            
          2. une erreur de syntaxe ; les quottes
            ps: rien n'a été affcihé!!
          3. Modérateur
            @deep_seaPour l'instant..; commence par faire ce que je t'ai indiqué dans les liens que je t'ai donné.
            puis repostes nous le code ainsi modifié.
          4. @deep_seavoila les modifications demandées
            page liste.php
            
            
            <?php
              include  'includes\db.php'; 
            
            
            error_reporting(E_ALL);
            
            ini_set('display_errors',TRUE);
            ini_set('display_startup_errors',TRUE);
            $conn->setattribute(PDO::ATTR_ERRMODE,ERRMODE_EXCEPTION);
            $conn->setattribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
            
            if(isset($_GET['go']) || isset($_GET['categorie']) || isset($_GET['sous_categorie'])) {
            
            
            	
            	$json = array();
            	
            	if(isset($_GET['go'])) {
            
            
            try{
            $requete = "SELECT * FROM `categorie` order by `designation_categorie` asc";
            	
            		$resultat = $conn->query($requete) or die(print_r($conn->errorInfo()));
            	
            		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
            			
            			$json[$donnees["Id_categorie"]][] = utf8_encode($donnees["designation_categorie"]);
            		}
            }
            catch(Exception $e)
            {
            
            	echo "ERREUR!".$e->getmessage();
            	echo "Les datas:";
            	print_r($donnees);
            }
            	
            	
            
            	}
            	elseif(isset($_GET['categorie'])) {
            
            try{
            $var_cat=$_GET['categorie'] ;
            		$requete = "SELECT * FROM `sous_categorie` WHERE `id_categorie` = ORDER BY  `designation_sous_categorie` ASC";
            
            		$resultat = $conn->query($requete) or die(print_r($conn->errorInfo()));
            
            		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
            			
            			$json[$donnees["designation_sous_categorie"]][] = utf8_encode($donnees["designation_sous_categorie"]);
            		}
            
            }
            
            catch(Exception $e1)
            {
            
            	echo "ERREUR!".$e1->getmessage();
            	echo "Les datas:";
            	print_r($donnees);
            }
            	}
            
            
            
            	elseif(isset($_GET['sous_categorie'])) {
            
            
            		try{	$var_sous_cat=$_GET['sous_categorie'];
            		$requete = "SELECT * FROM `element` WHERE `designation_sous_categorie`=$var_sous_cat  ORDER BY `Designation_element ` ASC";
            
            		$resultat = $conn->query($requete) or die(print_r($conn->errorInfo()));
            	
            		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
            
            			$json[$donnees["code_element"]][] = utf8_encode($donnees["Designation_element"]);
            		}}
            
            	}
            
            	echo json_encode($json);
            
            
            
            catch(Exception $e2)
            {
            
            	echo "ERREUR!".$e2->getmessage();
            	echo "Les datas:";
            	print_r($donnees);
            }
            
            
            }
            
            ?>
            


            page materiel.php

            include  'includes\db.php';    
            
            
            
            
            <label> les catégories *:</label>
            <div class="input-group">
            <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
                      <select class="form-control" name="categorie" id="categorie">
                      <option value="">Séléctionner une catégorie</option>';
                     </select>
            </div>
            
                    <label> les sous  catégories *:</label>
            
                     <div class="input-group">
            <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
                    <select class="form-control" id="sous_categorie" name="sous_categorie">
                      <option value="">Séléctionner une  sous catégorie</option>';
                    </select>
                    </div>
            
            <!--Element-->
            
            <label> les elements *:</label>
            <br>
                 <div class="input-group">
            <span class="input-group-addon"><i class="glyphicon glyphicon-th-list"></i></span>
              <select class="form-control" name="element" id="element">
             <option value="">Séléctionner un élement</option>
            
            ?>
              </select>
            </div>
            
          5. Any help !!