STIC Discussion:STIC I - exercice 7 (Nestor-Pixel)

De EduTech Wiki
Aller à la navigation Aller à la recherche
La version imprimable n’est plus prise en charge et peut comporter des erreurs de génération. Veuillez mettre à jour les signets de votre navigateur et utiliser à la place la fonction d’impression par défaut de celui-ci.

Standard Formulaire/Quizz ?

Est-ce qu'il existe un genre de standard pour décrire/définir des questions de formulaire ou des formulaires ou complet ?

Vous m'avez parler d'un début de standard dans le cours, mais je ne l'ai pas retrouvé... Merci--Davidc 28 novembre 2007 à 17:24 (CET)Répondre[répondre]


réponse

...Donc c'est un standard e-learning, pas un truc générique pour faire des formulaires.

  • Sinon, aura peut-etre des trucs qui vont émerger autour des XFORMS (un langage pour faire des formulaires et qui remplace le form du HTML.

http://www.w3.org/MarkUp/Forms/2003/xforms-faq.html

merci

Je vais jeter un oeil dans ces voies là. Danke --Davidc 28 novembre 2007 à 22:47 (CET)Répondre[répondre]

Choix

je pose une série de réponses à une question. A chacune je donne "value=1", "value=2" etc... le visiteur ne choisira qu'une réponse. Dans le formulaire de résultat, il y aura 2 catégories de réponses, mettons A et B. S'il choisit 1, 4, 5 ou 6, il tombe dans la catégorie A. S'il choisit 3,7,8 ou 9, il tombe dans la catégorie B.

Puis-je écrire :

if ($choice = 1;4;5;6) then {echo "A";}

elseif ($choice = 3;7;8;9) then {echo "B";}

merci pour votre aide- Sylviane - 19 janvier


Réponse

au niveau de la syntaxe ça serait plutôt un truc comme ça :

if ($choice == 1 || $choice == 4 || $choice == 5 || $choice == 6)
	echo "A"; 

elseif ($choice == 3 || $choice == 7 || $choice == 8 || $choice == 9)
	echo "B";

--Bertrand Schneider 19 janvier 2008 à 18:43 (CET)Répondre[répondre]


et pour rajouter une couche.. Si tu as une série de question de ce type, tu peux aussi bien te créer une fonction et mettre tes choix de réponses (A ou B) dans des liste (array) :

$answers_A_question1 = array(1,4,5,6);
$answers_B_question1 = array(3,7,8,9);

//****tu lances ta fonction pour vérifier chaque question****
check_response($answers_A_question1, $answers_B_question1, $choice);

function check_response($answers_A, $answers_B, $user_choice ){
	if (in_array($user_choice, $answers_A)){
		echo "A";
	}elseif(in_array($user_choice, $answers_B)){
		echo "B";
	}
}

Si tu as envie, on peut compliquer l'affaire jusqu'à l'infinie :P --Davidc 19 janvier 2008 à 21:56 (CET)Répondre[répondre]


Vous êtes sympas, les garçons, mais ça ne marche pas terrible :-(( Quand je clique sur afficher le resultat, ça m'affiche du code. D'ailleurs le problème est peut-être ailleurs car Bertrand, je viens d'essayer ton formulaire et si le formulaire s'affiche correctement, par contre les resultats s'affichent sous forme de code. Je crois que je vais jeter l'éponge.

Sylviane 19 janvier 2008 à 22:25 (CET)Répondre[répondre]

OUF !!!!!!!! ça a l'air de marcher sur le serveur ! Alors que ça ne marchait pas chez moi ni sur Easyphp ni sur Wamp ! Ben ça fait que 3 h que je cherche ! J'ai plus qu'à faire la mise en page.

Sylviane 19 janvier 2008 à 23:25 (CET)Répondre[répondre]


ahah j'étais en train de poster ma réponse :

" Mon formulaire? Celui qui est à http://tecfa.unige.ch/etu-maltt/nestor/schneib0/stic/ex7/ ? ça marche chez moi... J'ai également essayé ton formulaire, il marche aussi... ça me met intrinsèque ou extrinsèque d'après mes choix. Faut juste améliorer la mise en page du formulaire, ça me met tout sur une ligne chez moi.

Sinon le php tu peux pas le faire exécuter en local, tu es obligé de le faire interpréter par un serveur. Donc pour le tester il faut soit que tu lances un truc style wampserver ou que tu uploades tes fichiers sur le serveur tecfa. "

mais trop en retard :) content que ça marche! bonne soirée

--Bertrand Schneider 19 janvier 2008 à 23:30 (CET)Répondre[répondre]

Toutes dernières questions (on espère :-)

Merci tout de même, Bertrand pour tes réponses.

Est-ce que c'est ton javascript qui permet aux resultats de s'afficher sur la même page ? Autre chose : est-on obligé de mettre en UTF-8 parce que les accents et les apostrophes ça bidouille chez moi, alors qu'en iso-8859-1 ça va bien. Donc pourquoi finalement faut-il utiliser UTF-8 (il me semble que DKS avait dit en presentiel qu'il fallait préférer l'UTF-8)?

Sylviane 20 janvier 2008 à 01:03 (CET)Répondre[répondre]


Pour l'affichage sur la même page, c'est ajax que j'ai utilisé. David a fait un petit tutorial là-dessus pour l'exercice 4 de STIC, si ça t'intéresse ;)

Pour l'encodage, le mieux c'est de mettre UTF-8 dans ta page html et dans ton navigateur (affichage > encodages des caractères > UTF-8). Je sais plus exactement pourquoi il faut préférer celui-ci, mais ça doit être une question de compatibilité et de normes...

--Bertrand Schneider 20 janvier 2008 à 09:07 (CET)Répondre[répondre]


Ah oui, je viens de lire sur ton rapport à quoi servait le javascript (wâââ je me sens bête tout à coup ;-) mais j'ai le droit, on n'a pas encore étudié le javascript :-). Je vais aller voir le cours de David sur Ajax. merci Sylviane 20 janvier 2008 à 09:42 (CET)Répondre[répondre]

C'est raté, c'était pas la dernière question ;-)

