Page 1 sur 1

Bouton suivant

Posté : 12 avr. 2012, 08:59
par orell1
Bonjour à tous,
je souhaiterais savoir comment mettre en place un systeme très simple qui consiste à remplacer mon bouton submit en bouton suivant... ?
Exemple:
1) je remplie le formulaire 1 et je clique sur suivant
2) Si mes champs obligatoires sont remplis alors je vois apparaitre le deuxième formulaire sinon je recommence
3) et ainsi de suite...

Merci par avance.

Cordialement.

Re: Bouton suivant

Posté : 12 avr. 2012, 09:18
par Mazarini
Il n'y a rien de spécial à faire si ce n'est d'afficher la page suivante lorsque le formulaire est bien rempli.

Tu fais 2 fonctions d'affichage et en fonction du traitement du formulaire, tu appelles la fonction qui réaffiche la page ou celle qui affiche la page suivante.

Re: Bouton suivant

Posté : 12 avr. 2012, 09:20
par orell1
Ok merci, j'avais oublié de dire que tout doit rester sur la même page...
Sinon effectivement avec des $_POST et des nouvelles pages c'était plus simple mais bon ce n'est pas ce que je souhaite... :)

Re: Bouton suivant

Posté : 12 avr. 2012, 09:38
par xTG
Tu mets tout sur la même page et tu utilises une variable GET etape à incrémenter pour indiquer sur quel morceau du formulaire tu travailles.
Cela te permet de savoir quoi vérifier et quoi afficher (mais l'affichage restera aussi en fonction du résultat de la vérification).
Et pour trimbaler les données déjà transmises soit tu passes par des input hidden, soit par les variables de session.

Re: Bouton suivant

Posté : 12 avr. 2012, 09:42
par Mazarini
C'est pour répartir la saisie d'une ligne de table sur plusieurs pages ou pour saisir des lignes les une après les autres ?

Dans le premier cas :
Tu traites le formulaire (sauf si c'est le premier affichage) avec une fonction par formulaire. Ces fonctions retournent le numéro de la page à afficher.
Tu fais une fonction pour afficher chaque page et tu appelles celle qui est calculée dans l'étape précédente.
Dans chaque page tu mets les zones des autres pages en "hidden".

Tu peux utiliser une variable $_POST['page'] pour savoir ou tu en est dans ton traitement.

Code : Tout sélectionner

<?PHP if (isset($_POST['page']) { $page = $_POST['page']; } else { $page = 0; } switch ($page) { case 0 : $pagesuivante = initialisation(); // retourne 1 pour afficher la page 1 break; case 1 : $pagesuivante = traitement_page1(); // retourne 1 pour réafficher la page 1 ou 2 sinon break; ... } switch ($pagesuivante) { case 1 : affichage_page1(); break; case 2 : affichage_page2(); break; ... } ?>

Re: Bouton suivant

Posté : 12 avr. 2012, 11:36
par orell1
Super génial! C'est ce qu'il me fallait! merci beaucoup! c'est top!

Maintenant j'ai un autre petit soucis avec un calcul, voici une partie du codage:
  $conn = db_connect();
  $req = "select * from ".COMMANDES." where login_user = '$utilisateur' order by id asc"; 
  $resultat = mysql_query($req, $conn);
  $resultat_etape = mysql_query($req, $conn);
  $masquer_etape = mysql_fetch_array($resultat_etape);
//-----------------------------------------------------------------------------------------

//-------------------------sinon affichage du panier de l'utilisateur ---------------------
    	echo "<fieldset class=\"fieldset\"><legend class=\"legend\">".AFFICHER_MON_PANIER."</legend>";
		 
			 if ($masquer_etape['horaire_livraison'] && $masquer_etape['date_evenement']) {
		echo "&nbsp;";
			 }
			 else {
				 echo "<p><img src=\"images/etape_1.jpg\" align=\"right\"></p><br /><br />";
			 }
		 
	echo "<table align=\"center\" border=\"0\" cellspacing=\"1\" cellpadding=\"0\" width=\"100%\" class=\"bordure\">";
	echo "<th class=\"fond\" colspan=\"2\"><b>".ARTICLE."</b></th>";
	echo "<th class=\"fond\"><b>".QUANTITE."</b></th>";
	//echo "<th class=\"fond\"><b>".COULEUR."</b></th>";
	//echo "<th class=\"fond\"><b>".TAILLE."</b></th>";
	echo "<th class=\"fond\"><b>".PRIX."</b></th>";
	echo "<th class=\"fond\" colspan=\"3\"><b>".ACTIONS."</b></th></tr>";

 while ($affiche_req = mysql_fetch_array($resultat)) {
	echo "<tr><th class=\"fond\"><img src=\"$affiche_req[photo]\" border=\"0\" width=\"60px\" alt=\"\" /></th>";
	echo "<td class=\"fond\">&nbsp;".stripslashes($affiche_req[titre])."</td>";
	echo "<th class=\"fond\">".$affiche_req[quantite]."</th>";	
	//echo "<td class=\"fond\">&nbsp;".$affiche_req[couleur]."</td>";	
	//echo "<td class=\"fond\">&nbsp;".$affiche_req[taille]."</td>";
	echo "<td class=\"fond\">&nbsp;".number_format($affiche_req[prix],2, '.', ' ')."</td>";

	echo "<th class=\"fond\" colspan=\"3\"><a href=\"supprimer_article_panier.php?id=".$affiche_req[id]."\" onclick=\"return confirm('".CONFIRME_SUPPRESSION." ?')\"><img height=\"16\" src=\"$dir_image/drop.gif\" title=\"".SUPPRIMER."\" border=\"0\" alt=\"\" /></a>&nbsp;&nbsp;&nbsp;&nbsp;";
//----------------------------------------------------------------------------------------

//----------------------------------------------------------------------------------------
//requete pour verifier la quantite existante en stock where la reference. objectif : l'utilisateur ne doit plus pouvoir ajouter cette article
//dans son panier si le stock est a 0.
  	$conn = db_connect();
  	$reference = $affiche_req[reference];
  	$sql_stock = "select * from ".ARTICLES." where reference = '$reference'";
  	$result_stock = mysql_query($sql_stock, $conn);
  	$stock_existant = mysql_fetch_array($result_stock);
	
	// CONNEXION BASE POUR AJOUT CODE
	$login_user= $user['login_user'];
$conn = db_connect();
$sql = "select * from eden_utilisateurs where login_user='$login_user'";
$result = mysql_query($sql, $conn);
$code_ok = mysql_fetch_array($result);

// CALCUL FRAIS DE PORT
  $conn = db_connect();
  $req = "select * from ".COMMANDES." where login_user = '$utilisateur'"; 
  $resultat_port = mysql_query($req, $conn);
  $port = mysql_fetch_array($resultat_port);
  
  
   //calcul le prix du panier
      $conn = db_connect();
      $query_panier = "select * from ".COMMANDES." where login_user = '$utilisateur'";
      $resultat_panier = mysql_query($query_panier, $conn);

         while ($query= mysql_fetch_array($resultat_panier))
        {  
          $prix_total_panier += $query[prix]*$query[quantite];
        }


//stock restant si il est inferieur ou egale a 0 ne pas afficher l'image plus.png
  	  if ($stock_existant[stock] >= 0) {
	      echo "<a href=\"update_aug_qte_panier.php?id=".$affiche_req[id]."\"><img src=\"$dir_image/plus.png\" title=\"".AJOUTER."\" border=\"0\"></a>&nbsp;&nbsp;&nbsp;&nbsp;";
	  }
	
	  if ($affiche_req[quantite] > 1) {
	      echo "<a href=\"update_dim_qte_panier.php?id=".$affiche_req[id]."\"><img src=\"$dir_image/moins.png\" title=\"".ENLEVER."\" border=\"0\"></a></th></tr>";
	  }
	  //recuperation de la variable valider par cheque prix et reference
	  $valider = $affiche_req[valider];
	  $prix = $affiche_req[prix];
	  $reference = $affiche_req[reference];
 } // fin de while ....
 if ($code_ok[code_valide] ==1 ) {
	 
	if(($prix_total_panier) <50)  {
	echo "<tr><th class=\"fond\" colspan=\"4\"><b>".PORT_EMBALLAGE_INCLUS_TOTAL_A_PAYER."</b></th><td class=\"fond\">&nbsp;".number_format($prix_total*0.90,2, '.', ' ')."</td></tr>";
} 
else {
	
	echo"<tr><td><img src=\"images/livraison_offerte.png\" style=\"vertical-align:middle\"></td><th class=\"fond\" colspan=\"3\"><b>Total &agrave; r&eacute;gler</b></th><td class=\"fond\">&nbsp;".number_format($prix_total*0.90,2, '.', ' ')."</td></tr>";
	
}
 }
 
 else {
	if(($prix_total_panier) <50)  {
	echo "<tr><th class=\"fond\" colspan=\"4\"><b>Total Panier + 15&#8364; de livraison</b></th><td class=\"fond\">&nbsp;".number_format($prix_total,2, '.', ' ')."</td></tr>";
} 
else {
	
	echo"<tr><td><img src=\"images/livraison_offerte.png\" style=\"vertical-align:middle\"></td><th class=\"fond\" colspan=\"3\"><b>Total &agrave; r&eacute;gler</b></th><td class=\"fond\">&nbsp;".number_format($prix_total,2, '.', ' ')."</td></tr>";
	
}
 }
  	echo "</table><br />";
En fait ce que je souhaite faire c'est publier l'image : livraison_offerte.png si le montant du panier sans les frais de port est <= 50, le code fonctionne très bien lorsqu'il y a un article mais dès qu'il y en a plusieurs ça ne fonctionne plus...

Merci beaucoup

Re: Bouton suivant

Posté : 12 avr. 2012, 12:02
par Mazarini
Je pense qu'il faut que tu fasse une boucle de lecture pour les frais de ports comme sur le prix de la commande.

Re: Bouton suivant

Posté : 12 avr. 2012, 12:27
par orell1
j'ai essayé avec ça:
		       //frais de transport
       $aff_frais_port = rech_enreg_frais_port();
       $fraisdeport = number_format($aff_frais_port[frais_port],2, '.', ' ');

      if ($prix_total_panier == 0)
      {
    	$prix_total_panier = $prix_total_panier;
      }
       else
      {
		  if ($prix_total_panier <50) {
			  $prix_total_panier = $prix_total_panier + $fraisdeport;
		  }
		else  {
			$prix_total_panier = $prix_total_panier+ $fraisdeport-$fraisdeport;
		}
      }	  
mais sans succès... :(

Re: Bouton suivant

Posté : 12 avr. 2012, 14:00
par orell1
en realité il faut retirer les frais de port au $prix_total

Re: Bouton suivant

Posté : 20 juin 2012, 12:56
par ngouz
C'est pour répartir la saisie d'une ligne de table sur plusieurs pages ou pour saisir des lignes les une après les autres ?

Dans le premier cas :
Tu traites le formulaire (sauf si c'est le premier affichage) avec une fonction par formulaire. Ces fonctions retournent le numéro de la page à afficher.
Tu fais une fonction pour afficher chaque page et tu appelles celle qui est calculée dans l'étape précédente.
Dans chaque page tu mets les zones des autres pages en "hidden".

Tu peux utiliser une variable $_POST['page'] pour savoir ou tu en est dans ton traitement.

Code : Tout sélectionner

<?PHP if (isset($_POST['page']) { $page = $_POST['page']; } else { $page = 0; } switch ($page) { case 0 : $pagesuivante = initialisation(); // retourne 1 pour afficher la page 1 break; case 1 : $pagesuivante = traitement_page1(); // retourne 1 pour réafficher la page 1 ou 2 sinon break; ... } switch ($pagesuivante) { case 1 : affichage_page1(); break; case 2 : affichage_page2(); break; ... } ?>
je me trouve dans le meme souci. j'ai 11 proprietes d'une table que je voudrais repartir sur plusieurs pages. alors s'il vous plait donnez moi un exemple concret afin que je puisse realiser mon projet