[RESOLU] Bouton suivant

Mammouth du PHP | 687 Messages

12 avr. 2012, 08:59

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.

ViPHP
ViPHP | 2577 Messages

12 avr. 2012, 09:18

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.

Mammouth du PHP | 687 Messages

12 avr. 2012, 09:20

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... :)

ViPHP
xTG
ViPHP | 7331 Messages

12 avr. 2012, 09:38

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.

ViPHP
ViPHP | 2577 Messages

12 avr. 2012, 09:42

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; ... } ?>

Mammouth du PHP | 687 Messages

12 avr. 2012, 11:36

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

ViPHP
ViPHP | 2577 Messages

12 avr. 2012, 12:02

Je pense qu'il faut que tu fasse une boucle de lecture pour les frais de ports comme sur le prix de la commande.

Mammouth du PHP | 687 Messages

12 avr. 2012, 12:27

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... :(

Mammouth du PHP | 687 Messages

12 avr. 2012, 14:00

en realité il faut retirer les frais de port au $prix_total

ngouz
Invité n'ayant pas de compte PHPfrance

20 juin 2012, 12:56

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