TP Formulaire Corrige
TP Formulaire Corrige
TP Formulaire Corrige
CIRM Marseille
Modlisation conceptuelle
1. Pour commencer, tablir le MPD de l'application conformment au MCD prsent en annexe 3 ?
2. Quelles sont les clefs primaires des tables REPONSES* ? * Pour REPONSES_FORMULARE, la clef est ID. D.Brmont 6 au 10 novembre 2006 1/5
CIRM Marseille
* Pour REPONSES_NOTE, la clef est forme de ID_FORMULAIRE et de ID_QUESTION * Pour REPONSES_TEXTE, la clef est forme de ID_FORMULAIRE et de ID_QUESTION
SQL
1. Pour commencer, crer une base de donnes nomme cirm dans MySQL. create database cirm; 2. Crer un utilisateur cirm , mot de passe : cirm disposant de tous les droits sur la base cirm. Comment procdez-vous, avec l'une et l'autre mthode ? create user 'cirm'@'localhost' identified by 'cirm'; grant all privileges on `cirm` . * to 'cirm'@'localhost'; Vrification : use mysql; show tables; select user,host,password from user where user='cirm'; select db,user,host from db where db='cirm'; 3. Pour vous faciliter la ralisation du formulaire, les questions ont t insres dans une base de donnes SQL tlchargeable l'aide de la commande wget l'adresse suivante : wget http://www.lpthe.jussieu.fr/~bremont/cirm/tp/tp.tar.gz 4. Peupler la base de donnes en injectant le contenu du fichier base.sql dans la base. mysql -u cirm -p -D cirm < base.sql 5. Vrifier que les tables ont bien t cres et familiarisez-vous avec leur contenu. show tables; 6. Que font les requtes suivantes : D.Brmont 6 au 10 novembre 2006 2/5
ANGD Mathrice : Sites web dynamiques TP - corrig 1. select * from QUESTIONS where ID_QUESTION=10 ? Affiche toutes les informations de la question numro 10.
CIRM Marseille
2. select count(ID_QUESTION) from QUESTIONS where REPONSEREQUISE='1' ? Combien y a t-il de questions dont la rponse est requise ? 3. select NUMERO, QUESTION, TYPES_QUESTIONS.NOM from QUESTIONS, TYPES_QUESTIONS where QUESTIONS.TYPE=TYPES_QUESTIONS.TYPE order by ORDRE ASC ? Affiche les questions (numro, question et type) par ordre du formulaire 7. crire les requtes SQL permettant de : 1. Afficher tous les grades d'ingnieur ? SELECT NOM_GRADE FROM GRADE WHERE NOM_GRADE LIKE '%Ingénieur%' 2. Savoir combien il y a de questions ? select count(ID_QUESTION) from QUESTIONS 3. Savoir quels sont les questions de type radio ? (Ce sont les questions pour lesquelles il faudra donner une note de 1 4 ) select ID_QUESTION from QUESTIONS, TYPES_QUESTIONS where QUESTIONS.TYPE=TYPES_QUESTIONS.TYPE and TYPES_QUESTIONS.NOM='radio'
HTML
1. Pour commencer, il vous est demand de complter le fichier index.php en crivant le code HTML permettant d'obtenir le rendu suivant :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>QUESTIONNAIRE D'EVALUATION</title> <meta content="text/html; charset=UTF-8" http-equiv="content-type"> <link rel="stylesheet" href="style.css" type="text/css" </head> <body> <img style="width: 207px; height: 99px;" alt="CNRS" src="LogoCNRSMoyenb.gif"><br> <hr><div align="center"> <span class="titrepage">QUESTIONNAIRE D’EVALUATION<br> <br> Mathrice<br> <br></span> Outils fondamentaux de demain pour les informaticiens<br> des laboratoires de mathématiques<br> <br> du 6 au 10 Novembre 2006</div><br> <hr><br>
2. Quelle url tapez-vous pour observer le rsultat ? Donnez deux autres url possibles ? http://127.0.0.1 http://localhost http://nom_machine 3. Continuer complter le fichier index.php de telle sorte que vous chargiez le contenu du fichier css : styles.css . Cf ci-dessus 4. Quel est l'intrt d'utiliser des styles CSS ? Dclaration centralise des styles, facilit l'homognit de la mise en forme du site et D.Brmont 6 au 10 novembre 2006 3/5
ANGD Mathrice : Sites web dynamiques TP - corrig les mises jour de styles.
CIRM Marseille
PHP
1. diter le fichier configuration.php afin de l'adapter votre environnement.
define('SERVEURBDD',"localhost"); // Definition de l'utilisateur accedant a la base de donnees define('USERBDD',"cirm"); define('PASSWDBDD',"cirm"); define('DATABASE',"cirm");
2. Histoire de se mettre dans le bain, commencer par complter le script formulaire.php en ajoutant : -les affectations de variables suite la requte de slection des questions -en affichant le numro de question et la question et en les mettant en forme.
while($line = mysql_fetch_array($result,MYSQL_ASSOC)){ $ID_QUESTION=$line[ID_QUESTION]; $NUMERO=$line[NUMERO]; $QUESTION =$line[QUESTION]; $TYPE =$line[TYPE]; if ( $NUMERO != "" ) echo "<B>$NUMERO</B> "; echo "$QUESTION<br>\n"; //Appel a la fonction affichant les elements du formulaire } evaluation($ID_QUESTION, $TYPE);
3. Il vous est demand de complter le script evaluation.php afin que la fonction puisse gnrer des zones de texte si $type vaut textarea.
case textarea : echo "<textarea cols=\"75\" rows=\"3\" name=\"$question\"></textarea>\n"; echo "<br><br>\n\n"; break;
4. De mme, complter la fonction formulaireselect() qui gnre un menu droulant en fonction des donnes issues de la table GRADE.
function formulaireselect() { $query = "SELECT ID_GRADE, NOM_GRADE FROM GRADE ORDER BY ID_GRADE"; $result = mysql_query ($query) or die ("La requ\xeate :<br> \"$query\"<br> a \xe9chou\xe9"); echo <<< EOT <font color=black size=5> <select name="CORPSGRADE"> <option value="0"> --- choisir dans la liste --- </option> EOT; while (list ($ID_GRADE, $NOM_GRADE) = mysql_fetch_row ($result)) { printf(" <option value=\"$ID_GRADE\">%s</option>\n",$NOM_GRADE); } print " </select>\n</font>\n"; echo "<br><br>\n\n"; mysql_free_result($result);
5. En appelant dsormais le fichier index.php, vous devriez avoir le formulaire entirement gnr. 6. Complter maintenant le fichier enregistrement.php, pour que les rponses aux questions d'ordre gnral soient insres dans la table REPONSES_FORMULAIRE.
$query="INSERT into REPONSES_FORMULAIRE VALUES ('', '".$_POST["NOM"]."', '".$_POST["CORPSGRADE"]."', \"$_POST[AFFECTATIONCNRS]\" , \"$_POST[AUTREAFFECTATION]\" ,
D.Brmont
6 au 10 novembre 2006
4/5
CIRM Marseille
7. crire dsormais les requtes permettant de renseigner les tables REPONSES_NOTE et REPONSES_TEXTE.
$query="select QUESTIONS.ID_QUESTION, NOM as TYPE from QUESTIONS, TYPES_QUESTIONS.TYPE=QUESTIONS.TYPE;"; $result = mysql_query ($query) or die ("La requ\xeate :<br> \"$query\"<br> a \xe9chou\xe9"); TYPES_QUESTIONS where
//Preparation des requetes $note_query="INSERT into REPONSES_NOTE (ID_FORMULAIRE, ID_QUESTION, REPONSE) VALUES "; $texte_query="INSERT into REPONSES_TEXTE (ID_FORMULAIRE, ID_QUESTION, REPONSE) VALUES "; //Construction des requetes while($line = mysql_fetch_array($result,MYSQL_ASSOC)){ $ID_QUESTION=$line[ID_QUESTION]; $TYPE =$line[TYPE]; switch ($TYPE) { case radio : $note_query .= "($enregistrement, $ID_QUESTION, \"$_POST[$ID_QUESTION]\"),"; break; case textarea : $texte_query .= "($enregistrement, $ID_QUESTION, \"$_POST[$ID_QUESTION]\"),"; break; } }
D.Brmont
6 au 10 novembre 2006
5/5