wookiee80
Messages postés14Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention26 mars 2009
-
12 juin 2008 à 13:55
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 2010
-
27 juin 2008 à 10:35
Bonjour tout le monde.
J'ai besoin d'un peu d'aide pour finaliser ce code dans lequel je patoge un peu
donc voila le principe est:
ce
code dois générer une série de question incluant un formulaire pour
chacune d'elle différent suivant si la question a déjà ou non été
répondu.
donc si ça a été répondu par la réponse pas_acquis:
je redonne la question avec comme possibilité répondre
par en cours d'acquisition ou acquis
si ça a été répondu pas en_cours:
je redonne la question avec pour seule possibilité choisir acquis
et si c acquis j'affiche juste la question.
tout ça je le gère avec une table question dans laquelle j'ai l'ID de la question plus la question en elle même
et
une table réponse contenant l'ID réponse, l'ID de la question, le n° de
l'agent(retenu dans une session), pas acquis, en cours et acquis.
Pour l'instant le résultat est :
j'obtiens bien la liste de mes questions.
le formulaire qui va avec qui est celui avec les trois choix étant donné que la table réponse est vide.
Par contre rien ne s'enregistre au niveau de la table réponse lorsque j'envoie un choix.
Donc je pense que ça vient du fait que je créé ma variable $ID_question_traitement avant ma fonction mysq_fetch_array.
Mais le problème c'est que je ne sais pas du tout comment bouger l'un
ou l'autre étant donné que si je bouge ma variable alors elle ne sera
pas prise en compte au départ. Et si je bouge ma fonction j'avance d'un
cran dans le tableau créé par cette fonction et me retrouve alors
coincé.
Donc voila le code en question:
if (empty($_SESSION['epicea']))
{
header("location:accueil_questionnaire.php");
}
wookiee80
Messages postés14Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention26 mars 2009 17 juin 2008 à 11:26
bonjour et encore merci à vous deux pour vous avoir penché sur mon probleme ;)
JoJo738 => merci pour ton exemple :)
ok oui je vois le truc avec le foreach, je crois que c'est un peu ça qui me foutait dedans et qui traitait toute les questions comme une seule.
J'ai été me renseigné un peu sur la serialisation. Je comprends globalement le but mais qu'a t'elle de different avec les variable superglobales de type POST, SESSION,... ?
MasterCent => je vois, la construction de tes tables en fait est similaire aux miennes.
d'un coté j'ai ma table question avec un ID et un champ pour la question en elle meme
et une table reponse avec un ID, l'ID de la question posée qui s'enregistre avec la requete, l'epicea de l'agent a qui a été posée la question, et la situation de la question.
comme m'a dit JoJo ça ne servait a rien de garder mes trois champs alors que de toute façon un et un seul etat de reponse est possible.
Je te remercie pour la requete car je pense que c celle ci qui est primordiale.
merci aussi pour tes exemples. ;)
En fait je vais debrouissailler ça tout de suite.
Revoir mon code en incluant d'ailleurs une fonction par rapport à ton exemple pour la clarté.
Par contre j'ai du mal a voir un truc dedans, pardon je pense que c dû à mon incompetence en php encore
ou et quand j'update ma table reponse ainsi ? car je vois bien que la construction des formulaires se fait avec le $R_Statut mais par contre je ne vois pas comment a l'envoie de la reponse par l'agent cela s'update.
wookiee80
Messages postés14Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention26 mars 2009 17 juin 2008 à 14:35
oui merci MasterCent
dslé j'ai été bete de te demander ça ;)
je me suis un peu embrouillé car etant novice il y a beaucoup de chose que je ne fais pas genre:
// securité :
if ( ! (is_numeric ( $UID )) ) Die ( "tentative d'intrusion" );
$result = "" ;
alors que je devrais prendre l'habitude de securiser mon code.
Oui JoJo738 a parlé de serialisation je n'avait pas melanger les deux
la je suis sur un autre projet.
en fait en tre deux je dois faire aussi un site.
Pas pour moi c pour une association donc on me demande des comptes aussi pour ça.
Je vais repasser sur le projet dont on parle en fin d'apres midi
donc je vous tiens tous les deux au courant des choses.
wookiee80
Messages postés14Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention26 mars 2009 20 juin 2008 à 11:41
Bonjour à vous.
Me revoila sur le projet.
J'ai dû avancer le site pour l'association pour leur montrer pendant une réunion la strucure
globale.
Ensuite m'occuper d'un chat php.
Donc j'ai repris le script et j'ai remis en forme par rapport à votre aide.
à Master100
Dans la requet sql :
// interrogation de la base de données,
$sql = " SELECT Q_ID , Q_NUM , Q_TEXT ,
if ( isnull( R_STATUT ) , 0 , R_STATUT ) AS STATUT
FROM `test_quest` left join
( select * from `test_rep` where R_U_ID = 77 ) alias_R
on Q_ID = R_Q_ID " ;
j'ai mis en rouge les zones d'ombre
j'ai recherché sur les site les alias mais en fait je ne comprends pas trop le truc
l'alias se fait entre le champ Q_ID de la table test_quest et le champ R_Q_ID de la table test_rep
c'est bien ça ?
le isnull va servir à savoir si le champ R_STATUT contient une réponse.
Mais on fait la requete sur la table test_quest alors que le champ se trouve dans la table test_rep.
Désolé je pense que c'est une incompréhension de ma part mais je ne tiens pas a recopier ton code bêtement sans comprendre
C'est là que je pêche en fait.
en tout cas merci
et puis bon courage pour le boulot surtout
à JoJo738
pour la sérialisation je bosse dessus.
En fait je crois que je m'etais mal exprimé car dans ma table reponse je n'enregistre pas la question entiere juste son ID pour la reconnaitre.
Pour un user elle ne sera presente qu'une fois et c son champ STATUT qui lui va evoluer suivant l'état de la reponse.
mis a part ça j'espere que pour toi le bac se passera bien
bon courage surtout
et un grand merci pour tout.
Je n'ai pas encore mis tous vos post en réponse acceptée car j'en ai pas fini
mais une fois ça fait ce sera l'integralité qui sera accepté
Car non seulement cela m'aide sur le projet mais j'apprends beaucop de choses qui vont
me servir plus tard sur d'autres script.
encore merci à vouss deux !
wookiee80
Messages postés14Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention26 mars 2009 25 juin 2008 à 10:00
Bonjour à vous deux.
J'espère que vous allez bien
je ne reposte que maintenant car comme je vous avez dit je suis reparti sur un autre projet celui du site.
D'ailleurs je me sers de ce que j'ai appris avec vous sur ce projet c'est super interessant.
MasterCent =>
merci oui en fait j'etais parti sur le système d'alias en sql et ne faisais pas la jonction entre la requête que tu m'as donné et ce systême.
Ensuite, au vue de ta réponse à mes interrogations je me suis repenché sur les jointures et sur le fait de renommer une sous requête.
Voila donc j'ai mis tout ça en place mais j'ai toujours deux problèmes majeurs.
Le premier c'est qu'à chaque fois j'ai ce :
if ( ! (is_numeric ( $epicea )) ) Die ( "tentative d'intrusion" );
qui est pris en compte. Pourtant $epicea est bien un nombre. J'ai regardé bien sûr ce qui était pris en compte dans cette fonction "is_numeric" est la variable de session $epicea en fait partie.
Le second problême c'est que je ne rentres rien dans ma table.
Dès que j'envoie une réponse j'ai l'erreur:
Unknown column 'R_ID_questions = 1 LIMIT 1' in 'where clause'
Donc je comprends bien que cela vient du WHERE de la requête mais ta requête pourtant est bonne, c'est bien ce que l'on cherche.
Mon code n'est pas trait pour trait à celui que tu m'as donné c'est sur car je n'ai pas recopié bêtement, ça ne sert à rien je n'aurait pas compris le systême. Mais dans tous les cas les grosses étapes n'ont pas été changées pour éviter justement de faire n'importe quoi.
enfin voila désolé de t'embeter encore avec ça.
Je te souhaites une bonne journée
et encore un grand merci pour ton aide salvatrice
à +
wookiee80
Vous n’avez pas trouvé la réponse que vous recherchez ?
wookiee80
Messages postés14Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention26 mars 2009 25 juin 2008 à 13:56
oh que oui il m'aide !
en plus de vous qui m'aidez en PHP certains tutos m'aident aussi en javascript.
ok oui j'avais compris que cela permettait d'être sûr de travailler avec un numéro
par contre à la saisie en effet j'ai mis un addslashes().
Ah oui c'est malin ce transtypage. Si ce n'ai pas un nombre ça cause une erreur oui je vais opter pour
ça je crois.
alors j'ai injecté directement les requêtes au niveau de mysql.
Pour la requete:
"SELECT ID_questions_traitement,question_traitement ,
if ( isnull( R_STATUT ) , 0 , R_STATUT ) AS STATUT
FROM questions_traitement left join
( SELECT * from reponses_traitement where epicea = '".$epicea."' ) alias_R
on ID_questions_traitement = R_ID_questions " ;
j'obtiens donc le tableau avec en colonnes:
ID_questions_traitement, question_traitement de la table questions_traitement
et la colonne STATUT de la table reponse_traitement.
Par contre ça m'affiche les 31 lignes des 31 questions avec leur ID de la table questions_traitement et la valeur 0 pour chacune d'elle dans la colonne STATUT.
l'erreur bien sûr vien de la requête:
"UPDATE reponses_traitement SET `R_STATUT` = '$value' WHERE epicea '".$epicea."' and `R_ID_questions $QID LIMIT 1 " ;
par contre je me suis rendu compte d'une chose.
Tu m'as dir rajoute ce genre de choses `
mais je ne sais pas ce que cela est et ceci mis dans le code l'a changé
quand j'ai enlevé ceux qui étaient insérés l'erreur a changé
maintenant j'ai:
Unknown column '$QID' in 'where clause'
sinon quand je coupe cette requetète elle fonctionne c'est bien le
and `R_ID_questions = $QID LIMIT 1
qui créé l'erreur.
voila voila
je me répète mais encore merci sincèrement à toi et JoJo738.
à bientôt
wookiee80
Messages postés14Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention26 mars 2009 26 juin 2008 à 15:45
bonjour à vous deux
Et bien voila
j'ai enfin réussi à finaliser et à faire tourner le script.
En fait j'ai eu la visite de mon formateur qui m'a donné un truc dont je n'avais pas eu l'idée du tout c'est de faire passer l'ID des questions par un hidden accolé au bouton submit du coup bah ça a simplifié le truc.
Alors un grand merci à vous deux pour votre aide.
Je peux même dire que si le script fonctionne c'est avant tout grâce à vous.
Ma part du boulot est bien maigre je trouve.
Donc encore un grand merci à vous pour m'avoir donné votre temps libre, votre savoir et m'avoir
en plus appris beaucoup de chose.
une bonne journée
et à bientôt !
euh bah oui je crois que j'ai encore une tonne de truc à apprendre