Menu PHP avec fiche et sous menu

Mathieyx -  
 Math -
Bonjour,

J'ai donc crée un site avec un menu php et sous menu mais j'ai un petit problème. Je vais commencé par montré la structure du site en gros :

Menu : Voiture
sous menu : Course , Promenade , collection etc ...

J'ai donc rajouté un systeme de fiche pour que chaque personne puise posté une fiche comme il veut.La tout se passe bien , les fiches sont bien rajouté dans la basse donné et dans les menu et sous section.

Le problème vient de la page PHP , le menu plus exactement : voici le code :

Menu :

<div class="joliblabla" style="padding-left:5px; font-size:12px"><a href="gocateg.php?x=voiture"><font color=orange>+ voiture</font></a></div>
<div class="joliblabla" style="padding-left:5px; font-size:12px"><a href="gocateg.php?x=camion"><font color=orange>+ Camion</font></a></div>

Jusqu'a la tout est ok , quand on clique dessus on arrive dans le menu gocateg avec x = le menu de notre choix.

Dans le menu gocateg y'a un maximun de 20 fiches par pages , au bout de la 21 eme fiches un numero de page se cree en bas de la page . voici le code

<font color=white>Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<font color=white><a href="gocateg.php?page=' . $i . '&aaa=' . $aaa . '&bbb=' . $_GET["x"] . '&R=' . $class . '"><font color=white>' . $i . '</a> ';
}
?>

Vous l'aurez compris le problème c'est que au 1 er clic tout marche bien sur la page 2,3 ou 4 etc, j'arrive au bon endroit et bonne menu grace au $_GET["x"]

Mais le problème .. C'est que lorsque je suis sur la page 2 ou autre et que je clique sur un autre nombre , la valeur X n'est pas converser et ca donne ca dans l'adresse web :

gocateg.php?page=3&aaa=&bbb=&R= au lieu de

gocateg.php?page=3&aaa=&bbb=voiture&R=

QUe dois je faire pour que la valeur X soit converser sur chaque page et d'une page a l'autre sans pour autant melanger les rubrique sachant qu'elles passent toute par gocateg

Merci d'avance =)

15 réponses

Résumé de la discussion

