Crée une liste liée avec ou sans Ajax

Messages postés
139
Date d'inscription
samedi 19 juillet 2014
Statut
Membre
Dernière intervention
14 août 2019
- - Dernière réponse : jordane45
Messages postés
26135
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 août 2019
- 13 août 2019 à 11:26
Bonjour,

Je possède une base de données qui contient 2 tables :
une table promo_matiere avec un id_matiere, un nom_matière et une promo
une table matiere_module avec un id_module, un id_matiere, un nom_module

Je souhaite faire 3 listes déroulantes liée : une liste choix promo, une liste choix matière et une liste choix module

J'ai chercher des solutions et j'ai l'impression qu'il y a 1000 manière de faire, ! Avec AJAX, sans AJAX, avec onchange, sans onchange enfin je m'y perd. J'ai essayé plusieurs manière, mais je bloque toujours à un moment donné...

Je cherche donc une solution pour réalisé ces 3 listes.

Merci d'avance pour votre aide et vos conseils

Victor


Configuration: Windows / Firefox 68.0
Afficher la suite 

1 réponse

Messages postés
26135
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 août 2019
1758
0
Merci
Bonjour,

Pour créer des listes liées, le ONCHANGE est impératif.

après... soit tu charges les données possibles des différentes listes directement dans ta page (ce qui peut prendre de la place en mémoire... ).... soit tu utilises l'ajax.

Pour l'ajax, il existe plusieurs facçons :
le xmlhttprequest en "pure" javascript
Le $.Ajax en jquery (c'est lui que je t'invite à utiliser.. car plus simple )


En gros tu auras :
pour chaque liste, un code Javascript du genre
$('#liste1').on('change',function() {
     $.ajax({
         url: 'tonfichierphpAjax.php',
         type: 'POST',
         dataType: "json",
         data: {
             'liste1_value': $(this).val()
         },
         success: function(result) { //we got the response
              // ici tu devras mettre le code pour alimenter la liste suivante en te servant de ce qu'il y a dans la variable result
         },
         error: function(jqxhr, status, exception) {
             alert('Exception:', exception);
         }
     })
 })

Un fichier php tonfichierphpAjax.php
 <?php
  //connexion à la bdd

 //récupération des variables provenant de ton appel ajax
 $liste1_value = !empty($_POST['liste1_value']) ? $_POST['liste1_value'] : NULL;

//la requete à la bdd
$sql = " SELECT *
            FROM tatable
            WHERE tonchamp = '$liste1_value'";

 //.....
 $result = //.... le resultat de la requete


 // et enfin.. renvoyer les données vers le JS
echo json_encode($result);

  ?>



Quoi qu'il en soit, il existe des miliers de tutos à ce sujet sur le net.
Comme tu l'as dit.. tu as déjà essayé des codes.. mais tu bloques...
Donc commence par nous montrer tes codes ( en les postant ici via le bouton Balises de code du menu )
et en détaillant bien le nom de de chaque fichier et son emplacement dans ton site..


NB : Explications pour les balises de code à lire ici avant de poster :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code


NB² :
Je t'invite également à lire le contenu de ces liens ( et à les appliquer dans ton code ! )
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

NB3 : Et enfin, voici quelques exemples :
http://codes-sources.commentcamarche.net/source/102253-exemple-ajax-en-jquery


Cordialement,
Jordane
Commenter la réponse de jordane45