Bouton retour, réenvoi du formulaire

sBENETT
Invité n'ayant pas de compte PHPfrance

24 nov. 2011, 13:10

Bonjour, je suis face à un petit problème qui même si il ne gène pas le fonctionnement est plutôt désagréable.

Effectivement, j'ai un formulaire qui une fois envoyé, dirige vers une page Résultat.php.

Cette page Resultat est composé de 7 résultats avec pour chaque résultat un lien qui mène vers une Troisieme page que j'appel Détails.php et qui fournit tous les détais du produit. Jusqu'a la tout va bien.
En revanche quand je clique sur mon bouton retour de la page Détails, j'aimerais revenir sur ma page résultats et donc que le formulaire soit réenvoyé comme à l'initial.
Avec mozilla, ca fonctionne puisqu'il demande automatiquement si on veut renvoyer le formulaire. En revanche sur IE ou google chrome par exemple, il mette que le formulaire doit-être renvoyé et qu'il faut donc actualisé la page.
J'aimerais éviter cela, et que le click sur la bouton retour me dirige sans intermediaire sur ma page résultat et ce sur tous navigateurs. Est-ce possible. Voici le code pour mon bouton retour:

Code : Tout sélectionner

echo"<input type=\"button\" value=\"Retour\" onClick=\"javascript:history.back()\">";
Merci pour votre aide,
SBENETT

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 nov. 2011, 15:05

salut,

garde les paramètres de recherche en session et quand tu valide le formulaire (tu recharge la page à partir des infos de session).

passe une info pertinente dans le formulaire pour savoir que tu veux ré-afficher la page (genre test la valeur du bouton submit, et n'oublie pas de le nommer).


@+
Il en faut peu pour être heureux ......

sBENETT
Invité n'ayant pas de compte PHPfrance

24 nov. 2011, 15:27

Salut, merci de ta réponse.

Le truc c'est que j'utilise déja les Variables de sessions pour recuperer mes informations du formulaire. Et j'utilise ces variable dans ma requete, cela ne suffirait pas?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 nov. 2011, 16:04

si si, du moment que tu a les infos de stockées il te faut juste retourner sur la page, avec un lien ou un formulaire (juste un <form action="tapage" method="post"><input type="submit" name="recommencer" value="retour" /></form>)


@+
Il en faut peu pour être heureux ......

sBENETT
Invité n'ayant pas de compte PHPfrance

24 nov. 2011, 16:23

Merci beaucoup, problème résolu!! :)

Merci de ton aide

sBENETT
Invité n'ayant pas de compte PHPfrance

25 nov. 2011, 11:00

Bonjour, encore une question finalement. J'ai mis en place une pagination, c'est à dire que j'ai toujours 7 résultats par page, et autant de page qu'il faut pour afficher tous mes résultats. La pagination marche très bien.
Mon problème est le suivant
Lorsque je suis sur la page 3 par exemple, et que je selectionne un produit. J'accede donc a la fiche détail de ce produit. Sauf qu'une fois que je clique sur, il me renvoi sur la page 1, et c'est un peu embêtant sachant que je peux avoir parfois plus de 10 pages. Alors si l'utilisateur doit de nouveau toutes les reparcourir pour retourner ou il en était, c'est dommage.
Y a t'il une solution? J'en suis persuader ^^, laquelle, j'en suis tout de suite moins au courant.

Merci

sBENETT
Invité n'ayant pas de compte PHPfrance

25 nov. 2011, 11:03

edit:

on bouton submit est ainsi:


echo"<form name=\"details\" id=\"details\" action=\"resultat.php\" method=\"post\">";
|
|
|
|
|
|
echo"<input type=\"submit\" value=\"Retour\" name=\"recommencer\">";
echo"</form>";

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 nov. 2011, 12:41

il faut que tu ajoute la page courante dans la session ou l'url afin de pouvoir gérer le retour.

en gros tu a déjà ton système de pagination il suffit de placer la bonne valeur dans la variable qui te permet d'afficher la bonne page.

tu peux très bien dire que ton formulaire est de type get
dans ce cas
<form action="lapage" method="get"><input type="submit" name="leboutonsubmit" value="retour ?" />
<input type="hidden" name="page" value="412" /></form>
tu va donc avoir un $_GET['page'] contenant la valeru que tu aura mis dans le champ caché (type hidden).

si ton système de pagination est basé sur $_GET['page'] c'est gagné :)

fonctionne aussi avec d'autre nom de variable :mrgreen:

@+
Il en faut peu pour être heureux ......

sBENETT
Invité n'ayant pas de compte PHPfrance

25 nov. 2011, 13:10

Sachant que je débute, j'ai pris une fonction de pagination en libre utilisation que j'ai trouvé sur le net.
Et du coup j'avoue que j'ai du mal à savoir si je peux mettre en place la façon que tu me propose.

Je pense que c'est au niveau de la page active que je dois travailler, mais j'ai essayer avec plusieurs variable que j'utilise dans ma fonction, et le résultat reste le même.