Bertrand, comment tu sais que le visiteur qui va écrire ses coordonnées ou ses remarques dans le champ texte en bas de page, ne va pas entrer dans l'espace dédié du code qui va tout casser ton beau formulaire ? Ses nom et prenom sont stockés où finalement ? je te demande ça parce que je ne vois pas de fichier texte dans ton répertoire où seraient stockées ces données, qui pourraient être ensuite lues par le fichier php (si j'ai bien compris la procédure.. mais c'est pas sûr)

Sylviane 20 janvier 2008 à 12:44 (CET)Répondre[répondre]


Tout à fait. Il faut utiliser une fonction php pour empêcher au code d'être exécuté :

htmlspecialchars("texte entré par l'utilisateur")

On l'utilise en général chaque fois que l'on affiche du texte fourni par des utilisateurs... les données sont stockées dans des variables que les fichiers php s'échangent (en général $_POST['nom_de_la_variable'] ou $_GET['nom_de_la_variable'] si tu veux récupérer une variable qui se trouve dans l'url, par exemple index.php?nom_de_la_variable=ma_variable)

)

--Bertrand Schneider 20 janvier 2008 à 13:26 (CET)Répondre[répondre]

bonne continuation :)

J'ai vu les contributions variées de B.S. - d'accord avec toutes :).

Annuaire sites php

annuaire

Erreur première ligne

Je ne comprends pas le message d'erreur que j'obtiens sur ExchangerLite concernant ma première ligne de code: "White spaces are required between publicID and systemID".

Voici la ligne incriminée: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

Louiselle, 24 janvier


y sont où tes fichiers? --Bertrand Schneider 24 janvier 2008 à 10:22 (CET)Répondre[répondre]


oui faut les montrer. A part cela Xchanger Lite n'est pas bon pour éditer du HTML. Faut absolument que ce soit du XHTML (du XML). Sinon le message est étrange ... A priori cela concerne une expression comme la suivante, mais faudrait que je vois vraiment vos fichiers. Ensuite si vous avez du XSLT dans l'ensemble, cela peut aussi se référer au fichier XSLT, au résultat produit ....
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN" "html.dtd">

