Button suivant

Bonjour,

comment faire le code du button suivant dans un systeme de pagination de formulaire dynamique avec nesecité de varible de session pour sauvgarde les valeur de page en page de la systeme de pagination
Merci
a++

4 réponses

  1. Bonjour,

    Vous n'êtes pas obligé de passer par une session.
    Vous faites un formulaire contenu dans plusieurs div
    la première est visite, les autres sont cachées.
    Quand vous cliquez sur le bouton suivant, vous cachez celle où vous êtes et affichez la suivante.

    Sinon avec une session et bien vous faites autant de formulaires que de pages, le bouton suivant fait un submit vers le formulaire suivant, vous stoquez les variables postées dans la session à chaque page

    genre $_SESSION['_post_NOM'] = $_POST['NOM'];

    et vous avancez jusqu'à la fin du formulaire ou là vous finissez par traiter tous les champs de la session commençant par '_post_'

    Cordialement
    1. slaut
      oui j'utilise les sessions pour cela je recupere mes varibles avec un tableau
      <?php
      
      session_start();
      $nb_questions[0]="";
      
      for($i=1;$i<=$nb_questions[0];$i++){
      	if(isset($_POST['question' . $i]) )
      {
        $_SESSION['question' . $i]= $_POST['question' . $i];
        echo $_SESSION['question' . $i];
        
      	}
      }
      ?>
      

      ensuite mon code html
      et je récupère mon formulaire dans la base de donné avec 7question dans la page
      if( isset($_GET['page']) && is_numeric($_GET['page']) )
      
          $page = $_GET['page'];
      
      else
      
          $page = 1;
      
      // Nombre d'info par page
      
      $pagination = 7;
      
      // Numéro du 1er enregistrement à lire
      
      $limit_start = ($page - 1) * $pagination;
      
      // Préparation de la requête
      
      $sql = "SELECT * FROM question WHERE id_categorie='1' LIMIT $limit_start, $pagination";
      
      // Requête SQL
      
      $resultat = mysql_query($sql);
      
      // Traitement et affichage des données
      
      									
      
      while ( $donnee = mysql_fetch_assoc($resultat) ) {
      echo"<div id='question73'>";
      					echo"<table width='75%' align='center' border='1' style='border-collapse: collapse' bordercolor='#0099CC' bgcolor='white'>";
      
      						echo"<tr>";
      
      							echo"<td align='center'>";
      
      								echo"<table width='100%' cellspacing='0'>";
      
      									echo"<tr>";
      
      										echo"<td align='center' bgcolor='#E5F9FF'>";
      
      											echo"<font size='2' color='#0033CC'><b><label for='5X21X73'>".$donnee['libelle_quest']."</br><font size='2' color='#0099FF'>(".$donnee['remarques'].")</i><b/></label>";
      
      									echo"</tr>";
      									echo"<tr>";
      
      										echo"<td align='center'>";
               $query_rep = "SELECT *
                          FROM reponse
                          WHERE id_question = ".$donnee['id_question']." ORDER BY id_question";
              $result = mysql_query($query_rep) OR die("Erreur");
      														echo"<table class='question'>";
      														
      
      
       while ( $reponse = mysql_fetch_array($result) )
              {
      			echo"<tr>";
      echo"<td>&nbsp;</td>";
      			echo"<td align='left' class='answertext'>";
      			if($donnee['type']=="Multichoix")
      			{
      				echo"<input type=\"checkbox\" name=\"question".$donnee['id_question']."[]\"value=\"".$reponse['libelle_rep']."\" />";
      				echo"<label class=\"answertext\">".$reponse['libelle_rep']."</label>";
                                               echo "<br />";
      			}
      			else if($donnee['type']=="choix unique")
      			{               
                 	 echo "<INPUT TYPE=\"radio\" NAME=\"question".$donnee['id_question']."\" VALUE=\"".$reponse['libelle_rep']."\"";
      			 if(isset($_SESSION['question' . $donnee['id_question']]) AND $_SESSION['question' . $donnee['id_question']]===$reponse['libelle_rep']) {echo "checked";} 
      				echo "/>";
                          echo $reponse['libelle_rep']."<BR>";
      					
      		}
      			
              }//fin while reponses
      			if($donnee['type']=="champs texte")
      			echo"<input type=\"text\" name=\"question".$donnee['id_question']."\" size=\"30\"/>";
      			else if($donnee['type']=="textarea")
      			{
      			echo "< textarea type=\"textarea\" name=\"question".$donnee['id_question']."\" rows=\"5\" cols=\"40\"/>";		
      			}echo "<br />";
      echo"</td>";
      					echo"<td>&nbsp;</td>";
      				echo"</tr>";
      			echo"</table>";
      										echo"</td>";
      
      									echo"</tr>";
      
      									echo"<tr>";
      
      										echo"<td align='center' bgcolor='#E5F9FF'>";
      
      											echo"<font size='1'></font>";
           
      										echo"</td>";
      
      									echo"</tr>";
      
      								echo"</table>";
      
      							echo"</td>";
      
      
      						echo"</tr>";
      
      					echo"</table>";
      
      					echo"<table>";
      
      						echo"<tr>";
      
      							echo"<td height='1'></td>";
      
      						echo"</tr>";
      
      					echo"</table>";
      				echo"</div>";
      
      	//fin while question
                        
      
      
          /* ICI VOTRE CODE NORMAL */
          /* Affichage d'un élément */
      }
      
      // Nb d'enregistrement total
      
      $nb_total = mysql_query('SELECT COUNT(*) AS id_question FROM question WHERE id_categorie = 1 ');
      
      $nb_total = mysql_fetch_array($nb_total);
      
      $nb_total = $nb_total['id_question'];
      
       
      
      // Pagination
      
      $nb_pages = ceil($nb_total / $pagination);
                  //Si il n'y a pas plus d'une page on renvoit rien...  
      	for ($i = 1 ; $i = $nb_pages ; $i++) {
      
          if ($i == $page ){
      
              echo " $i";
      	}
      		else {
              echo " <a href=\"?page=$i\">$i</a> ";
      		}
       
      		echo '/';
        
      }
      
      ?>
      </td>
      		  </tr>
      		</table>
      
      		<table><tr><td height='2'></td></tr></table>
      
      
      <!-- PRESENT THE NAVIGATOR -->
      		<table width='100%' align='center' bgcolor='#E5F9FF'>
      		 <tr>
      		  <td align='left' valign='middle' height='40'>
      		    <!--  					<div class='clearall'><a href='/middlewaresurvey/index.php?sid=5&amp;move=clearall' onClick='return confirm("Are you sure you want to clear all your responses?")'>[Exit and Clear Survey]</a></div>
                   s){
                   -->
         
       <form method="get" action=""> 
      
      <input type="button" name="page_x_1" onclick="JavaScript:window.open('?page=<?php echo ($_GET['page']-1);?>','_self');"  value="PAGE PRECEDENTE"> 
      <input type="button" name="page_x_2" onclick="JavaScript:window.open('?page=<?php echo ($_GET['page']+1);?>','_self');"  value="PAGE PRECEDENTE"> 
      
      
      </form>
      
      1. Ouf c'est long ! Je vais regarder mais bon...

        Vous savez qu'il existe des outils tout fait en PHP pour faire ce genre de chose ? Genre Lime Survey ?
      2. ben oui désole je sais que c long.... juste pour vous montre mon syteme de pagination et mes buttons et comment je traire mes variables de sessions.
        ben j'ai po une idée a propos de Genre Lime Survey
    2. $nb_questions[0]="";
      
      for($i=1;$i<=$nb_questions[0];$i++){
      	if(isset($_POST['question' . $i]) )
      {
        $_SESSION['question' . $i]= $_POST['question' . $i];
        echo $_SESSION['question' . $i];
        
      	}
      }
      


      C'est étrange comme code

      $nb_questions[0]="", d'accord, donc $i<=$nb_questions|0] n'a aucun sens.

      1 <= "" ne signifie rien en programmation, à priori ça rend false (pas vérifié) donc la boucle ne doit pas se faire
      1. ben parcque quand je met pas $nb_questions[0]=""; il me signale un erreur undfined nb_question .
        ben ce code marche quand je le tste juste sur 2 page je trouve mes varible de sesion et pa de probleme je veux qu'il marche avec pagination un nombre n'est pas définis de pages aussi
        le <form methode='post' action=''> je sais pa quoi metrre dans le action et comment palacer le button submit ????
      2. Ca marche peut-être mais bon...

        A quoi sert cette variable $nb_questions[0] ???
      3. c'est un array qui contient tou mes varibles question
        et chaque varible en laffecte dans une variable session
    3. Bonjour,

      Non, $nb_questions[0], ne contient jamais rien d'après ce que je voie de votre code. Vous l'instanciez à "" et c'est tout.
      Si dans une autre page, vous avez remplit ce tableau, lorsque vous appelez votre nouvelle page, cette variable se retouvre à nouveau non définie. En PHP les variables on une portée limitée à la page, sauf vi vous passez par le mécanisme des sessions.