Systeme de page en PHP
tybmhi
Messages postés
200
Date d'inscription
Statut
Membre
Dernière intervention
-
aelythe Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
aelythe Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai installé un système de page automatique en PHP (pris sur le site du zero ) qui fonctionne très bien sur une page où apparait des messages posté par les internautes.
Sur cette page j'ai placé un système de vote par lien hypertexte(+PHP) dont voici le lien :
<a href="affichage.php?page =<?php echo "$page" ?>&votebien=r&categorie=<?php echo "$categorie" ?>&souscategorie=<?php echo "$souscategorie" ?> &id=<?php echo $donnees['id']; ?>" >
Ce lien rempli très bien son rôle sauf qu'il me ramène toujours à la page 1. Alors que j'aimerais que si j'ai voté pour un message qui se trouve sur la page 3 par exemple je reste donc sur la page 3. Dans la barre d'adresse on voit pourtant bien page=3 mais on atterrit toujours sur la page 1.
Je pense que je ne choisis peut être pas la bonne variable à inclure dans le lien. Voici mon système de vote.
<?php
// --------------- Etape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------
// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 4; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query("SELECT COUNT(*) AS nb_messages FROM tousdescons WHERE categorie='$categorie' AND souscategorie='$souscategorie' ");
$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];
// 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
?>
<p class="numeropage">
<?php
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a style="color:white;" href="affichage.php?categorie='.$categorie.'&page=' . $i . '&souscategorie='.$souscategorie.'">' . $i . '</a> ';
}
?>
</p>
<?php
// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------
if (isset($_GET['page']))
{
$page = $_GET['page'];
}
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)
}
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
?>
Merci d'avance !
J'ai installé un système de page automatique en PHP (pris sur le site du zero ) qui fonctionne très bien sur une page où apparait des messages posté par les internautes.
Sur cette page j'ai placé un système de vote par lien hypertexte(+PHP) dont voici le lien :
<a href="affichage.php?page =<?php echo "$page" ?>&votebien=r&categorie=<?php echo "$categorie" ?>&souscategorie=<?php echo "$souscategorie" ?> &id=<?php echo $donnees['id']; ?>" >
Ce lien rempli très bien son rôle sauf qu'il me ramène toujours à la page 1. Alors que j'aimerais que si j'ai voté pour un message qui se trouve sur la page 3 par exemple je reste donc sur la page 3. Dans la barre d'adresse on voit pourtant bien page=3 mais on atterrit toujours sur la page 1.
Je pense que je ne choisis peut être pas la bonne variable à inclure dans le lien. Voici mon système de vote.
<?php
// --------------- Etape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------
// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 4; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query("SELECT COUNT(*) AS nb_messages FROM tousdescons WHERE categorie='$categorie' AND souscategorie='$souscategorie' ");
$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];
// 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
?>
<p class="numeropage">
<?php
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a style="color:white;" href="affichage.php?categorie='.$categorie.'&page=' . $i . '&souscategorie='.$souscategorie.'">' . $i . '</a> ';
}
?>
</p>
<?php
// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------
if (isset($_GET['page']))
{
$page = $_GET['page'];
}
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)
}
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
?>
Merci d'avance !
A voir également:
- Systeme de page en PHP
- Restauration systeme windows 10 - Guide
- Impossible de supprimer une page word - Guide
- Mettre google en page d'accueil - Guide
- Traduire une page en français - Guide
- Numéro de page word - Guide
2 réponses
Salut!
a mon sens le mieux serait pour toi de memoriser dans la session la page dans laquelle tu te trouves :
// 1. assure-toi que la session soit lancee :
session_start();
// 2. memorise en session la page courante si la page est indiquee
if(isset($_REQUEST['page']) && intval($_REQUEST['page']))
{
$_SESSION['page_courante'] = $_REQUEST['page'];
}
else
{
// valeur par defaut
$_SESSION['page_courante'] = 1;
}
Ainsi tu n'es plus oblige a passer le parametre de la page si tu ne changes pas de page, et le code me semble plus elegant et plus simple a maintenir (pense au cas ou tu pourrais avoir 10 liens tous legerement differents dans la meme page).
Paul
a mon sens le mieux serait pour toi de memoriser dans la session la page dans laquelle tu te trouves :
// 1. assure-toi que la session soit lancee :
session_start();
// 2. memorise en session la page courante si la page est indiquee
if(isset($_REQUEST['page']) && intval($_REQUEST['page']))
{
$_SESSION['page_courante'] = $_REQUEST['page'];
}
else
{
// valeur par defaut
$_SESSION['page_courante'] = 1;
}
Ainsi tu n'es plus oblige a passer le parametre de la page si tu ne changes pas de page, et le code me semble plus elegant et plus simple a maintenir (pense au cas ou tu pourrais avoir 10 liens tous legerement differents dans la meme page).
Paul