OK, j'ai changé les premières lignes pour déclarer du xhtml, et je n'ai effectivement plus le message d'erreur! Merci! Louiselle, 30 janvier 08

-- Chantal t 4 décembre 2008 à 09:32 (CET)

Exercice 7: PHP

Mon formulaire PHP affiche un message d'erreur lorsqu'on lui demande un résultat. J'ai beau lire les transparent du cours, j'avoue que j'ai beaucoup de mal à comprendre comment les valeurs doivent être rentrées dans PHP. Voici l'url qui mène à mon formulaire: http://tecfa.unige.ch/etu-maltt/oda/tchoual3/stic/ex7/ Merci de me dire ce qui ne vas pas.

Chantal.

Conversation php-MySQL -- Sugarch0 3 février 2010 à 08:38 (CET)

Bonjour! En suivant gentiment un tutoriel php-MySQL, j'ai pu faire un formulaire très simple (="selon mes possibilités"). Mais comme je commence à devenir un peu geek, j'ai continué sur MySQL (ce qui ne me paraît pas inutile si on veut sauvegarder des données enregistrées avec un formulaire). J'ai créé une base de données, importé une autre, je peux faire une commande pour accéder à la bdd...mais si je veux lire les données de la bdd avec une commande php, j'ai le message "apache hat ein Problem festgestellt..Problembericht senden?....) et je ne trouve pas comment lire ces données. Ici une copie des activités d'apache de ce jour:

[Wed Feb 03 07:46:39 2010] [notice] Apache/2.2.11 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Feb 03 07:46:39 2010] [notice] Server built: Dec 10 2008 00:10:06
[Wed Feb 03 07:46:39 2010] [notice] Parent: Created child process 304
[Wed Feb 03 07:46:40 2010] [notice] Child 304: Child process is running
[Wed Feb 03 07:46:40 2010] [notice] Child 304: Acquired the start mutex.
[Wed Feb 03 07:46:40 2010] [notice] Child 304: Starting 64 worker threads.
[Wed Feb 03 07:46:40 2010] [notice] Child 304: Starting thread to listen on port 80.
[Wed Feb 03 08:21:00 2010] [notice] Parent: child process exited with status 3221225477 -- Restarting.
[Wed Feb 03 08:21:01 2010] [notice] Apache/2.2.11 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Feb 03 08:21:01 2010] [notice] Server built: Dec 10 2008 00:10:06
[Wed Feb 03 08:21:01 2010] [notice] Parent: Created child process 3704
[Wed Feb 03 08:21:02 2010] [notice] Child 3704: Child process is running
[Wed Feb 03 08:21:02 2010] [notice] Child 3704: Acquired the start mutex.
[Wed Feb 03 08:21:02 2010] [notice] Child 3704: Starting 64 worker threads.
[Wed Feb 03 08:21:02 2010] [notice] Child 3704: Starting thread to listen on port 80.
[Wed Feb 03 08:21:11 2010] [notice] Parent: child process exited with status 3221225477 -- Restarting.
[Wed Feb 03 08:21:11 2010] [notice] Apache/2.2.11 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Feb 03 08:21:11 2010] [notice] Server built: Dec 10 2008 00:10:06
[Wed Feb 03 08:21:11 2010] [notice] Parent: Created child process 3584
[Wed Feb 03 08:21:12 2010] [notice] Child 3584: Child process is running
[Wed Feb 03 08:21:12 2010] [notice] Child 3584: Acquired the start mutex.
[Wed Feb 03 08:21:12 2010] [notice] Child 3584: Starting 64 worker threads.
[Wed Feb 03 08:21:12 2010] [notice] Child 3584: Starting thread to listen on port 80.

Je suis sur mon wamp, j'entre avec "localhost", id "root", mot de passe "". J'utilise firefox par défaut, est-ce que ca pourrait poser un problème avec explorer? Avez-vous une autre piste?

Re: Conversation php-MySQL -- Daniel K. Schneider 3 février 2010 à 14:01 (CET)

