PHP pagination deux GET dans URL

Résolu/Fermé
sonar974 Messages postés 43 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 15 septembre 2017 - 5 mai 2012 à 19:21
sonar974 Messages postés 43 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 15 septembre 2017 - 5 mai 2012 à 21:23
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.
A voir également:

4 réponses

sonar974 Messages postés 43 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 15 septembre 2017 4
5 mai 2012 à 19:22
Pour etre plus précis mon problem ce trouve la :

echo ' <a href="catapc.php?page='.$i.'" class="pagination" onclick="this.blur();"><span> '.$i.'
0
sonar974 Messages postés 43 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 15 septembre 2017 4
5 mai 2012 à 19:43
UP
0
sonar974 Messages postés 43 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 15 septembre 2017 4
5 mai 2012 à 20:03
UP UP
0
sonar974 Messages postés 43 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 15 septembre 2017 4
5 mai 2012 à 21:23
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"
0