N'est-il pas possible de simplement mettre un onClick=javascript:history.back() sur le submit?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 nov. 2011, 19:08

si mais tu auras ce que tu ne pas vouloir : la demande de "postage" du formulaire.


@+
Il en faut peu pour être heureux ......

sBENETT
Invité n'ayant pas de compte PHPfrance

28 nov. 2011, 11:16

Je comprends, oui c'est vrai je désire que se soit vraiment fluide et simplifié.

Mais la solution que vous me proposez ne fonctionne pas, je ne sais pas exactement comment l'appliqué. Je vous cite ici, ma focntion de pagination et mon formulaire de page détails afin que vous puissiez peut-etre m'aider plus facilement.

Ma fonction de pagination:
function barre_navigation ($nb_total,
		$nb_affichage_par_page,
		$debut,
		$nb_liens_dans_la_barre) {

	$barre = '';

	// on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT
	if ($_SERVER['QUERY_STRING'] == "") {
		$query = $_SERVER['PHP_SELF'].'?debut=';
	}
	else {
		$tableau = explode ("debut=", $_SERVER['QUERY_STRING']);
		$nb_element = count ($tableau);
		if ($nb_element == 1) {
			$query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';
		}
		else {
			if ($tableau[0] == "") {
				$query = $_SERVER['PHP_SELF'].'?debut=';
			}
			else {
				$query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';
			}
		}
	}

	// on calcul le numéro de la page active
	$page_active = floor(($debut/$nb_affichage_par_page)+1);
	// on calcul le nombre de pages total que va prendre notre affichage
	$nb_pages_total = ceil($nb_total/$nb_affichage_par_page);

	// on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin)
	// exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11
	if ($nb_liens_dans_la_barre%2==0) {
		$cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;
		$cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
	}
	else {
		$cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));
		$cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));
	}

	if ($cpt_deb1 <= 1) {
		$cpt_deb = 1;
		$cpt_fin = $nb_liens_dans_la_barre;
	}
	elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) {
		$cpt_deb = $cpt_deb1;
		$cpt_fin = $cpt_fin1;
	}
	else {
		$cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;
		$cpt_fin = $nb_pages_total;
	}

	if ($nb_pages_total <= $nb_liens_dans_la_barre) {
		$cpt_deb=1;
		$cpt_fin=$nb_pages_total;
	}

	// si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page
	if ($cpt_deb != 1) {
		$cible = $query.(0);
		$lien = '<A HREF="'.$cible.'"><<</A>&nbsp;&nbsp;';
	}
	else {
		$lien='';
	}
	$barre .= $lien;

	// on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active
	for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) {
		if ($cpt == $page_active) {
			if ($cpt == $nb_pages_total) {
				$barre .= $cpt;
			}
			else {
				$barre .= $cpt.'&nbsp;-&nbsp;';
			}
		}
		else {
			if ($cpt == $cpt_fin) {
				$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
				$barre .= "'>".$cpt."</A>";
			}
			else {

				$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
				$barre .= "'>".$cpt."</A>&nbsp;-&nbsp;";
			}
		}
	}

	$fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
	if (($nb_total % $nb_affichage_par_page) == 0) {
		$fin = $fin - $nb_affichage_par_page;
	}

		// si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation
	if ($cpt_fin != $nb_pages_total) {
		$cible = $query.$fin;
		$lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">>></A>';
	}
	else {
		$lien='';
	}
	$barre .= $lien;

	return $barre;
}
?>

Ainsi que mon formulaire de page detail.php:

