8797 sujets

Développement web côté serveur, CMS

Bonjour à tous.

J'ai un problème de raisonnement. Si je comprends la marche à suivre, il est possible que je puisse le traduire en script mais j'arrive pas à trouver la logique du truc.

Voilà, en deux mots. Il s'agit d'une boutique, avec en tête de page la possibilité de trier par catégories ou par sous-catégories ou encore par produits.

Le visiteur choisit une categorie ($categ) et je trie dessus avec un WHERE dans ma requete SQL.

Il peut y avoir 4 ou 5 pages de résultats (sur 30 au total de la base avec 10 résultats par page). La pagination est correcte et fonctionne bien. MAIS...

Lorsque le visiteur trie sur une $categ, la première page lui donne les premiers résultats correspondants à sa demande. mais à la seconde page, le script revient au trie sur la base entière.

Pas moyen de rester sur les données triées durant les 4 ou 5 pages nécessaires.

Et je n'arrive pas à voir, dans mon esprit, comment y parvenir.

Quelqu'un aurait une idée ? Le problème a dû certainement vous être présenté.

Merci à tous de votre aide.

Cordialement.
Salut,

Utilise LIMIT dans ta requête SQL. Ainsi elle te fera ta requête à partir du X résultat pour afficher Y résultat à partir de X.

Et ensuite, grâce à ta pagination, tu indexe X
Merci de ta réponse.

J'utilise déjà le LIMIT, ce n'est pas le problème. Il me sort bien les 40 seules fiches concernées. No problème. Mais je les affiche 10 par 10. Pour les 10 premières, il me donne bien les fiches classées et triées avec WHERE et LIMIT mais pour afficher de la 11 à la 20 il repasse à SELECT * FROM boutik...

J'ai pensé à me serrvir des SESSION, ou faire ma pagination en include pour garder mes variables, rien n'y fait.

Il faut dire que je joue à l'apprenti sorcier, j'y vais dans le brouillard car je n'arrive pas à structuer un raisonnement cohérent.
Euh, comment tu fais ta pagination ? Tu récupère par $_GET ?

Si oui, utilise la variable, pour multiplier tes limit
Comment passer des limits par le GET ?

il me faut déjà passer la page, la catégorie, la LIMIT basse, la haute, et encore un ou deux paramètres.... Un peu beaucoup, non ?

Pourtant, il doit y avoir une solution simple. Par exemple dans un forum. Le visiteur a la possibilité de chercher un motn, des mots ou l'expression exacte, le tout dans les titres, dans les messages ou dans les deux.

Lorsqu'il a fait son choix, s'il y a 8 pages de résultats, il peut parcourir ces 8 pages, et que ces 8 pages, sans revenir (a moins qu'il ne le souhaite) au forum général...
whombat a écrit :

Lorsque le visiteur trie sur une $categ, la première page lui donne les premiers résultats correspondants à sa demande. mais à la seconde page, le script revient au trie sur la base entière.
Parce que tu ne passes pas en variable le champ qui te sert de tri. Au final tu devrais avoir quelque chose comme :
<a href="recherche.php?categ=<?php echo $categ; ?>&amp;page=2">Page suivante</a>

Modifié par Heyoan (31 Jan 2009 - 05:06)
Oui, merci.

En fait, je viens d'essayer une technique : je mets toutes mes variables dans des $_SESSION et je passe, chaque fois que je dois afficher le résultat d'un tri, sur une page réservée à cet effet.

Sur cette page, en dehors des lignes d'affichage, il y a le strick minimum d'autres infos donc il n'y a plus de parasites.

Ca a l'air d'aller.

Et ça m'évite de montrer au visiter des url sans fin. Je sais que pour certains, cela fait 'très élaboré', ça épate le patron ou le client, mais je trouve que ça fait brouillon, assez fouillis.

Avec cette technique, tout est transparent.
Sauf que avec cette technique si je veux montrer à un ami la seconde page de ta liste de produits, je ne peux pas lui donner de lien direct, je serai obligé de lui donner l'url de la première page et lui dire d'aller voir tout seul la seconde.

Ce n'est pas très grave d'avoir des paramètres dans l'url, ça ne fait ni brouillon ni élaboré, ça sert à ça, tout simplement.
Modifié par Tymlis (01 Feb 2009 - 14:16)
Salut,
whombat a écrit :
Et ça m'évite de montrer au visiter des url sans fin. Je sais que pour certains, cela fait 'très élaboré', ça épate le patron ou le client, mais je trouve que ça fait brouillon, assez fouillis.

+1000 avec Tymlis. Et les URLs à rallonge n'impressionnent personne. Sauf si tu as fait de la réécriture d'URLs et que tu as des URLs sensées et faciles à lire. Là, c'est la classe Smiley smile

Blague à part, il vaudrait mieux éviter de se priver de techniques PHP élémentaires sur base de préjugés, alors que tu n'arrives pas à mettre en place ton idée. Les fonctionnalités d'abord, le cosmétique ensuite. Et des URLs "brouillonnes", ce n'est que du cosmétique...