spacemarmotte Posted February 9, 2010 Report Share Posted February 9, 2010 (edited) Bonsoir, je ne sais pas si mon sujet est très clair ;-) Pour faire simple, je suis confronté à un problème de transfert de variable d'une page sur l'autre. Par une liste déroulante, j'envoi la variable $var1 à la page result.php sur cette page, je fais un "SELECT * FROM base WHERE marque='$var1' ... ORDER BY modele"; j'ai donc bien ce que je voulais au niveau affichage. Mais quand j'ai + de 8 résultats, j'affiche sur plusieurs pages avec ces quelques lignes: [i]if ($page>0) { $precedent=$page-1; echo "<a href='result.php?page=$precedent'> << </a>"; } $a=0; $j=1; if($nb_total>$limit) { while($a<($nb_total/$limit)) { if($a!=$page){echo "<a href='result.php?page=$a'> $j </a> ";} else { echo "<b>$j</b>";} $a++;$j++; } } if($debut+$limit<$nb_total) { $suivant=$page+1; echo "<a href='result.php?page=$suivant'> >> </a>"; } [/i] et là, rien à faire... page vide ! ces lignes fonctionnent lorsque je fais un SELECT sans variable ... mais dés que j'en ai une ... berdaff' (expression chti voulant exprimer une chute sur le sol :P ) Le comptage des résultats et le nombre de pages varient mais si je clique sur "page suivante" ou sur un N° je n'ai pas la suite des résultats ! Est-ce que l'un d'entre vous aurait été confronté à ce genre de pb ? et, si oui, je veux bien un coup de main ! Eric Edited February 9, 2010 by spacemarmotte Quote Link to comment Share on other sites Partagez cette page :
philippe Posted February 9, 2010 Report Share Posted February 9, 2010 salut, ajoutes un cookie, pas certain, ca marche mais ca dépendra de la config du visiteur... ou pour assurer le coups sur plus d'une page, ajouttes une variable de session ;) Quote Link to comment Share on other sites Partagez cette page :
HimSelf Posted February 9, 2010 Report Share Posted February 9, 2010 yep, tu as le choix. si tu "repasses" par un form pour passer à la page suivante, alors "input type="hidden"". sinon, tu passes par des sessions. if(!isset($_GET['page']) && isset($_POST['search'])) { $_SESSION['motclerecherche'] == $_POST['motclef']; } par exemple hein, (dans le cadre d'une recherche) à adapter selon tes besoins. Quote Link to comment Share on other sites Partagez cette page :
spacemarmotte Posted February 10, 2010 Author Report Share Posted February 10, 2010 (edited) Houla... les variables de session ! voila bien une bestiole que je n'ai jamais cotoyé ! je viens de parcourir quelques tuto... j'ai du mal ! Si je comprends bien le principe, je dois attribuer un nom de variable de session à la variable que je veux passer d'une page à l'autre. Donc, j'ai 2 listes déroulantes totalement indépendantes qui me génèrent soit la variable $marquer pour l'une soit $categorie pour l'autre et ouvre la page result.php lorsqu'on clique sur submit sur ma page result.php : en haut de page avant le html: session_start(); puis, dans le body: $_SESSION['listeder1']=$Marquer; $_SESSION['listeder2']=$categorie; listeder1 et listeder2 prennent donc respectivement les valeurs de $Marquer et $categorie .. mais je n'ai pas davantage de résultat ! même si je change les termes dans le SELECT (remplacer $Marquer par $listeder1 par exemple ou par {$_session['listeder1']} !) je vous mets mon code, si vous y voyez la raison de mon erreur ! <? $_SESSION['listeder1']=$Marquer; $_SESSION['listeder2']=$categorie; ?> <? include('entete2.php') ?> <div id="cont3"> <div id="coeur"> <?php $requete = "SELECT * FROM base WHERE marque='$Marquer' OR section='$categorie' OR section2='$categorie' AND visible='1' ORDER BY modele"; $requete2 = mysql_query($requete); $limit=8; if($debut==""){$debut=0;} $debut=$page*$limit; $nb_total = mysql_num_rows($requete2); $resultats = mysql_query("$requete LIMIT $debut,$limit"); while ($data = mysql_fetch_array($resultats)) { $Marque[] = $data["marque"]; $Modele[] = $data["modele"]; $Version[] = $data["finition"]; $MEC1[] = $data["mois"]; $MEC2[] = $data["annee"]; $klm[] = $data["km"]; $prix[] = $data["prix"]." €"; $IDVO[] = $data["reference"]; } for ($i=0; $i<$limit ; $i++) if ($IDVO[$i] != '') { echo '<div id="vign">'.'<div id="ombre">'."<a href='detail_occasion.php?id=$IDVO[$i]'>"."<img src='http://www.lautomobile.fr/photos/$IDVO[$i]1.jpeg'.'alt=$Marque[$i]' border='1' width='195'>".'</div>'.'<div id="txt">'.'<b>'.$Marque[$i]." ".$Modele[$i].'</b>'." ".$Version[$i].'<br />'.$MEC1[$i]." / ".$MEC2[$i].'</div>'.'</a>'.'<div id="prix">'.$prix[$i].'</div>'.'</div>'; } ?> <div id="page"> <? if ($page>0) { $precedent=$page-1; echo "<a href='result.php?page=$precedent'> << </a>"; } $a=0; $j=1; if($nb_total>$limit) { while($a<($nb_total/$limit)) { if($a!=$page){echo "<a href='result.php?page=$a'> $j </a> ";} else { echo "<b>$j</b>";} $a++;$j++; } } if($debut+$limit<$nb_total) { $suivant=$page+1; echo "<a href='result.php?page=$suivant'> >> </a>"; } ?> désolé de vous casser les pieds ;-) amicalement Eric [hide]voici le site sur lequel ça se passe (en faisant une recherche par les listes déroulants "recherche par marque" ou "recherche par type": www.lautomobile.info[/hide] Edited February 10, 2010 by spacemarmotte Quote Link to comment Share on other sites Partagez cette page :
HimSelf Posted February 10, 2010 Report Share Posted February 10, 2010 hello, relis bien ma condition =) "si pas de 'page' en cours (page 1)", & qu'on à bien le "formulaire" envoyé" alors on met en session. car sinon, celui qui arrive en page 3, il est niqué d'avance. Quote Link to comment Share on other sites Partagez cette page :
spacemarmotte Posted February 10, 2010 Author Report Share Posted February 10, 2010 (edited) OK, et donc je dois placer cela juste avant mes lignes de code affichant << 1 2 3 ... >> pour mettre la variable en session si nécessaire. mais j'ai du mal à comprendre la syntaxe. if(!isset($_GET['page']) && isset($_POST['$Marquer'])) { $_SESSION['$listeder1'] == $_POST['$Marquer']; } if(!isset($_GET['page']) si pas de page en cours... && isset($_POST['$Marquer'])) ...et formulaire envoyé (ou $Marquer est ma variable envoyé par la page précédente.) $_SESSION['$listeder1'] La variable de session... == $_POST['$Marquer'] ...prend la valeur de la variable envoyée je ne pense pas avoir bien compris. ça ne me provoque pas de message d'erreur mais ne règle pas mon pb. ! J'ai affiché la marque à côté des << 1 2 3 >> pour voir si elle suivait. Elle s'affiche bien en 1ère page (suite au submit) mais disparait dés que je clique sur page suivante !! grrrr !! ça m'énerve quand je ne comprends pas !!! Edited February 10, 2010 by spacemarmotte Quote Link to comment Share on other sites Partagez cette page :
HimSelf Posted February 10, 2010 Report Share Posted February 10, 2010 en gros, pour un formulaire de recherche avec postérieures pages de résultats : notre recherche = $search_value si on vient du formulaire if(isset($_POST['']) ET ( && ) qu'on n'affiche PAS de page !isset($_GET['page'])) { alors, $search_value = $_POST['recherche']; & donc on le stock en session : $_SESSION['search_value'] = $search_value; } ( sinon on ne vient pas de "form" & on à logiquement "page" ) elseif(!isset($_POST['']) && isset($_GET['page'])) { dans ce cas la, $search_value = le résultat stocké en session auparavent donc $search_value = $_SESSION['search_value']; } MAIS cela n'est pas très SEO friendly, ni user friendly. CAR celui qui arriverait par google sur &page=5 n'aurait rien en "search_value" mais il n'y a aucune raison d'indexer les résultats de recherche. cela sous entends que l'utilisateur passe par le point de départ ( le formulaire ) donc on peut mettre un "else" standard, avec header redirect vers le formulaire de recherche. Quote Link to comment Share on other sites Partagez cette page :
spacemarmotte Posted February 10, 2010 Author Report Share Posted February 10, 2010 ... cela sous entends que l'utilisateur passe par le point de départ ( le formulaire ) c'est le cas... pour 95% des visiteurs de notre site actuel. je n'ai pas d'intérêt à ce que GG référence une liste de véhicule mais je vais, par contre essayer d'optimiser le référencement des fiches véhicules (detail-occasion.php...pas encore fait). Bon, pour en revenir à mes variables de sessions... je vais essayer de creuser ça avec tes renseignements mais pour un autodidacte comme moi, c'est pô gagné ! Je te remercie en tout cas... Eric Quote Link to comment Share on other sites Partagez cette page :
spacemarmotte Posted February 10, 2010 Author Report Share Posted February 10, 2010 Ayé !! je mets le résultat si ça peut servir à qqun... if (isset($_POST['Marquer'])) // Marquer étant la variable provenant du submit { $listeder1 = $_POST['Marquer']; //on recupere les données du formulaire $_SESSION['listeder1'] = $listeder1; } et je fais mon SELECT sur la variable $listeder1 Pas sans mal ! Encore merci Him.... PAr jalousie, j'en viens à detester ceux qui codent comme ils respirent :cool: Quote Link to comment Share on other sites Partagez cette page :
HimSelf Posted February 10, 2010 Report Share Posted February 10, 2010 je ne code pas comme je respire, loins de la. mais tes questions restent dans le basic. puis la programation c'est pas bien compliquer, & crois moi je harcèle encore régulièrement l'équipe de developpez.net ! puis j'ai eu le même soucis que toi y'à 2/3 mois & j'ai du me casser la tête, donc autant faire tourner. Quote Link to comment Share on other sites Partagez cette page :
spacemarmotte Posted February 12, 2010 Author Report Share Posted February 12, 2010 (edited) Je suis un garçon basic ;-) Par contre, quant tu avais rencontré le problème... comment tu gère le retour vers la page de résultats (pour éviter le message d'erreur "La page Web a expiré Cause la plus probable : La copie locale de cette page Web est obsolète ; le site Web nécessite que vous la téléchargiez à nouveau.... ) ou le renvoi d'info par FF ? Eric Edited February 12, 2010 by spacemarmotte Quote Link to comment Share on other sites Partagez cette page :
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.