PHP pagination deux GET dans URL
Résolu
sonar974
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
sonar974 Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
sonar974 Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai mis en place une pagination voici mon code :
<!-- CONTENT -->
<div class="content-center">
<div id="products-list">
<header>
<p class="counter"><strong>01-08</strong> sur 40</p> <!-- pas encore mis en place -->
<form method="GET" action=""><select name="trie" onchange="javascript:submit(this)" action="">
<option value="prixAsc">Afficher par :</option>
<option value="dateDesc">plus récent</option>
<option value="dateAsc">moins récent</option>
<option value="prixAsc">prix - </option>
<option value="prixDesc">plus + </option>
</select>
</form>
</header>
<div class="products">
<?php
if(isset($_GET['trie'])) {
switch($_GET['trie']) {
case 'dateAsc':
$tri = 'ORDER BY date ASC';
break;
case 'dateDesc':
$tri = 'ORDER BY date DESC';
break;
case 'prixAsc':
$tri = 'ORDER BY prix ASC';
break;
case 'prixDesc':
$tri = 'ORDER BY prix DESC';
break;
case 'hp':
$tri = 'WHERE marques = "HP"';
break;
case 'tosh':
$tri = 'WHERE marques = "TOSHIBA"';
break;
case 'app':
$tri = 'WHERE marques = "APPLE"';
break;
default:
$tri = 'ORDER BY prix ASC';
break;
}
} else {
$tri = 'ORDER BY prix ASC';
}
try
{
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=catatest', 'root', '', $pdo_options);
//---------------------------------pagination PREPARATION----------------------------
$messagesparpage=12; // Nombre de message qui s'affiche par page
$retour_total= $bdd->query('SELECT COUNT(*) AS total FROM produits');
$donnees_total=$retour_total->fetch(PDO::FETCH_ASSOC);
$total=$donnees_total['total'];
$nombreDePages=ceil($total/$messagesparpage);
if(isset($_GET['page']))
{
$pageActuelle=intval($_GET['page']);
if($pageActuelle>$nombreDePages)
{
$pageActuelle=$nombreDePages;
}
}
else
{
$pageActuelle=1;
}
$premiereEntree=($pageActuelle-1)*$messagesparpage;
//---------------------------------pagination PREPARATION----------------------------
// On récupère le contenu de la table en fonction de la variable tri
$sql = 'SELECT * FROM produits '.$tri.' LIMIT '.$premiereEntree.', '.$messagesparpage.'';
$reponse = $bdd->query($sql);
// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>
<p>
<article>
<figure><a href="produit.php?ID=<?php echo $donnees['ID']; ?>" title="Informations produits"><img src="<?php echo $donnees['photo']; ?>" alt="" /></figure>
<figcaption>
<h2>
<span class="title"><?php echo $donnees['prix']; ?>€</span>
<span class="marque"><?php echo $donnees['marques']; ?> <?php echo $donnees['ref']; ?></span>
<br />
</h2>
<br />
</figcaption>
</article>
</em>
</p>
<?php
}
$reponse->closeCursor(); // Termine le traitement de la requête
}
catch(Exception $e)
{
// En cas d'erreur précédemment, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}
?>
<div class="clearfix"></div>
</div>
<footer>
<!-------------------------------------- AFFICHAGE PAGINATION --------------------------------------------->
<div class="pagination">
<?php
$pageActuelle_plus1 = $pageActuelle+1;
$pageActuelle_moin1 = $pageActuelle-1;
if ($nombreDePages > 1)
{
echo '<p align="center"><a href="#" class="pagination" onclick="this.blur(); return false;"><span>Pages :</span></a>';
for($i=1; $i<=$nombreDePages; $i++)
{
if($i==$pageActuelle)
{
echo ' <a class="pagination" href="#" onclick="this.blur(); return false;"><span> '.$i.' </span></a> ';
}
else
{
echo ' <a href="catapc.php?page='.$i.'" class="pagination" onclick="this.blur();"><span> '.$i.' </span></a> ';
}
}
echo '</p>';
}
?>
</div>
<!-------------------------------------- FIN AFFICHAGE PAGINATION --------------------------------------------->
mon souci c'est que si il y a deja une requete SQL de trie en cour c'est a dire :
http://localhost/testfinal/catapc.php?trie=hp
si l'utilisateur à deja trié par HP
si il clic sur le system de pagination, il change effectivement de page mais la requete de tri s'annule et sa donne :
http://localhost/testfinal/catapc.php?page=2
Hors l'url qui serait exacte serait :
http://localhost/testfinal/catapc.php?page=2&trie=HP
le probleme c'est comment adapter ma pagination pour quel utilise "trie" si présent dans l'url avec bien sure autre chose comme requettes.
j'ai mis en place une pagination voici mon code :
<!-- CONTENT -->
<div class="content-center">
<div id="products-list">
<header>
<p class="counter"><strong>01-08</strong> sur 40</p> <!-- pas encore mis en place -->
<form method="GET" action=""><select name="trie" onchange="javascript:submit(this)" action="">
<option value="prixAsc">Afficher par :</option>
<option value="dateDesc">plus récent</option>
<option value="dateAsc">moins récent</option>
<option value="prixAsc">prix - </option>
<option value="prixDesc">plus + </option>
</select>
</form>
</header>
<div class="products">
<?php
if(isset($_GET['trie'])) {
switch($_GET['trie']) {
case 'dateAsc':
$tri = 'ORDER BY date ASC';
break;
case 'dateDesc':
$tri = 'ORDER BY date DESC';
break;
case 'prixAsc':
$tri = 'ORDER BY prix ASC';
break;
case 'prixDesc':
$tri = 'ORDER BY prix DESC';
break;
case 'hp':
$tri = 'WHERE marques = "HP"';
break;
case 'tosh':
$tri = 'WHERE marques = "TOSHIBA"';
break;
case 'app':
$tri = 'WHERE marques = "APPLE"';
break;
default:
$tri = 'ORDER BY prix ASC';
break;
}
} else {
$tri = 'ORDER BY prix ASC';
}
try
{
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=catatest', 'root', '', $pdo_options);
//---------------------------------pagination PREPARATION----------------------------
$messagesparpage=12; // Nombre de message qui s'affiche par page
$retour_total= $bdd->query('SELECT COUNT(*) AS total FROM produits');
$donnees_total=$retour_total->fetch(PDO::FETCH_ASSOC);
$total=$donnees_total['total'];
$nombreDePages=ceil($total/$messagesparpage);
if(isset($_GET['page']))
{
$pageActuelle=intval($_GET['page']);
if($pageActuelle>$nombreDePages)
{
$pageActuelle=$nombreDePages;
}
}
else
{
$pageActuelle=1;
}
$premiereEntree=($pageActuelle-1)*$messagesparpage;
//---------------------------------pagination PREPARATION----------------------------
// On récupère le contenu de la table en fonction de la variable tri
$sql = 'SELECT * FROM produits '.$tri.' LIMIT '.$premiereEntree.', '.$messagesparpage.'';
$reponse = $bdd->query($sql);
// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>
<p>
<article>
<figure><a href="produit.php?ID=<?php echo $donnees['ID']; ?>" title="Informations produits"><img src="<?php echo $donnees['photo']; ?>" alt="" /></figure>
<figcaption>
<h2>
<span class="title"><?php echo $donnees['prix']; ?>€</span>
<span class="marque"><?php echo $donnees['marques']; ?> <?php echo $donnees['ref']; ?></span>
<br />
</h2>
<br />
</figcaption>
</article>
</em>
</p>
<?php
}
$reponse->closeCursor(); // Termine le traitement de la requête
}
catch(Exception $e)
{
// En cas d'erreur précédemment, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}
?>
<div class="clearfix"></div>
</div>
<footer>
<!-------------------------------------- AFFICHAGE PAGINATION --------------------------------------------->
<div class="pagination">
<?php
$pageActuelle_plus1 = $pageActuelle+1;
$pageActuelle_moin1 = $pageActuelle-1;
if ($nombreDePages > 1)
{
echo '<p align="center"><a href="#" class="pagination" onclick="this.blur(); return false;"><span>Pages :</span></a>';
for($i=1; $i<=$nombreDePages; $i++)
{
if($i==$pageActuelle)
{
echo ' <a class="pagination" href="#" onclick="this.blur(); return false;"><span> '.$i.' </span></a> ';
}
else
{
echo ' <a href="catapc.php?page='.$i.'" class="pagination" onclick="this.blur();"><span> '.$i.' </span></a> ';
}
}
echo '</p>';
}
?>
</div>
<!-------------------------------------- FIN AFFICHAGE PAGINATION --------------------------------------------->
mon souci c'est que si il y a deja une requete SQL de trie en cour c'est a dire :
http://localhost/testfinal/catapc.php?trie=hp
si l'utilisateur à deja trié par HP
si il clic sur le system de pagination, il change effectivement de page mais la requete de tri s'annule et sa donne :
http://localhost/testfinal/catapc.php?page=2
Hors l'url qui serait exacte serait :
http://localhost/testfinal/catapc.php?page=2&trie=HP
le probleme c'est comment adapter ma pagination pour quel utilise "trie" si présent dans l'url avec bien sure autre chose comme requettes.
A voir également:
- PHP pagination deux GET dans URL
- Url - Guide
- Comment faire deux colonnes indépendantes dans word - Guide
- Pagination powerpoint - Guide
- Deux ecran pc - Guide
- Get data back - Télécharger - Récupération de données
4 réponses
Pour etre plus précis mon problem ce trouve la :
echo ' <a href="catapc.php?page='.$i.'" class="pagination" onclick="this.blur();"><span> '.$i.'
echo ' <a href="catapc.php?page='.$i.'" class="pagination" onclick="this.blur();"><span> '.$i.'
j'ai régler mon soucis :
{
$urltrie = $_GET['trie']; // recupere les donnée
$urlabs = '&trie='.$urltrie; // exemple (&trie=HP)
//HP etant recuperer avec le code juste en haut
echo ' <a href="catapc.php?page='.$i.''.$urlabs.'" class="pagination" onclick="this.blur();"><span> '.$i.' </span></a> ';
}
la pagination continu avec mon trie des champ comportant la valeur "HP"
{
$urltrie = $_GET['trie']; // recupere les donnée
$urlabs = '&trie='.$urltrie; // exemple (&trie=HP)
//HP etant recuperer avec le code juste en haut
echo ' <a href="catapc.php?page='.$i.''.$urlabs.'" class="pagination" onclick="this.blur();"><span> '.$i.' </span></a> ';
}
la pagination continu avec mon trie des champ comportant la valeur "HP"