Probleme urgent : modifier l'ordre des questions dans mon appli
sabou94
Messages postés158Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention17 avril 2007
-
21 mars 2007 à 15:15
sabou94
Messages postés158Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention17 avril 2007
-
21 mars 2007 à 18:06
Bonjour,
voilà mon probleme :
je fais des modifications sur un gestionnaire de questionnaire, et je rencontre un probleme :
apres qu'un questionnaire ait été saisi, ainsi que les questions/reponses qui le composent, l'administrateur peut modifier ce quiz. Ainsi il peut modifier les questions (créer une nouvelle version du quiz), et doit pouvoir changer les questions de place (question 2 en premier et inversement par exemple)
C'est là que je bloque, car je ne vois pas comment modifier les questions de place (sachant qu'elles sont reliées aux reponses et aux choix, donc 2 autres tables) sans modifier l'id de la question.
Avez vous une solution?? Je ne peux pas supprimer de questions ou modifier l'id (contrainte d'integrité)
Merci beaucoup.
sabou94
Messages postés158Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention17 avril 2007 21 mars 2007 à 15:33
C'est ce que j'ai essayé de faire mais le probleme c'est que ca marcherai pour un simple affichage mais les questions sont réutilisés par exemple pour faire des graphiques, des pdf, et surtout l'id de la question est réutilisé dans d'autres tables donc ca ne marcherai pas. Une autre idée? je pensais modifier la fonction qui crée une nouvelle version de quiz et associé les id aux données du champ order justement mais je ne sais pas trop comment faire et jsuis meme pas sure que ca soit possible.
sabou94
Messages postés158Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention17 avril 2007 21 mars 2007 à 15:47
Euh je sais pas je suis stagiaire et je travaille sur un serveur de développement donc je sais pas trop. Je peux te donner la structure des tables qui sont ici concernées :
TABLE QUESTIONS :
index_name index_description index_keys index_max_rows_per_page index_fillfactor index_reservepagegap index_created
------------------------------ -------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------- ---------------- -------------------- -------------------
PQ_QUESTIO_6187945811 clustered, unique located on default id_quiz, id_version_quiz, id_question 0 0 0 Jul 18 2006 12:20PM
No defined keys for this object.
Object is not partitioned.
TABLE QUIZ :
Name Owner Object_type
------------------------------ ------------------------------ --------------------------------
PQ_QUIZ dbo user table
Data_located_on_segment When_created
------------------------------ -------------------
default Jul 18 2006 12:20PM
index_name index_description index_keys index_max_rows_per_page index_fillfactor index_reservepagegap index_created
-------------------- -------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------- ---------------- -------------------- -------------------
PQ_QUIZ_5707944101 clustered, unique located on default id_quiz, id_version_quiz 0 0 0 Jul 18 2006 12:20PM
No defined keys for this object.
Object is not partitioned.
TABLE CHOIX :
Name Owner Object_type
------------------------------ ------------------------------ --------------------------------
PQ_CHOIX dbo user table
index_name index_description index_keys index_max_rows_per_page index_fillfactor index_reservepagegap index_created
-------------------- -------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------- ---------------- -------------------- -------------------
PQ_CHOIX_6667947521 clustered, unique located on default id_quiz, id_version_quiz, id_question, id_choix 0 0 0 Jul 18 2006 12:20PM
No defined keys for this object.
Object is not partitioned.
Voilà, ca fait beaucoup, sorry je bosse sur sybase.
Je trouve pas de solutions, ca fait deux jours ca me soule un peu, surtout que je reprend une application, donc j'ai pas la logique de la personne qui l'a créée.
Merci de ton aide.
Sabrina
Vous n’avez pas trouvé la réponse que vous recherchez ?
sabou94
Messages postés158Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention17 avril 2007 21 mars 2007 à 16:06
C'est moi qui l'ai crée sur la table questions, mais le probleme c'est que les choix ne sont pas liés à l'ordre donc quand je change l'ordre, je n'ai pas les bonnes reponses aux questions car les reponses sont liées à l'id de la question (ce qui est normal).
Alors je vois pas comment faire pour lui dire de changer aussi les choix en plus des questions?
cs_morpheus57
Messages postés121Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention30 décembre 2010 21 mars 2007 à 16:23
Attends je comprend pas, tu dis : "les reponses sont liées à l'id de la question" ok, là je suis d'accord avec toi.
Ensuite tu ajoute : "quand je change l'ordre, je n'ai pas les bonnes reponses aux questions" là je ne suis pas d'accord. Je m'explique : la liste de tes choix est liée à la question, donc peu import l'ordre de cette question dans le quiz.
sabou94
Messages postés158Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention17 avril 2007 21 mars 2007 à 16:24
En passant, une autre question, l'appli est gerée à partir de mode (passée dans l'url), en gros ca donne if mode=... alors... et en fait je remplis un tableau
dans une des conditions (if $mode ==3) et je veux faire un foreach de ce meme tableau dans une autre condition (if $mode==4), mais ca ne marche pas, c'est comme
si il ne reconnaissait pas le tableau (Invalid argument supplied for foreach() ) pourtant j'ai déclaré la variable en globale ( global $orderId;)
Alors où est le probleme? ce n'est pas possible de déclarer un tableau global??
sabou94
Messages postés158Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention17 avril 2007 21 mars 2007 à 16:33
Et bien si, car l'id de ma question ne change jamais, or quand je change le order_quest, il m'affiche bien le changement d'ordre (ex : question 3 puis question 2) mais les choix ne sont pas changés avec. Du coup je me retrouve avec les reponses de la question 2 sur la 3 et vice versa. L'ordre et les choix ne sont pas liés. A moins que je
fasse mal ma requete mais je ne sais pas comment modifier aussi les choix.
sabou94
Messages postés158Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention17 avril 2007 21 mars 2007 à 16:41
En fait c'est une fonction :
function saveOrder($dbconnection,$id_quiz,$id_version_quiz,$id_question,$order_quest){
$request_order="update PQ_QUESTIONS set order_quest=".$order_quest." where id_quiz=".$id_quiz." and id_version_quiz=".$id_version_quiz." and id_question=".$id_question;
sybase_query($request_order,$dbconnection);
}
Et je ne sais pas comment y associer les choix vu que c'est une autre table et que de toute facon je ne touche pas à l'id?
C'est sur ca que je cherche une solution (et aussi le truc du tableau si tu sais pourquoi ca maiderai...)
sabrina
sabou94
Messages postés158Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention17 avril 2007 21 mars 2007 à 17:05
Oki pour l'autre question. Je comprend pas de quelle requete tu parle? celle qui affiche les questions ou les choix?
pour les questions la voilà :
function getQuestions($dblink,$id_quiz,$id_version) {
if ($id_quiz=="") {
alertPHP('Erreur : id_quiz = null');
}
else {
if ($id_version==null){
$sql="select id_question, question, num_bonne_reponse from PQ_QUESTIONS Q where id_quiz=".$id_quiz." and id_version_quiz=(SELECT MAX(QQ.id_version_quiz) FROM PQ_QUIZ QQ WHERE Q.id_quiz=QQ.id_quiz) order by order_quest";
}
else{
$sql="select id_question, question, num_bonne_reponse from PQ_QUESTIONS where id_quiz=".$id_quiz." and id_version_quiz=".$id_version." order by order_quest";
}
}
function getChoices($dblink,$id_quiz,$id_version,$id_question) {
if ($id_quiz=="") {
alertPHP('Erreur : id_quiz = null');
}
else{
if ($id_version==null){
$sql="select id_choix, choix, explication from PQ_CHOIX Q where id_quiz=".$id_quiz." and id_version_quiz=(SELECT MAX(QQ.id_version_quiz) FROM PQ_QUIZ QQ WHERE Q.id_quiz=QQ.id_quiz) and id_question=".$id_question. " order by id_choix";
}
else{
$sql="select id_choix, choix, explication from PQ_CHOIX where id_quiz=".$id_quiz." and id_version_quiz=".$id_version." and id_question=".$id_question." order by id_choix";
}
}
cs_morpheus57
Messages postés121Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention30 décembre 2010 21 mars 2007 à 17:19
En fait ta requete pour récupérer les question d'un quiz est bonne.
Par contre celle pour récupérer les choix pour chaques questions, et non pas pour chaque quiz.
Donc tu as le choix : soit tu fais une requete par question (pour récupérer tous les choix de cette question), soit tu fais une requete pour récupérer tout les choix du quiz. Si tu opte pour la seconde méthode, tu dois ajouter le champ question_id dans ton second select pour pouvoir faire le traitement en php.
sabou94
Messages postés158Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention17 avril 2007 21 mars 2007 à 17:35
Je comprend pas : la requete getChoices récupere tous les choix d'une question donnée, c'est pareil que ta solution 1.
A moins de prendre les choix par rapport à l'order_quest et non plus par rapport à l'id_question.