CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Php/MySQL : besoin d'aide

Aspirateub
Aspirateub
Niveau 9
26 juin 2013 à 00:15:05

Bonsoir,

Je suis actuellement en stage en informatique (1ère année BTS SIO), et je bloque complètement sur l'une des choses que je dois faire.
Je viens donc demander un peu d'aide, pas forcément pour le code, mais pour savoir par ou commencer, pour le moment c'est page blanche :(

Un peu compliqué a expliquer, mais en gros :
Dans une page "questionnaire", je dois afficher des questions, avec plusieurs choix. En fonction du choix "choisi", une autre question arrive, avec encore d'autres choix, et ainsi de suite ...
Il y a donc un enchainement de plusieurs "questions" avec plusieurs choix à chaque fois.
Un "accordéon" JQUERY peut etre utilisé, avec une question/réponse par section.

Le "problème", la ou je bloque complètement, c'est que toutes ces questions et ces choix se trouvent dans une base de données.
Dans la table "choix", certains choix ont une "Question cible", c'est a dire la question suivante, en fonction de ce choix (je veux dire par la, la question sera différente si je choisis "blanc" ou "noir")
Cette question cible, c'est l'ID d'une question dans la table Question, qui sera la prochaine question du questionnaire.
Chaque choix a donc une question "parent", c'est a dire la question a laquelle ces choix sont des réponses.
Si un "choix" n'a pas de question cible, on considère que c'est une question finale et on redirige vers une autre page (questionnaire_final)

On m'a parlé de fonction récursive en PHP, de l'utilisation des objets (setters/getters), que je devrais probablement utilisé pour faire ca.
Mais le fait que tout cela soit gèré directement depuis la base de données, et non "en dur" dans le code ... Je ne sais pas du tout comment gèrer ca, j'ai l'impression d'être face a un mur.

Comment afficher la 1ère question avec différents choix de réponse depuis la base ? Comment faire pour que la question suivante s'affiche en fonction du choix de la 1ère ?
Requêtes SQL ? Fonctions récursives en PHP ? Classes d'objets a créer ?

Je sais pas si j'ai été clair, même dans ma tête c'est pas très clair. Merci d'avance si quelques personnes arrivent a m'éclairer un peu, ou au moins me donner une piste, quelque chose pour essayer d'avancer ... :)

junkoftheheart
junkoftheheart
Niveau 10
26 juin 2013 à 00:24:00

pas très clair tu peux y allez à coup de if
pour la redirection tu le fais avec header(location:...)
les objets pas obligé mais si tu t'y connais en poo fais le

Pseudo supprimé
Pseudo supprimé 26 juin 2013 à 00:27:57

Tu vas devoir utiliser des jointures SQL dans un cas comme celui-ci. Il faut donc que tu as une structure, dans ta BDD, solide, afin de facilité les gestion :ok:

http://www.siteduzero.com/informatique/tutoriels/introduction-aux-jointures-sql

Ensuite, essai de créer un ensemble de fonctions, ou même de classes, pour gérer ton questionnaire, etc.

Pseudo supprimé
Pseudo supprimé 26 juin 2013 à 00:28:58

Il faut donc que tu aies* ^^

Aspirateub
Aspirateub
Niveau 9
26 juin 2013 à 00:35:23

Le problème c'est que je ne dois pas y aller a coup de if.
Tout doit être fait dans une même page "questionnaire". Une redirection se fait seulement une fois qu'on a répondu a l'enchainement de questions.
Ces questions s'affichent dynamiquement, en fonction de la question précédente et de la réponse donnée a celle-ci.

L'arborescence, c'est à dire le "déroulement" des questions-réponses doit etre définie depuis la base de données directement.

Exemple de ce qui est attendu (en plus complèxe et avec plusieurs questions/choix et "scénarios" possibles)

Q1 : Aimez vous le chocolat ?
--- Si Choix 1 : oui
===> Question 2 : Quel est votre type de chocolat préféré ?
Choix 3 : Noir
Choix 4 : Blanc
Choix 5 au lait
En fonction de la réponse ===> Question 3 : Quelle est votre marque préférée ?

---Si Choix 2 : non
===> Question 2 Vous n'aimez pas le chocolat, mais aimez vous le café ?
Choix 1 : aaa
Choix 2 : bbb

etc...
Et a chaque fois qu'on fait un "choix", c'est a dire une réponse a une question posée, on doit afficher la suivante, en fonction de ce choix.

Sauf que toutes ces questions et ces choix, c'est pas en dur dans le code avec des if ou un switch/case, mais tout est fait depuis la base de données. Ce qui complique beaucoup les choses pour moi :(

C'est assez clair dans ma tête la, je sais pas si j'arrive bien a décrire l'idée :(

minimoit
minimoit
Niveau 7
26 juin 2013 à 07:22:55

Pour résoudre ton problème,il faut utiliser AJAX.

Le principe consiste à partir de ta page de questionnaire sur un événement onclick ou stateChange,de faire un appel AJAX en GET chargé d'appelé un script PHP et de récupérer les données renvoyés sous format xml.

Par exemple :

xhr.open("GET", "http://monSite/scriptRécupérationBD.php", true);
xhr.send();

Et là,en fonction de la case coché dans le questionnaire,le script PHP construit la requête SQL permettant de récupérer les prochaines questions.Le AJAX GET ensuite le résultat XML renvoyé sans recharger la page du questionnaire.Il te suffit ensuite d'afficher le tout.

Tu peux te renseigner sur l'objet XMLHttpRequest ou sur AJAX en général pour t'aider à comprendre.

http://gael-donat.developpez.com/web/intro-ajax/

minimoit
minimoit
Niveau 7
26 juin 2013 à 07:40:59

J'oubliais : Pour passer la case coché au script PHP,il suffit d'ajouter un paramètre dans l'URL.

monChamp : variable JS remplis par l'événement onclick,stateChange ou autres.

xhr.open("GET", "http://monSite/scriptRécupérationBD.php?champ=mon
Champ",
true);

Tu injecte ensuite le paramètre dans la clause WHERE de la requête SQL du script php.

Jobs done :)

Aspirateub
Aspirateub
Niveau 9
27 juin 2013 à 20:09:15

Merci de ta réponse :)

Ca me donne une idée de comment procéder, mais ca m'a l'air bien compliqué tout ca, par rapport a mon niveau :(

J'ai du reprendre d'autres choses plus urgentes, mais je me remettrais surement a ca d'ici lundi, en éspérant que j'arrive a produire quelque chose :P

Vis1teur
Vis1teur
Niveau 10
29 juin 2013 à 21:16:37

Tu pourrai pas juste batir un arbre de toute les possibilitées en récupérant les parents avec SQL et après t'as plus qu'à faire du jquery pour afficher/cacher ?
(sauf si il y a énormément d'entrées ou de possibilités, dans ce cas là c'est trop lent)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment