Sondages en entreprise

pinpin
Invité n'ayant pas de compte PHPfrance

09 juin 2005, 14:18

Salut :)
Comme le titre de mon message l'indique je souhaite réaliser plusieurs sondages dans l'entreprise. Le plus facile serait de prendre un script car on en trouve des très bien pour cela mais j'ai quelques contraintes.
En effet il y plusieurs questions sur la page, et un bouton de validation. Et il faut que ceux qui ont participé au sondage ne puissent pas accéder au résultat :)

Un exemple tout bête (Les * correspondent aux questions que l'on coche):
Sa va bien ?
* Oui
Si non :
* J'ai mal au ventre
* Le travail c'est dur
* Obiwan kenobi

Quel genre de film aimez-vous ?(Plusieurs choix possibles)
* Science Fiction
* Comédie
* Romantique
* Historique

[Valider]
Voila le sondage serait comme ca sur la page aproximativement.
Mon problème intervient dans le fait de différencier les questions à simple choix et les questions à choix multiple. Une fois le vote réalisé sa va enregistrer dans la base de donnée le nombre de réponse à chaque question (En fait il y aura 8 sondages différents, et je compte faire une table pour chaque sondage, avec comme champ Réponse1_Question1, Réponse2_Question1, Réponse1_Question3 etc ...).

Donc si vous avez une idée pour résoudre mon problème du choix multiple. Je voudrais savoir aussi si ma méthode est bonne (Sachant qu'il y 8 sondages avec chacun possèdant 20 questions avec 5 réponses en moyenne). Et enfin je voudrais savoir comment réaliser le petit cercle que l'on coche pour y enregistrer la valeur choisie.

Voila je vous remercie d'avance pour votre aide :)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

09 juin 2005, 14:56

fait petit à petit

<input type="checkbox"> si tu veux pouvoir cocher plusieurs choix
<input type="radio"> si tu veux pouvoir cocher un seul choix

et ta structure de base de données me parait un peu lourde
et moi je ferais plutôt une table sondages, une table questions, et une table réponse, reliée les unes aux autres

pinpin
Invité n'ayant pas de compte PHPfrance

10 juin 2005, 11:57

Voila je me suis mit dans la tête une idée assez simple pour faire ce que je veux faire ^^
Mais j'ai quelques problèmes :)

Voici l'exemple d'une question :
<html><body>

<form method=post action="<?php echo $_SERVER['PHP_SELF']; ?>">
<font face="Tahoma" size="2">

<b><font color="#333399">
1 - Conseillez-vous l'assistance en ligne ? <br>
</font></b>


<input type="radio" name="Q1" value="1">Oui <br> <br>
Si non pourquoi ? <br>
<input type="radio" name="Q1" value="2">Vous ne trouvez pas ça utile <br>
<input type="radio" name="Q1" value="3">Ca ne répond pas à l'attente de l'abonné <br>
<input type="radio" name="Q1" value="4">Autre <br> <br>
</font>

<input type="submit" name="Submit" value="Envoyer">

</form>


<?php  
echo  '<p>Question choisie : ' . $_GET['Q1'] . '</p>';
?>

</html></body>
Le fait est que il devrait afficher le numéro de la réponse choisie mais bon il ne le fait pas justement :(
Je voudrais aussi savoir comment afficher les questions sélecitonner dans le cas d'une checkbox =)

Merci d'avance pour votre aide.

ViPHP
pjl
ViPHP | 2119 Messages

10 juin 2005, 12:00

(En fait il y aura 8 sondages différents, et je compte faire une table pour chaque sondage, avec comme champ Réponse1_Question1, Réponse2_Question1, Réponse1_Question3 etc ...).
heureusement que tu ne fais pas un sondage par jour comme dans mon ancienne boite.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 juin 2005, 12:01

Si tu veux donner plusieurs fois le même nom à plusieurs balise, il faut que tu passe par un tableau!!!

Ensuite, il faut que tu choisissent les case qui sont à TRUE
<html><body>

<form method=post action="<?php echo $_SERVER['PHP_SELF']; ?>">
<font face="Tahoma" size="2">

<b><font color="#333399">
1 - Conseillez-vous l'assistance en ligne ? <br>
</font></b>


<input type="radio" name="Q1[]" value="1">Oui <br> <br>
Si non pourquoi ? <br>
<input type="radio" name="Q1[]" value="2">Vous ne trouvez pas ça utile <br>
<input type="radio" name="Q1[]" value="3">Ca ne répond pas à l'attente de l'abonné <br>
<input type="radio" name="Q1[]" value="4">Autre <br> <br>
</font>

<input type="submit" name="Submit" value="Envoyer">

</form>


<?php
$a_question = $_GET["Q1"]:
foreach($a_question as $val) {
  echo '<p>Question choisie : ' . $_GET['Q1'] . '</p>';
}
?>

</html></body>
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

pinpin
Invité n'ayant pas de compte PHPfrance

10 juin 2005, 12:09

Merci pour ton aide Zeus, sinon à la ligne 24 tu as mit un : à la place de ;

:)

Mais une erreur persiste (Ou serait le fun sinon ?)

Warning: Invalid argument supplied for foreach() in /var/www/free.fr/4/0/slake13/Sondage/index.php on line 25

Voila j'aimerais bien savoir de quoi il en retourne mais ... je ne vois vraiment pas :/

Mammouth du PHP | 19672 Messages

10 juin 2005, 12:25

Dals le cas d'un bouton radio, il ne sert strictement à rien d'utiliser un tableau: on fait ça pour des cases à cocher; Pour des boutons radio, on ne récupère de toutes façons qu'une seule valeur, donc vire les [ ] du nom des boutons et ensuite utilises directement sans utiliser de foreach la valeur récupérée
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 juin 2005, 13:22

Excuse moi, je lit trop vite

Oublie ce que je t'ai dit
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

pinpin
Invité n'ayant pas de compte PHPfrance

10 juin 2005, 13:53

c'est pas grave zeus merci pour l'aide quand même ;)
Sinon j'ai fait ce que tu dis Cyrano mais je n'arrive toujours pas à récupérer la valeur que je souhaite. Je pene que j'interpretre mal la commande GET
<html><body> 

<form method=post action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
<font face="Tahoma" size="2"> 

<b><font color="#333399"> 
1 - Conseillez-vous l'assistance en ligne ? <br> 
</font></b> 


<input type="radio" name="Q1" value="1">Oui <br> <br> 
Si non pourquoi ? <br> 
<input type="radio" name="Q1" value="2">Vous ne trouvez pas ça utile <br> 
<input type="radio" name="Q1" value="3">Ca ne répond pas à l'attente de l'abonné <br> 
<input type="radio" name="Q1" value="4">Autre <br> <br> 
</font> 

<input type="submit" name="Submit" value="Envoyer"> 

</form> 

<?php 
$réponse1 = $_GET["Q1"];
echo $réponse1;
?> 

</html></body> 

Mammouth du PHP | 19672 Messages

10 juin 2005, 13:55

Normal: ton formulaire est en method="post", donc il faut récupérer avec $_POST[] et non $_GET[]
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

pinpin
Invité n'ayant pas de compte PHPfrance

10 juin 2005, 13:59

Cool sa marche exactement comme je le souhaite :)
Merci beaucoup cyrano ;)