malheureusement ce n'est pas assez comme information. L'extrait ci-dessus montre que apache a bien démarré et qu'il tourne. Par ailleurs si vous recevez un messsage comme "apache hat ein Problem....", cela veut dire que le serveur tourne.
  • Il faudrait absolument nous montrer le reste de ce error log. Le message ci-dessus vient à mon avis de l'application php, donc il me faudrait aussi plus d'informations sur ce que vous faites (quel type de script, téléchargé ou fait par vous-même ?)
  • Vous aussi regarder les points suivants:
  • Vérifiez les mots de passe et le nom de la base de données etc etc. Dans votre script il y a peut-etre un login + mot de passe pas égale à "root" plus "".
  • Est-ce que le serveur MySQL tourne ? Essayez une autre application, par exemple phpmyadmin pour voir.
  • Vous travaillez avec quel WAMP ?

Sinon, attendre STIC II ;)

Re: Re: Conversation php-MySQL -- Sugarch0 3 février 2010 à 15:58 (CET)

Voici le script php que j'ai modifié d'après un modèle du tutoriel. La bdd dans le SQL marche et je peux la manipuler. Le php myadmin marche et je n'ai pas encore mis de mot de passe donc l'accès dit root@localhost.
<?php
mysql_connect("localhost", "root", ""); 
// Connexion à MySQL, je n'ai pas encore mis de mot de passe et L'identité est bien root@localhost dans la phpmyadmin
mysql_select_db("coursphp"); // Sélection de la base coursphp avec la table jeux_video que j'ai 
                             //importée depuis le tutoriel, elle marche et j'ai pu la modifier manuellement
 
$reponse = mysql_query("SELECT * FROM jeux_video"); // Requête SQL
  
// boucle recopiée depuis le tutoriel pour lister tout ce que contient la table :
 
while ($donnees = mysql_fetch_array($reponse) )
{
?>
    <p>
    <strong>Jeu</strong> : <?php echo $donnees['nom']; ?><br />
    Le possesseur de ce jeu est : <?php echo $donnees['possesseur']; ?>, et il le vend à <?php echo $donnees['prix']; ?>   euros !<br />
    Ce jeu fonctionne sur <?php echo $donnees['console']; ?> et on peut y jouer à <?php echo $donnees['nbre_joueurs_max']; ?> au maximum<br />
    <?php echo $donnees['possesseur']; ?> a laissé ces commentaires sur <?php echo $donnees['nom']; ?> : <em><?php echo    $donnees['commentaires']; ?></em>
   </p>
<?php
}
mysql_close(); // Déconnexion de MySQL
?>

Je ne sais pas où regarder pour vous dire quel type de wamp est installé. Merci pour vos réponses rapides, c'est très motivant!

Re: Re: Re: Conversation php-MySQL -- Daniel K. Schneider 3 février 2010 à 17:29 (CET)

Pour PHP-MySQL, je pense qu'il faudrait changer de tutoriel. Le code ci-dessus n'est pas très sérieux, car il ne teste pas si les connexions ont réussi, ensuite il manque un argument à mysql_select_db.

Lire, par exemple: http://www.databasejournal.com/features/mysql/article.php/1469211/Using-a-MySQL-database-with-PHP.htm Voir aussi en:MySQL pour d'autres tutoriels.

A changer dans votre code au moins:

error_reporting(E_ALL); // put error detection to a max !
$db = mysql_connect("localhost", "root", "") or die ("Unable to connect");
mysql_select_db("coursphp",$db) or die ("Unable to select db");

Cela donnera déjà une indication où cela ne marche pas.

Ensuite on peut savoir plus si l'erreur est du coté mysql. Vous pouvez consulter mes slides ... http://tecfa.unige.ch/guides/tie/html/act-php-mysql/act-php-mysql-2.html

votre WAMP -- Daniel K. Schneider 3 février 2010 à 17:34 (CET)

Il y a quand-meme moyen de savoir ce que vous avez installé comme WAMP. Vous le lancez comment ? Y-a-t-il un nom ? Une console de contrôle qui affiche son nom ? Sinon, l'avez vous téléchargé depuis un site d'origine (ou sur un site dangereux à téléchargement ?)

