Jump to content
WebFrance
Sign in to follow this  
spacemarmotte

Perte de variable en page suivante !

Recommended Posts

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 by spacemarmotte

Share this post


Link to post
Share on other sites
Partagez cette page :

>> Nouveau : Découvrez la marketplace d'Achat / Vente de Sites !

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.

Share this post


Link to post
Share on other sites
Partagez cette page :

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 by spacemarmotte

Share this post


Link to post
Share on other sites
Partagez cette page :

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 by spacemarmotte

Share this post


Link to post
Share on other sites
Partagez cette page :

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.

Share this post


Link to post
Share on other sites
Partagez cette page :

...

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

Share this post


Link to post
Share on other sites
Partagez cette page :

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:

Share this post


Link to post
Share on other sites
Partagez cette page :

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.

Share this post


Link to post
Share on other sites
Partagez cette page :

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 by spacemarmotte

Share this post


Link to post
Share on other sites
Partagez cette page :

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

Partagez cette page :



© WebFrance - Contact - Annonceurs - Conditions générales - Legal

×
×
  • Create New...

Achat / Vente de Sites

Découvrez la marketplace WebFrance :

site.jpg