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

Fermé
victorberson Messages postés 139 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 14 août 2019 - 13 août 2019 à 09:50
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 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
A voir également:

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 13 août 2019 à 11:26
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-poster-un-extrait-de-code


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

https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

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


0