Probleme urgent : modifier l'ordre des questions dans mon appli

sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007 - 21 mars 2007 à 15:15
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 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.

sabrina

17 réponses

cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 décembre 2010
21 mars 2007 à 15:20
Hello,

tu peux essayer de mettre un champ order dans ta table qui sera en fait un entier représentant la position de ta question dans le formulaire.
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 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.


Merci beaucoup quand meme.

sabrina
0
cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 décembre 2010
21 mars 2007 à 15:36
tu peux envoyer la structure de ta db ?
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 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 :

PQ_QUESTIONS                   dbo                            user table                     
Data_located_on_segment        When_created      
 ------------------------------ -------------------
 default                        Jul 18 2006 12:20PM


 Column_name                    Type                           Length      Prec Scale Nulls Default_name                   Rule_name                      Access_Rule_name               Identity
 ------------------------------ ------------------------------ ----------- ---- ----- ----- ------------------------------ ------------------------------ ------------------------------ --------
 id_quiz                        int                                      4 NULL  NULL     0 NULL                           NULL                           NULL                                  0
 id_version_quiz                int                                      4 NULL  NULL     0 NULL                           NULL                           NULL                                  0
 id_question                    int                                      4 NULL  NULL     0 NULL                           NULL                           NULL                                  0
 question                       varchar                                250 NULL  NULL     0 NULL                           NULL                           NULL                                  0
 num_bonne_reponse              int                                      4 NULL  NULL     0 NULL                           NULL                           NULL                                  0
 order_quest                    int                                      4 NULL  NULL     1 NULL                           NULL                           NULL                                  0


 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


 Column_name                    Type                           Length      Prec Scale Nulls Default_name                   Rule_name                      Access_Rule_name               Identity
 ------------------------------ ------------------------------ ----------- ---- ----- ----- ------------------------------ ------------------------------ ------------------------------ --------
 id_quiz                        int                                      4 NULL  NULL     0 NULL                           NULL                           NULL                                  0
 id_version_quiz                int                                      4 NULL  NULL     0 NULL                           NULL                           NULL                                  0
 id_formation                   int                                      4 NULL  NULL     0 NULL                           NULL                           NULL                                  0
 id_version_formation           int                                      4 NULL  NULL     0 NULL                           NULL                           NULL                                  0
 titre_quiz                     varchar                                100 NULL  NULL     0 NULL                           NULL                           NULL                                  0
 date_creation                  datetime                                 8 NULL  NULL     0 NULL                           NULL                           NULL                                  0


 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                     


(1 row affected)
 Data_located_on_segment        When_created      
 ------------------------------ -------------------
 default                        Jul 18 2006 12:20PM


 Column_name     Type            Length      Prec Scale Nulls Default_name    Rule_name       Access_Rule_name               Identity
 --------------- --------------- ----------- ---- ----- ----- --------------- --------------- ------------------------------ --------
 id_quiz         int                       4 NULL  NULL     0 NULL            NULL            NULL                                  0
 id_version_quiz int                       4 NULL  NULL     0 NULL            NULL            NULL                                  0
 id_question     int                       4 NULL  NULL     0 NULL            NULL            NULL                                  0
 id_choix        int                       4 NULL  NULL     0 NULL            NULL            NULL                                  0
 choix           varchar                 100 NULL  NULL     0 NULL            NULL            NULL                                  0
 explication     varchar                 250 NULL  NULL     0 NULL            NULL            NULL                                  0


 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 décembre 2010
21 mars 2007 à 15:59
Mais en fait le champ order_quest existe déjà, pourquoi tu ne l'utilises pas ?
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 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?

sabrina
0
cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 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.
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 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??

Encore merci.

sabrina
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 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.

sabrina
0
cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 décembre 2010
21 mars 2007 à 16:37
Peux tu donner un exemple de ta requête ?
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 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
0
cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 décembre 2010
21 mars 2007 à 16:55
Non en fait je voulais ta requete de selection, pas l'update.

En ce qui concerne ton autre question, fais un autre post.
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 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";
  }
 }
 
 if(!$result=sybase_query($sql,$dblink))
  return false;




 $tabResult=array();
 $i=0;
 while($row=sybase_fetch_object($result)) { 
  $tabResult[$i]["id_question"]=$row->id_question;
  $tabResult[$i]["question"]=$row->question;
  $tabResult[$i]["num_bonne_reponse"]=$row->num_bonne_reponse;
  $i++;  
 }
 return $tabResult;
}




et pour les choix :

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";
  }
 }
 
 if(!$result=sybase_query($sql,$dblink))
  return false;




 $tabResult=array();
 $i=0;
 while($row=sybase_fetch_object($result)) {
  $tabResult[$i]["id_choix"]=$row->id_choix;
  $tabResult[$i]["choix"]=$row->choix;
  $tabResult[$i]["explication"]=$row->explication;
  $i++;  
 }
 return $tabResult;
}



Merci.
sabrina
0
cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 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.
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 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.

sabrina
0
cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 décembre 2010
21 mars 2007 à 18:01
Bon alors je ferais le traitement suivant :

Pour chaque question :
    Affiche la question ;
       Pour chaque choix :
          Affiche le choix ;
       Fin
Fin
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007
21 mars 2007 à 18:06
Euh oui mais quel est le rapport avec mon order_quest? (désolée il se fait tard, mon cerveau tourne au ralenti)...

sabrina
0
Rejoignez-nous