Formulaire avec des boutons suivants et precedents

lola2006 Messages postés 4 Date d'inscription mardi 23 décembre 2008 Statut Membre Dernière intervention 18 avril 2010 - 16 avril 2010 à 23:03
lola2006 Messages postés 4 Date d'inscription mardi 23 décembre 2008 Statut Membre Dernière intervention 18 avril 2010 - 16 avril 2010 à 23:35
Bonjour,
j'ai un problème avec mon code source : je dois construire un formulaire des questions dont les données sont stockées dans une base de données. J'ai pu réaliser le formulaire et récupérer les ponderations à chaque question et à la fin j'ai pu claculer le score total. Mais après on m'a suggéré au lieu d'afficher le formulaire en entier, je dois le faire page par page avec des boutons précédent et suivant. Sauf que lorsque je choisis une réponse et je vais au suivant et par la suite je reviens au précédent, mes réponses ne sont plus cochées. J'ai besoin de votre aide, Merci!
Voilà mon code :
<?php
session_start();

global $rep;
$rep=array();

if (isset($_POST['btnCompleter'])) {
header('Location:pageReussi.php');
}

if (isset($_POST['btnSuivant'])) {

$limit=$_POST['limitS'];
$numTest=$_SESSION['p'];
}
else
if (isset($_POST['btnPrecedent'])) {
$limit=$_POST['limitP'];
$numTest=$_SESSION['p'];
echo "le test apres le clic suir le boutant ******* :".$limit;
}
else {
$_SESSION['p']=$_GET['p'];
$numTest=$_SESSION['p'];
$compteur = 1;
$limit=0;
}

require 'fonctions.php';
include 'connexion.php';
mysql_query("SET NAMES UTF8");

/*initialisation des variables
-------------------------------
$total le nombre total d'enregistrements de la table
$limit ou en sommes nous dans notre affichage3*/
$nombre = 3; //$nombre nombre d'enregistrements qu'on veut afficher exemple


$path_parts=pathinfo($_SERVER['PHP_SELF']); //recuperer le nom de la page qui
$page=$path_parts['basename']; // sera utilisee dans les liens

//compter le nombre d'enregistrements de la table qui est $total
$req = "SELECT count(idQuestion) FROM questionTable WHERE idTest='".$numTest."'";
$rows=mysql_query($req)
or die(mysql_query_error());
$row=mysql_fetch_row($rows);
$total=$row[0];

//recuperation des reponses dans un tableau rep
for ($i=$limit; $i<$total; $i++) {
$rep[$i]=$_POST["q$i"+1];
}

for ($i=1; $i<=$total; $i++) {
echo "le tableau est".$_POST["q$i"]."-";
}

//verifier la validite de notre variable qui est verifLimite($limit)
$verif = verifLimite($limit,$total,$nombre);
if(!$verif) {
$limit = 0;
}

//requete qui ne prend que le nombre d'enregistrement necessaire a l'affichage
$req="SELECT * FROM questionTable WHERE idTest='".$numTest."'LIMIT ".$limit.",".$nombre;
$rows=mysql_query($req);

if ($total) {
$content="\";

//retrait et affichage des enregistrements de la base de donnees
While ($row=mysql_fetch_array($rows)) {
$typeQ=\"q\".$row['numQuestion'];
if ($_POST[\"typeQ\"]=='1' || $_POST[\"typeQ\"]=='2' || $_POST[\"typeQ\"]=='3' || $_POST[\"typeQ\"]=='4') {
$styleQ=\"nostar\";

}
else {
$styleQ=\"star\";
}
$content.=\"----
*".$row['numQuestion']." - ".$row['enonceQuestion'].", \";

if ($_POST[\"$typeQ\"]=='1') {
$content.=\"----
Jamais
";
}
else {

$content.="----, Jamais
\";
}

if ($_POST[\"$typeQ\"]=='2') {
$content.=\"----
Occasionnel
";
}
else {
$content.="----, Occasionnel
\";
}

if ($_POST[\"$typeQ\"]=='3') {
$content.=\"----
Souvent
";
}
else {
$content.="----, Souvent
\";
}

if ($_POST[\"$typeQ\"]=='4') {
$content.=\"----
Toujours
";
}
else {
$content.="----, Toujours
\";
}

}
$content.="
";
}
else {
echo "Pas d'enregistrements dans cette table";
}
mysql_free_result($rows);

//si le nombre d'enregistrement a afficher est plus grand que $nombre
if($total>$nombre) {
//affichage des boutons
$ligneBoutons=displayNextPreviousButtons($limit,$total,$nombre,$page);
}
else {
echo "le total une fois il existe la fonction".$total;
}
?>
<!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' lang='en_US' xml:lang='en_US'>
<head>
<meta http-equiv='content-type' content='text/html; charset=UTF-8' />
<link rel="stylesheet" type="text/css" href="style.css" />
<title>Ceci est un test d'affichage page par page</title>
</head>

Liste des questions

<form action="<?php echo $page; ?>" method="post">
<?php
echo $content;
echo $ligneBoutons;
?>
</form>

</html>

et mon code de la fonction est :
function displayNextPreviousButtons($limit,$total,$nb,$page) {
$limiteSuivante=$limit+$nb;
$limitePrecedente=$limit-$nb;
echo "la reponse de la premiere question est :".$rep[1];


$ligneButtons="\";
if ($limit!=0) {
$ligneButtons.=\""."\n";
$ligneButtons.="";
$ligneButtons.="";
$ligneButtons.=", \";
}
if ($limiteSuivante<$total) {
$ligneButtons.=\""."\n";
$ligneButtons.="";
$ligneButtons.="";
$ligneButtons.=", \";
}
else {
$ligneButtons.=\""."\n";
$ligneButtons.="";
$ligneButtons.=", \";
}
$ligneButtons.="
";
echo "mon total dans la fonction est :".$total;
return $ligneButtons;
}

1 réponse

lola2006 Messages postés 4 Date d'inscription mardi 23 décembre 2008 Statut Membre Dernière intervention 18 avril 2010
16 avril 2010 à 23:35
0
Rejoignez-nous