Je vais encore utiliser ce post car faut que je test avec checkbox et il faut que j'écrive dans un fichier, oula mes problèmes sont pas encore finit :-(

Mammouth du PHP | 19672 Messages

10 juin 2005, 14:03

Si tu veux voir comment traiter un formulaire en PHP, récupères CECI, c'est un formulaire maison qui traite de la validation des données et tu verras comment traiter presque toutes les formes de champ de formulaire à l'exception de champs de type "file"
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

pinpin
Invité n'ayant pas de compte PHPfrance

10 juin 2005, 14:08

ok merci beaucoup je regarde ca

pinpin
Invité n'ayant pas de compte PHPfrance

17 juin 2005, 09:59

Salut,
J'ai pas mal avancé dans ce que je voulais faire, et j'ai selon moi réalisé le principal. C'est à dire que ma page affichage toutes les questions, avec un bouton valider à la fin. Et après avoir répondu au questionnaire j'ai chaque variable qui enregistre un numéro correspondant à la réponse. Par exemple pour la question 1 j'ai une variable Q1 et si j'ai répondu à la question 3 j'aurais donc 3 dans la variable Q1 :)

Maintenant je dois interpréter tout ces résultats, le problème c'est que je ne sais pas quel méthode choisir entre fichier txt ou BDD et je ne sais pas vraiment comment faire. En fait cela sera fastidieu, mais j'ai encore pas mal de temps pour le faire et écrire plusieurs fois la même chose me dérange pas...

Donc pour procéder je compte faire quelque chose dans ce style :
if ($Q1 = 1)
{
    //On récupère la valeur qui correspond à cette question dans un fichier texte ou une BDD, on l'incrémente, et on l'enregistre sur la même ligne
}
if ($Q1 = 2)
{
    //On récupère la valeur qui correspond à cette question dans un fichier texte ou une BDD, on l'incrémente, et on l'enregistre sur la même ligne
}
Voila et pour finir il y aura une partie affichage mais qui sera sur une autre page, mais si je sais faire cela, la troisième partie ne posera pas de problème ;)

Je pense que la base de donnée serait une bonne solution car pour une question j'aurais 7 réponses grand maximum, donc voila un petit screenshot pour vous montrer comment j'imagine cela :
Image

Donc j'ai 3 questions dans mon cas. Pour la première et deuxième question j'ai 7 réponses possibles, pour la troisième j'en ai 4 mais sa n'a pas vraiment d'importance.

Voila je voudrais savoir comment faire une fois connecté à la BDD pour récupérer la valeur exact que je veux (disons la réponse 2 de la question 3 dans mon cas) pour l'enregistrer dans une variable, l'incrémenter (ca je sais faire ^^), puis actualiser la BDD avec la nouvelle valeur. Limite si il est possible de l'incrémenter directement sa m'arrangeré :)

Voila voila =)

pinpin
Invité n'ayant pas de compte PHPfrance

17 juin 2005, 10:17

Donc j'ai regardé sur quelques sites pour savoir comment faire, j'ai vu quelques trucs pouvant m'aider :
$Q2BIS = SELECT * FROM sondagetable WHERE question=3 AND réponse2
$Q2BIS++;
UPDATE sondagetable SET réponse2=$Q2BIS WHERE question=3 
Bon pour la première ligne j'en suis vraiment pas sur, moi je veux juste enregistrer dans Q2BIS la valeur qui de la réponse 2 pour la question 3