echo"<form name=\"details\" id=\"details\" action=\"resultat.php\" method=\"post\">";
            echo"<tr><td>";
            if($residence[22]=="1"){
	         echo "<img src=\"photos/gite.gif\" height=\"30\" width=\"30\" />";
                 echo "</br></br>";
            }
                     
            echo"<li><span> R&eacutesidence: </span>".$residence[0]."</li></br>";
            echo"<li><span> Adresse: </span>".$residence[1]."</li></br>";
            echo"<li><span> Code Postal: </span>".$residence[2]."</li></br>";
            echo"<li><span> Ville: </span>".$residence[3]."</li></br>";
            echo"<li><span> Capacit&eacute: </span>".$residence[4]." personnes</li></br>";
            
            if($residence[23]=="4"){
                    if($residence[22]=="0"){
	                echo "<li><span>Classement: </span>UDOTSI</li></br>"; 
                    }
                    else{
                        if($residence[21]=="1"){
                             echo "<li><span>Classement: </span>".$residence[21]." &eacute;pi</li></br>";	
                        }
                        else{
	                     echo "<li><span>Classement: </span>".$residence[21]." &eacute;pis</li></br>";
                        }
                    }

           }
           else{
                  if($residence[22]=="0"){
                         if($residence[21]=="5"){ 
                               echo "<li><span>Classement: </span>UDOTSI</li></br>";                                                     
                         }
                         else{
	                       if($residence[21]=="1"){
                                     echo "<li><span>Classement: </span>".$residence[21]." &eacute;toile</li></br>";	
                               }
	                       else{
	                             echo "<li><span>Classement: </span>".$residence[21]." &eacute;toiles</li></br>"; 	
                               }
                         }
                   }
                   else{
                         if($residence[21]=="1"){
                               echo "<li><span>Classement: </span>".$residence[21]." &eacute;pi</li></br>";
	                 }
                         else{
	                       echo "<li><span>Classement: </span>".$residence[21]." &eacute;pis</li></br>"; 
                         }
                   }
           }
           
            echo"<li><span> Prix: </span>".$residence[5]." &#8364 par journ&eacutee</li></br>";
            echo"<li><span> Nombre(s) de logement(s) disponible &agrave cette adresse: </span>".$residence[20]."</li></td></tr></br>";
            echo"<tr><td>";
            if($residence[6]!=" "){
                echo"<center><img src=".$residence[6]." width=\"500\" style=\"border-style:groove; color:black;\"/></center>";
                echo"</td></tr></br>";
                echo"<tr><td><center><a href=".$residence[6]." rel=\"gb_imageset[album]\" ><img src=".$residence[6]." height=\"67\" width=\"89\" style=\"border-style:groove; color:black;\"/></a>" ;
            }
            
            if($residence[6]==" "){
	        echo"<center><img src=\"photos/pasdephoto.jpg\" width=\"500\" style=\"border-style:groove; color:black;\"/></center>";
            }
            if($residence[7]!=" "){
               echo"<a href=".$residence[7]." rel=\"gb_imageset[album]\"><img src=".$residence[7]." height=\"67\" width=\"89\" style=\"border-style:groove; color:black;\"/></a>";	
            }
            if($residence[8]!=" "){    
                echo"<a href=".$residence[8]." rel=\"gb_imageset[album]\"><img src=".$residence[8]." height=\"67\" width=\"89\" style=\"border-style:groove; color:black;\"/></a>";	 
            }
            if($residence[9]!=" "){
                echo"<a href=".$residence[9]." rel=\"gb_imageset[album]\"><img src=".$residence[9]." height=\"67\" width=\"89\" style=\"border-style:groove; color:black;\"/></a>";	
            }
            if($residence[10]!=" "){
                echo"<a href=".$residence[10]." rel=\"gb_imageset[album]\"><img src=".$residence[10]." height=\"67\" width=\"89\" style=\"border-style:groove; color:black;\"/></a>";
                echo"</center>";	
            }
            if($residence[6]!=" "){
                echo "<center><span>Cliquer sur les vignettes pour les agrandir</span></td></tr></center>";
            }
            echo"<tr><td><li><span> Description: </span>".$residence[11]."</li></br>";
            echo'<li><span>Site internet: </span><a href="'.$residence[12].'" target=\"_blank\">'.$residence[12].'</a></li></td></tr></br>';
            echo"<tr><td><center><span class=\"contact\">Contact</span></center></br></br>";
            echo"<li><span> Nom: </span>".$residence[13]."</li></br>";
            echo"<li><span> Adresse: </span>".$residence[14]."</li></br>";
            echo"<li><span> Code Postal: </span>".$residence[15]."</li></br>";
            echo"<li><span> Ville: </span>".$residence[16]."</li></br>";
            echo"<li><span> Tel: </span>".$residence[17]."</li></br>";
            echo"<li><span> Fax: </span>".$residence[18]."</li></br>";
            echo'<li><span> Mail: </span><a href="mailto:'.$residence[19].'">'.$residence[19].'</a></li></td><tr>'; 
            echo"</tbody></table>";
            echo"<input type=\"submit\" value=\"Retour\" name=\"recommencer\">";
            echo"</form>";
Merci pour votre aide.

sBENETT

sBENETT
Invité n'ayant pas de compte PHPfrance

29 nov. 2011, 11:10

Petit up, personne ne saurait m'aiguiller dans mon apprentissage?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

29 nov. 2011, 11:53

a tu compris comment fonctionne la fonction de pagination ?

qu'est ce que tu n'a pas compris dans ce que je t'ai ajouté ?

a tu ajouté le champs input hidden indiquant la page active ?

@+
Il en faut peu pour être heureux ......

sBENETT
Invité n'ayant pas de compte PHPfrance

29 nov. 2011, 12:43

Dans l'ensemble oui j'ai compris comment elle fonctionne.
J'avais changé mon form en methode get, et j'avais aussi ajouter le champ de type hidden.

Ca ne suffisait pas puisque le resultat ne changait en rien.


Mais dans ta solution, voila ce que je comprends pas:
tu va donc avoir un $_GET['page'] contenant la valeru que tu aura mis dans le champ caché (type hidden).

si ton système de pagination est basé sur $_GET['page'] c'est gagné :)
Merci pour tes réponses.