[php]direction aprés validation vers une page

Fermé
lusly - 16 juin 2008 à 16:51
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 - 16 juin 2008 à 18:40
Bonjour,
J'ai réalisé deux questionnaires que je développe actuellement. Lorsqu'un utilisateur arrive sur ma première page il doit décider quel questionnaire il veut remplir: un questionnaire office ou un questionnaire utilisateur. J'ai donc réalisé une première page avec une question: "A quel questionnaire souhaitez vous répondre"? et on on peut ensuite cocher une réponse "un questionnaire remplit par un utilisateur" ou "un questionnaire destiné aux offices du tourisme". Ensuite on appuie sur valider et il faut que l'utilisateur se retrouve soit face à la première question du questionnaire utilisateur, soit à la première question du questionnaire office. Mais je ne sais pas faire cela, je ne sais même pas si il faut faire un lien vers une autre page ou plutot, si comme dans ma base j'ai l'identifiant de la question utilisateur et de la question office que je veux afficher me servir de cela. Voici ce que j'ai fait pour le moment:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Bienvenue sur mon site!</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>Bonjour</h1>
<form method="post" action="cible.php">
<p> A quel questionnaire souhaitez vous répondre? </p>
<?php
mysql_connect("localhost", "root", "");//connexion mysql
mysql_select_db("questionnaire");//connexion base
$reponse = mysql_query("SELECT Libelle_questionnaire FROM questionnaires where Id_questionnaires=1");
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<input type="radio" name="type questionnaire" value="<?php echo $donnees[Libelle_questionnaires]; ?>"/>un questionnaire remplit par un utilisateur<br />
<?php
$reponse = mysql_query("SELECT Libelle_questionnaire FROM questionnaires where Id_questionnaires=2");
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<input type="radio" name="type questionnaire" value="<?php echo $donnees[Libelle_questionnaires]; ?>"/>un questionnaire destiné aux offices du tourisme<br />
</p>
<p>
<input type="submit" />
<?php
}
}
mysql_close();
?>
</form>
</body>

Merci d'avance!!!
A voir également:

1 réponse

macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
16 juin 2008 à 18:40
Bonjour.

Déjà quelques observations sur ton code :
- Quand tu utilises des fonction MySQL, penses à récupérer une erreur éventuelle avec un or die (mysql_error())
- Pourquoi récupères-tu le Libelle des questionnaires dans une table, alors que tu affiches le libellé des boutons en dur ?
Autant faire une table de ce genre :
Id => Id du questionnaire
Nom => Nom du questionnaire
Libelle => Ce qu'on affiche
Ou au moins, récupère l'Id qui te servira à choisir le questionnaire...

- Pourquoi faire deux requêtes filtrées, alors qu'a priori ta table questionnaires contient tous les questionnaires ?

Au final :
<?php
mysql_connect("localhost", "root", "") or die('Erreur MySQL : '.mysql_error());//connexion mysql
mysql_select_db("questionnaire") or die('Erreur de connexion à la base : '.mysql_error());//connexion base

// Une seule requête pour récupérer tous les questionnaires de la table.
$reponse = mysql_query("SELECT Id_questionnaire, Libelle_questionnaire FROM questionnaires") or die('Erreur de requête : '.mysql_error());
while ($donnees = mysql_fetch_array($reponse) ) {
// Et on crée un bouton radio par ligne récupérée.
   echo '<input type="radio" name="type_questionnaire" value="'.$donnees[Id_questionnaires].'"/>';
   echo $donnees['Libelle_questionnaires'].'<br />';
}
?>


Ensuite, pour exploiter le formulaire, tu as trois solutions :
1. Dans cible.php tu testes la valeur de $_POST['type_questionnaire'], et tu exécutes la routine qui va bien en fonction de la valeur.

2. cible.php renvoie (avec un header("location:")) sur la page 'type_questionnaire'.php, qui contient le questionnaire.

3. Si tes questionnaires sont construits de manière standard, il suffit d'utiliser la valeur de 'type_questionnaire' en paramètre.
Par exemple, si tu as une table
questions :
Id
Id_questionnaire
intitulé
reponse

tu fais un "SELECT * from questions WHERE Id_questionnaire=".$_POST['type_questionnaire']
0