8795 sujets

Développement web côté serveur, CMS

Bonjour,

Je dois réaliser un questionnaire de satisfaction pour les clients.

J'ai une contrainte qui est que les réponses aux questions doivent s'afficher aléatoirement sauf la dernière qui sera autres : 'champ texte'.

Exemple :

Question 1 : Comment avez-vous connu ce site ?

o Catalogue o Internet o Newsletter
o Relations Pro o Salons Pro o Presse
o Autres (précisez) : ......................................

Si on rafraichit la page, les réponses doivent changer de positions, o presse passe en premier, o newsletter en deuxième, o salons Pro en 3éme etc...

Avez-vous une idée sur comment je peux le faire.

Merci.
Cordialement,
DrOMgba
en php Smiley smile

tu fais une fonction qui va écrire les propositions dans un ordre quelconque a chaque demande de la page

après par contre faut bien géré la manière de récupéré les réponses ( donc suffis pas de mélangé que le texte , il dois quand même falloir gardé une cohérence avec les ids de chaque réponses par exemple . ( je sais pas si c'est très clair .. )
Salut,

Ta question aurait plus sa place dans le salon "Développement web côté serveur" car c'est impossible à réaliser en HTML. En PHP, par contre, tu peux mettre tes réponses dans un tableau :

$reponses = array(
	"Catalogue",
	"Internet",
	"Newsletter",
	"Relations Pro",
	"Salons Pro",
	"Presse",
	"Autres"
);
...puis "mélanger" ce tableau à chaque affichage de page:
shuffle($reponses);
Il te suffit ensuite d'afficher tes réponses dans l'ordre du tableau.
marcv a écrit :
Ta question aurait plus sa place dans le salon "Développement web côté serveur"
Yep. Smiley cligne
Merci d'avoir déplacer le sujet dans la bonne catégorie.

Pour le php, il faut que je mets tout les réponses dans un tableau en gardant les id et value. dans ce cas je touche à la simple structure du formulaire dans ma page php.

N'aurait-il pas possibilité en jquery de déplacer les éléments à l'affichage. Je m'explique si je tape ma structure comme si je fais un formulaire normal et que Jquery affiche les éléments dans un ordre aléatoire. Es-ce possible? Je sais pas si je suis clair!
Je n'ai pas compris pas ton problème avec la méthode PHP. Quant à effectuer la manip en Javascript, si tu le préfères, un principe de départ pourrait être le suivant (avec jQuery, et à développer, naturellement) :
var elements_a_melanger = $('.blabla');

elements_a_melanger
    .sort(function() { return Math.random() - 0.5; })
    .parent()
    .append(elements_a_melanger);
Perso je serais parti sur PHP. Par exemple :
<?php
// Les réponses sont stockées en session
session_start();

// Chargement des questions dans un tableau (en dur comme dans cet exemple ou depuis une base de données)
$questions = array(
	1	=>	array("Comment avez-vous connu ce site ?", array('Catalogue', 'Internet', 'Newsletter', 'Relations Pro', 'Salons Pro', 'Presse')),
	2	=>	array("Comment qu'ça va bien ?", array('Bof', 'Pas Mal', 'Plutôt bien', 'Impec', 'Super')),
	3	=>	array("Quelle était la couleur du cheval blanc d'Henri IV ?", array('Jaune', 'Vert', 'Blanc', 'Rouge'))
);


// Traitement
$erreur = false;
if($_SERVER['REQUEST_METHOD']=='POST') {
	$numero_question = !empty($_POST['numero_question']) ? intval($_POST['numero_question']) : 1;
	if(isset($_POST['precedent'])) {
			$numero_question--;
			unset($_SESSION['reponses'][$numero_question]);
	} else {
		$rep_question = !empty($_POST['rep_question']) ? $_POST['rep_question'] : '';
		if(!empty($rep_question)) {
			$_SESSION['reponses'][$numero_question] = $rep_question;
			// On incrémente le n° de question
			$numero_question++;
		} else {
			$erreur = 'Sélectionner une réponse';
		}
	}
} else {
	// Premier affichage
	$numero_question = 1;
	$_SESSION['reponses'] = array();
}

$reponses = !empty($_SESSION['reponses']) ? $_SESSION['reponses'] : array();
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />  
<title>Questionnaire</title>  
</head>  
<body>
<?php
if($erreur) echo '<p style="color:red">'.$erreur.'</p>';
?>
<?php    if(count($reponses) < count($questions)) {    ?>
<p><strong>Question <?php echo $numero_question.' : '.$questions[$numero_question][0]; ?></strong></p>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<?php
shuffle($questions[$numero_question][1]);
foreach($questions[$numero_question][1] as $possibilite) {
	$value_possibilite = str_replace(" ", "_", $possibilite);
	echo '<p><input type="radio" name="rep_question" value="'.$value_possibilite.'" id="'.$value_possibilite.'" /><label for="'.$value_possibilite.'">'.$possibilite."</label></p>\n";
}
?>
	<p>
		<input type="radio" name="rep_question" value="autre" id="autre" /><label for="autre">Autre</label>
		<input type="hidden" name="numero_question" value="<?php echo $numero_question; ?>" />
	</p>
    <p>
		<?php if($numero_question > 1) echo '<input type="submit" name="precedent" value="Précédent" />'; ?>
        <input type="submit" value="Suivant" />  
    </p>  
</form>  
<?php    } else {   // Ici on traite les réponses (pour l'exemple un simple affichage
foreach ($_SESSION['reponses'] as $key=>$value) {  
    echo '<p>Réponse '.$key.' : '.$value."</p>\n";  
}  
?>  
  
<?php    }    ?>  
</body>  
</html>
marcv a écrit :
Je n'ai pas compris pas ton problème avec la méthode PHP. Quant à effectuer la manip en Javascript, si tu le préfères, un principe de départ pourrait être le suivant (avec jQuery, et à développer, naturellement) :
var elements_a_melanger = $('.blabla');

elements_a_melanger
    .sort(function() { return Math.random() - 0.5; })
    .parent()
    .append(elements_a_melanger);


Merci, pour la méthode PHP, le petit problème est que les personnes qui travaillent avec moi ne connaissent pas PHP, donc je voulais pas compliquer le code du questionnaire. Mais bon après avoir réfléchit je vais le faire en php.
Heyoan a écrit :
Perso je serais parti sur PHP. Par exemple :
<?php
// Les réponses sont stockées en session
session_start();
.
.
.
<?php    }    ?>  
</body>  
</html>


Merci Heyoan, une réponse très précise de ta part, concernant le stockage des questions je pense que je vais le faire avec la base de donnée.

Concernant la partie traitement : Je vais pas m'en servir puisque mon formulaire sera sur une page, sinon je le garde çà serviras certainement par la suite.

Comme j'ai pas bosser dessus ce week-end, dans le courant de la semaine, je vais faire le formulaire soit dans un tableau soit dans une base de donnée. Quand j'aurais avancer, je reviendrai poster.

En tous cas merci beaucoup. Smiley lol
Modifié par DrOMgba (13 Jul 2010 - 08:06)