Re: votre WAMP -- Sugarch0 4 février 2010 à 15:43 (CET)
Bonjour!

J'ai trouvé ce wamp par un lien depuis le tutoriel que je fais et qui mène à un site officiel. Il s'appelle Wamp Server. Concernant la qualité du tuoriel, je veux bien croire qu'il y a mieux mais celui-ci va pas à pas ( et il avait mentionné d'ailleurs la fonction error reporting...). Il me permet d'avoir des résultats quand même , même si ca ne va pas très loin, les autres moyens que j'ai trouvés (le livre de Gilmore p.ex) son très détaillés et difficiles à utiliser pour un "bloody beginner" comme moi et très longs).

Par contre, php+MySQL marchent car j'ai pu installer un LMS pour l'exercice 9, voir la bdd et les tables et enregistrer un new user...

Donc je vais de ce pas suivre vos conseils et compléter mes connaissances avec les liens que vous m'avez donnés. Merci! Aviva

Re: Re: votre WAMP -- Daniel K. Schneider 4 février 2010 à 15:56 (CET)

ok pour Wampserver (marche bien). Mais attention, ce server sépare les erreurs web des erreurs PHP dans les logs. Cliquer sur l'icone dans la barre des tâches, puis: Menu PHP-> PHP error log. Ensuite regarder :)

htmlspecialchars -- Claire Peltier 9 février 2010 à 22:25 (CET)

Bonsoir,

J'ai compris que cette fonction était utile à la sécurité du script, mais je ne sais pas où l'insérer dans mon code. Pourriez-vous m'aider ?

Merci.

Claire

Re: htmlspecialchars -- Daniel K. Schneider 10 février 2010 à 00:19 (CET)

C'est une fonction qui élimine les caractères SGML/XML et qui donc empêche les utilisateurs à injecter du code HTML dans un champs de réponse qui est ensuite affiché.

Exemple:

  • Vous me demandez mon nom pour le mettre dans une base de données
  • Je réponds: <script> ... afficher un joli bouton qui demande un mot de passe à un utilisageur </script>
  • Vous affichez mon "nom" dans une liste, donc en fait le bouton que j'ai injecté dans votre base de données et c'est parti ...

En ce qui vous concerne (pour cet exercice) ne faut pas s'inquiéter :)

Enregistrement du script PHP -- Claire Peltier 9 février 2010 à 22:29 (CET)

Bonsoir,

J'ai transféré mon fichier .php sur le serveur de Tecfa mais lorsque je l'ouvre depuis ma page travaux c'est la version html qui s'affiche alors que je voudrais voir affiché le script de ce fichier.

Pourriez-vous me dire pourquoi et comment faire ?

Merci d'avance.

Claire

Re: Enregistrement du script PHP -- Daniel K. Schneider 10 février 2010 à 00:33 (CET)

C'est assez normal.

  • En aucun cas vous devriez être en mesure de voire le code du script. Car un script a toutes sortes de secrets qui ne sont pas destinés à l'utilisateur
  • Si maintenant votre question est mal formulée, cad. vous avez voulu me demander pourquoi le script affiche du HTML avec le feedback alors que vous n'avez pas appelé le script depuis un formulaire, la réponse est "normal comme vous l'avez programmé". Si vous ne voulez pas qu'un script affiche ce genre de choses sans avoir reçu des données, il faut faire un test au début:
  si (pas reçu une donnée) tuer_le_script ("impossible d'utiliser ....");

Donc dans votre cas on pourrait utilisera "valider"

  <input name="questionnaire" type="submit" value="Valider" />

Ensuite dans PHP:

if (!isset($_POST[’questionnaire’])) die ("ne faut pas utiliser ce script sans remplir un formulaire");

Maintenant si quand-meme vous insister à montrer le code du script pour des raisons pédagogiques à d'autres gens (comme je le fais), c'est simple: faites-une copie du fichier et appelé-le: votre_script.phps (joli) ou votre_script.txt