liste déroulante dynamique

Eléphanteau du PHP | 11 Messages

18 avr. 2012, 16:42

Bonjour à tous,

L'idée est de récupérer la moyenne des cours d'un étudiant en fonction d'une période (par exemple: un trimestre ou un semestre). En ce moment, la moyenne des cours se fait sur l'ensemble des notes toutes dates confondus.

Pour faire simple j'ai une liste déroulante associé à des périodes (semestre 1, semestre 2 etc..) qui sont récupéré dans une table de ma base de donnée.
J'ai également un graphique (j'ai utilisé google chart). J'arrive à afficher les moyennes de chaque cours.

Je veux ajouter dans ma requête qui récupère les moyennes, une variable qui contient la période sélectionné dans la liste déroulante et donc afficher les moyennes dont les notes sont compris dans cette période.

J'ai pensé à utiliser onchange="this.form.submit()" dans mon select mais trop simple, j'aimerais optimisé ça sans que la page se recharge :roll:
Pour l'instant en ajax, j'arrive à récupérer le name et la value de la sélection faite dans la liste déroulante et je n'arrive pas coté PHP à obtenir ces informations dans des variables.

Y a t-il une astuce pour récupérer la valeur sélectionné dans la liste déroulante dans le code PHP ? (je ne pense pas)
Comment pourrai je obtenir l'option que le client sélectionne dans mon select côté dans le code PHP?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 avr. 2012, 18:07

Salut,

Sans rechargement de la page effectivement va falloir passer par Ajax.

Si en JS tu arrive à récupérer la valeur sélectionnée tu peux faire une requête sur un fichier php (en passant en GET ou post la valeur et faire la requête SQL dans le fichier php cible.
Pour que php puisse utiliser le retour de la requête il faut "afficher" le résultat sous forme XML ou en json.

Avec pdo c'est tes simple un fetchAll (et un mode pdo::fetch_assoc) + json_encode sur le résultat.
Et un écho du json.

En Javascript tu récupère le json qui va être utilisé pour fait d'une tableau.

Regarde la doc des fonctions, essai et si tu bloque revient avec le code ;)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 11 Messages

18 avr. 2012, 20:35

Merci de la réponse rapide,



Alors je n'ai pas tout saisie tout ce que tu m'as dit: Pourquoi tu as cité json et tableau ?

Mais, J'ai réussis avec les variables que j'ai récupéré dans le select (le name et la value) en JS, puis j'ai reconstruit l'URL en récupérant les anciens paramètres et
je lui ai ajouté juste "&name=value" puis j'ai fais un "document.location=temp_url;"

Ensuite côté PHP, j'ai récupérer la variable que j'ai ajouté dans le l'url par :

if (isset($_GET['opt'])){
$element_select = $_GET['opt'];}
echo "element_select :".$element_select;

En faite la, l'élément récupéré par le GET c'est la période que je voulais, je vais construire une requête MySQL en ajoutant cette variable. Mais bon la page se rafraîchis quand j'utilise "document.location=temp_url;" c'est bien mais c'est pas forcément ce que je voulais 8-|