Un site PHP avec un menu et des fiches en base de données présente un problème de persistance du paramètre x lors de la pagination de gocateg.php. Les liens de pagination transmettent aaa et bbb mais pas x dans l'URL des pages suivantes, ce qui aboutit à des URL du type gocateg.php?page=3&aaa=&bbb=&R=. La solution évoquée consiste à inclure systématiquement la valeur de x dans chaque lien de page, par exemple en utilisant $_GET['x'] ou en reconstruisant les paramètres GET. D'autres échanges abordent les variables aaa et bbb et proposent de vérifier leur affectation ou d'adopter une approche cohérente des paramètres pour éviter leur perte entre les pages.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Utilisateur anonyme
     
    Non pardon.
    Tu crée une variable qui prend la valeur de ton $_GET['x'] dans chaque page
    0
  2. Mathieyx
     
    Mais il n'y a qu'une page pour toute les sections : gocateg.php, le reste se fait sur la base de donné.

    Je vois de ce fait pas trop comment faire en fait
    0
  3. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  4. Utilisateur anonyme
     
    Crée cet variable au début de ta page :
    $categ = $_GET['x']
    

    Et tu corriges ton lien
    <a href="gocateg.php?page=' . $i . '&amp;aaa=' . $aaa . '&amp;bbb=' .$categ. '&amp;R=' . $class . '"><font color=white>' . $i . '</a>
    0
  5. Mathieyx
     
    je l'insere comment la variable sur le haut de la page ? J'ai essayé mais y'a rien a faire.
    0
    1. Utilisateur anonyme
       
      Envois le code de ta page si ca ne te dérange pas
      0
    2. Mathieyx
       
      Voilà pour le code de la page complet gocateg.php
      0
  6. Mathieyx
     
    <?php
    session_start();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <link rel="stylesheet" type="text/css" href="style.css" />
    <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type" />

    </head>

    <?php $loginx = $_SESSION['login']?>
    <body style="background-color:rgb(171,171,171);margin-top:0px;">
    <!-- DEBUT HAUT -->
    <?php include("top.php");?>
    <!-- FIN HAUT -->

    <!-- DEBUT MILIEU-->
    <center>
    <table width=980><tr>
    <!-- DEBUT TABLEAU GAUCHE-->
    <td width=25% valign=top>
    <!-- DEBUT LOGIN-->
    <?php include("check.php");?>
    <!-- FIN LOGIN-->

    <!-- DEBUT ANNONCE-->
    <?php include("annonce.php");?>
    <!-- FIN ANNONCE-->
    </td>
    <!-- FIN TABLEAU GAUCHE -->

    <!-- DEBUT TABLEAU MID-->
    <td width=50% valign=top>
    <!-- FIN GOCATEG -->
    <?php
    if (isset($_GET['x']))
    {
    $bbb = "genre = '" . $_GET['x'] . "'";
    }
    if (isset($_GET['y']))
    {
    $aaa = "categ ='Special'";
    }
    if (isset($_GET['bbb']))
    {
    $bbb = "genre = '" . $_GET["bbb"] . "'";
    }
    elseif (isset($_GET['aaa']))
    {
    $aaa = "categ ='Special'";
    }
    ?>

    <center><div class="menumid"><center>Section <?php echo $categ?></center></div></center><br>
    <center><table style="background-color:rgb(141,141,141);"><tr><td><br>
    <?php
    if (isset($_GET['page']))
    {
    $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
    }
    else // La variable n'existe pas, c'est la première fois qu'on charge la page
    {
    $page = 1; // On se met sur la page 1 (par défaut)
    }
    $nb_col = 4;
    $i = 0;
    $nombreDeMessagesParPage = 20;
    $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
    echo '<table cellpadding="1" cellspacing="0" border="0"><tr>';
    $req = mysql_query("SELECT * FROM categ WHERE $aaa $bbb AND accord ='<font color=lightgreen>Activé</font>' OR $aaa $bbb AND accord ='<font

    color=lightgreen>Activé</font>' ORDER BY id DESC LIMIT $premierMessageAafficher, $nombreDeMessagesParPage ");
    while($dat = mysql_fetch_assoc($req)){
    if($i%$nb_col == 0 AND $i != 0)
    echo '</tr><tr>';
    ?><td style="color: white" align="center"><div class="joliblabla" style="font-size:0.6em"><center><a href="gofiche.php?id=<?php echo $dat

    ['id'] ?>"><img class="pub" width=100 height=140 src="<?php echo $dat['photo'] ?>"/><br/><font color=blue><?php echo stripslashes($dat

    ['nom']); ?></A></td>
    <?php $i++;
    }
    echo '</tr></table>';?>
    <!-- -->
    <Table style="width: 440px;" cellspacing="20" cellpadding="0">
    <TR style="font-family:Verdana; font-size: 11px; font-weight: bold;">
    <TD style="background-color:rgb(132,134,212);">
    <?php
    $retour = mysql_query("SELECT COUNT(*) AS nbr1 FROM categ WHERE $aaa $bbb AND accord ='<font color=lightgreen>Activé</font>' OR $aaa $bbb

    AND accord ='<font color=lightgreen>Activé</font>'");
    $donnees50 = mysql_fetch_array($retour);
    $totalDesMessages = $donnees50['nbr1'];
    // On calcule le nombre de pages à créer
    $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
    // Puis on fait une boucle pour écrire les liens vers chacune des pages
    echo '<center><font color=white>Page : ';
    for ($i = 1 ; $i <= $nombreDePages ; $i++)
    {
    echo '<font color=white><a href="gocateg.php?page=' . $i . '&aaa=' . $aaa . '&bbb=' . $_GET["x"] . '&R=' . $class .

    '"><font color=white>' . $i . '</a> ';
    }
    ?></TD>
    </TR>
    </Table></td></tr></table>
    <!-- FIN GOCATEG -->
    </td>
    <!-- FIN TABLEAU MID-->
    <!-- DEBUT TABLEAU DROIT-->
    <td width=25% valign=top>
    <!-- DEBUT MENU LISTE-->
    <?php include("menu.php");?></center>
    <!-- FIN MENU LISTE-->
    </td>
    <!-- FIN TABLEAU DROIT-->
    </tr></table></center><br>
    <!-- FIN MILIEU-->

    <!-- DEBUT BAS-->
    <!-- FIN BAS-->
    0
    1. Utilisateur anonyme
       
      Je regarde a un peu plus tard... désolé
      0
    2. Mathieyx
       
      si quelqu'un a une autre idée pendans ce temps ... merci
      0
    3. Utilisateur anonyme
       
      Explique moi ce que sont les variables aaa et bbb
      0
    4. Mathieyx
       
      Je ne sais pas , c'etait un ami qui m'avait fait le site y'a plusieurs moi et il avait pas vu le bug des pages et depuis je ne le vois plus
      0
    5. Utilisateur anonyme
       
      C'est un site hebergé sur internet ou il est en local sur ton ordi ??
      0
  7. Utilisateur anonyme
     
    T'es en local ou t'es hebergé ??
    0
  8. Mathieyx
     
    http://www.directdl.eu/
    0
    1. Utilisateur anonyme
       
      Ah d'accord...
      0
    2. Mathieyx
       
      N'est ce pas ? =)
      0
    3. Mathieyx
       
      Y'a pas moyen de le modifié alors au final ?
      0
    4. Utilisateur anonyme
       
      Si si faut que je travaille dessus...
      0
    5. Mathieyx
       
      Ca a l'air compliqué , quoi qu'il arrive merci beaucoup pour ton aide =)
      0
  9. Mathieyx
     
    klk191 tjr la ?
    0
    1. fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   74
       
      salut !

      Bon j'ai 20 minutes !

      Bon déja un tableau dans un tableau ca commence pas tres bien :)
      0
  10. fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   74
     
    Et voila, Désolé pour les noms de variable j'étais pas tres inspiré ....
    <?php   
    session start();  
    
    if (!isset ($_SESSION['bob'])){  
     $bob = $_GET['x'];  
     $_SESSION['bob'] = $bob;  
    }  
    
    $raoul = $_SESSION['bob'];  
    
    echo '<font color=white>Page : ';   
    for ($i = 1 ; $i <= $nombreDePages ; $i++) {   
     echo '<font color=white><a href="gocateg.php?page='.$i.'&aaa='.$aaa.'&bbb='.$raoul.'&R='.$class.'"><font color=white>'.$i.'</a> ';   
    }   
    ?> 


    Pour la petite explication, on stocke la variable de catégorie (voiture cmion etc...) qui ressort en 1er lieu en $_GET['x']; et on la stock dans une variable de session.

    Après le code est ptet pas encore optimisé, essaye le et je ferai un fix ou deux derriere.

    Ps: oui c 'est codé a la bourrin.
    0
    1. fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   74
       
      Bon premier, fix..... SI l'user change de catégorie il faut bien réinitialiser ta variable de session.....
      <?php 
      session start();
      
      if (isset($_GET['x']) && $_GET['x'] != $_SESSION['bob']){
      	$bob = $_GET['x'];
      	$_SESSION['bob'] = $bob;
      }
      if (!isset ($_SESSION['bob'])){
      	$bob = $_GET['x'];
      	$_SESSION['bob'] = $bob;
      }
      
      $raoul = $_SESSION['bob'];
      
      echo '<font color=white>Page : '; 
      for ($i = 1 ; $i <= $nombreDePages ; $i++) { 
      	echo '<font color=white><a href="gocateg.php?page='.$i.'&aaa='.$aaa.'&bbb='.$raoul.'&R='.$class.'"><font color=white>'.$i.'</a> '; 
      } 
      ?> 
      0
    2. Mathieyx
       
      Merci c'est gentil =), je l'essaye tout de suite et te previent du resultat !
      0
    3. Mathieyx
       
      j'ai remplacé donc l'ancien par le nouveau voilà le resultat : Parse error: syntax error, unexpected T_STRING in /vhosts/directdl.eu/httpdocs/gocateg.php on line 126
      0
    4. Mathieyx
       
      En fait je pense que je place mal le code ou au mauvais endroit.

      J'imagine qu'il se met dans cette partie la : <?php
      $retour = mysql_query("SELECT COUNT(*) AS nbr1 FROM categ WHERE $aaa $bbb AND accord ='<font color=lightgreen>Activé</font>' OR $aaa $bbb AND accord ='<font color=lightgreen>Activé</font>'");
      $donnees50 = mysql_fetch_array($retour);
      $totalDesMessages = $donnees50['nbr1'];
      // On calcule le nombre de pages à créer
      $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
      // Puis on fait une boucle pour écrire les liens vers chacune des pages
      echo '<center><font color=white>Page : ';
      for ($i = 1 ; $i <= $nombreDePages ; $i++)
      {
      echo '<font color=white><a href="gocateg.php?page=' . $i . '&aaa=' . $aaa . '&bbb=' . $_GET["x"] . '&R=' . $class . '"><font color=white>' . $i . '</a> ';
      }
      ?>

      Mais ou exactement ? je retire quoi ? =)

      Merci d'avance
      0
  11. fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   74
     
    Salut, faute de frappe sur le session start, il y a un "_". Tu dois mettre ça tout en haut de ta page :
    session_start(); 
    
    if (isset($_GET['x']) && $_GET['x'] != $_SESSION['bob']){ 
     $bob = $_GET['x']; 
     $_SESSION['bob'] = $bob; 
    } 
    if (!isset ($_SESSION['bob'])){ 
     $bob = $_GET['x']; 
     $_SESSION['bob'] = $bob; 
    } 
    
    $raoul = $_SESSION['bob'];


    Apres tu utilises $raoul. C'est ta variable qui contient la valeur de ton get "x"
    0
    1. Mathieyx
       
      coucou , je me permet de me repeté mais merci encore pour ton aide.

      J'ai entré le code sur la page donc et rien ne change. il est sur la page actuellement du site , tu peux essayé voir telecharge la page si ca peut t'aidé.Toujours est il qui y'a toujours les memes bugs sur les pages :/

      Une idée d'ou ca peut venir ?

      encore merci pour ton aide
      0
    2. math
       
      ptit up
      0
    3. fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   74
       
      Quelle est l'adresse du site ? :)
      0
    4. Math
       
      http://www.directdl.eu , désolé pour le retard
      0
    5. Math
       
      Up
      0