Menu PHP avec fiche et sous menu
Math -
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
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.
-
-
-
Non pardon.
Tu crée une variable qui prend la valeur de ton $_GET['x'] dans chaque page -
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Crée cet variable au début de ta page :
$categ = $_GET['x']
Et tu corriges ton lien<a href="gocateg.php?page=' . $i . '&aaa=' . $aaa . '&bbb=' .$categ. '&R=' . $class . '"><font color=white>' . $i . '</a>
-
-
je l'insere comment la variable sur le haut de la page ? J'ai essayé mais y'a rien a faire.
-
<?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--> -
-
-
-
-
-
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.-
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> '; } ?> -
-
-
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
-
-
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"-
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 -
-
-
-
-