Ordre alphabétique des catégories et des produits

10 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour,

Je suis passé de la version 2 à la version 4, gratuite.

J'ai deux problèmes, que je vais mettre dans deux posts.

Voici le premier problème : Les catégories ne s'affichent pas par ordre alphabétique ni les sous-catégories. J'ai essayé de faire les modifications de la requete avec ORDER BY, comme indiqué dans certains post du forum, mais rien n'y fait. L'ordre décalé apparait tout aussi bien dans le back office que dans le front office.

Comment faire pour que les produits soient affichés dans l'ordre alphabétique, sans forcer le positionnement ?

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

ta solution est bonne peut etre te trompes tu de page

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonsoir xeon,

la solution doit être apportée, sauf erreur de ma part, dans le fichier achat.php, et c'est effectivement dans ce fichier qu'il faut modifier la clause ORDER BY de la requête SELECT dans peel_categories.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

C'est l'ordre alphabétique que je cherche à imposer. J'ai fini par trouver. C'est dans le fichier lib/fonctions, ligne 2092, qu'il faut remplacer

$qid = mysql_query("SELECT c.id, c.parent_id, c.nom_".$_SESSION['langue']." FROM peel_categories c WHERE c.parent_id = '$parent_cat' AND c.etat = '1' ORDER BY c.position");

par

$qid = mysql_query("SELECT c.id, c.parent_id, c.nom_".$_SESSION['langue']." FROM peel_categories c WHERE c.parent_id = '$parent_cat' AND c.etat = '1' ORDER BY c.nom_".$_SESSION['langue']."");

Seul problème, les lettres accentuées comme é, è, etc. sont traitées comme des lettres postérieures à la lettre Z. Ce qui fait que par exemple, le mot "mère" est positionné après le mot "mythe". J'ai cherché sur un forum, et l'idée pour corriger cela est donnée ici : http://mysql.ifrance.com/showthread.php?t=211.

J'ai donc modifié dans la table nom_fr, colonne interclassement, la sélection latin1_bin par utf8_swedish_ci, et le classement se fait alors correctement.

Si on veut faire la même chose dans l'affichage des catégories dans l'admin, c'est dans le fichier categorie.php, ligne 13. il faut modifier la requete

$sql = "SELECT c.id, c.reference, c.nom_".$_SESSION['langue'].", c.etat, c.position, c.nb, c.image

FROM peel_categories c

WHERE c.parent_id = '$parent' ORDER BY c.position";

par

$sql = "SELECT c.id, c.reference, c.nom_".$_SESSION['langue'].", c.etat, c.position, c.nb, c.image

FROM peel_categories c

WHERE c.parent_id = '$parent' ORDER BY c.nom_".$_SESSION['langue']."";

Il reste à forcer cet affichage dans le formulaire listant les catégories, quand on choisi d'ajouter une catégorie. Là je ne vois pas. Quelqu'un connaît-il la solution ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Si quelqu'un sait comment faire pour forcer l'affichage alphabétique des listings de catégories dans la partie administration, je suis preneur. J'ai cherché mais je n'ai pas trouvé comment faire.

Merci d'avance.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

>Bonsoir Xéon,

dans administrer/categories.php, fonction affiche_arbo_cat,

remplacer :

$sql = "SELECT c.id, c.reference, c.nom_".$_SESSION['langue'].", c.etat, c.position, c.nb, c.image

FROM peel_categories c

WHERE c.parent_id = '$parent' ORDER BY c.position";

par

$sql = "SELECT c.id, c.reference, c.nom_".$_SESSION['langue'].", c.etat, c.position, c.nb, c.image

FROM peel_categories c

WHERE c.parent_id = '$parent' ORDER BY ".$_SESSION['langue']." ASC";

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour

Merci, ça marche pour la page categories.php, à part une petite rectification à faire. La ligne est

$sql = "SELECT c.id, c.reference, c.nom_".$_SESSION['langue'].", c.etat, c.position, c.nb, c.image

FROM peel_categories c

WHERE c.parent_id = '$parent' ORDER BY c.nom_".$_SESSION['langue']." ASC";

Je pensais aussi que cela classerai les catégories par ordre alphabétique dans le formulaire d'ajout de produit et de modification de produits (c'est le plus important pour le travail que j'ai à faire). Savez-vous comment faire pour ces pages ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Oups...

Merci pour le correctif, xeon, je suis allé un peu vite dans l'écriture de ma requête ;)

L'affichage de la liste des catégories pour l'ajout / modification de produits se trouve dans : administrer/produits.php, fonction affiche_liste_produits() :

select_arbo_cat($categorie_options, $categorie_id);

Il faut donc modifier la fonction select_arbo_cat(), définie dans lib/fonctions/fonctions.php.

Cette fonction affiche la liste des catégories, ordonnée de la manière suivante :

Catégories de le parent est 0 (CAD celles de plus haut niveau, qui ne sont pas des sous-catégories), ordonnées par ordre alphabétique.

Pour chacune de ces catégories, on va chercher les catégories filles, et ainsi de suite (car select_arbo_cat est une fonction récursive)

Pour forcer l'ordre purement alphabétique, il faut recoder select_arbo_cat pour obtenir le résultat voulu.

Mais select_arbo_cat est appelée à plein d'endroits du code, donc il faudrait plutêt développer une fonction spécifiquement pour ce fichier de l'admin :

Une simple fonction (non récursive) qui fasse un SELECT FROM peel_categories ORDER BY nom_$_SESSION['lang'] et affiche le résultat pour générer le SELECT

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Finalement, à partir de ce que vous m'avez donné j'ai pu afficher la liste par ordre alphabétique, en modifiant (ligne 178 de fonctions.php)

function construit_arbo_cat(&$sortie, &$preselectionne, $parent=0, $indent="") {


	$sql = "SELECT c.id, c.nom_".$_SESSION['langue'].", c.parent_id FROM peel_categories c 

	WHERE c.parent_id = '".intval($parent)."' ORDER BY c.id";
par
function construit_arbo_cat(&$sortie, &$preselectionne, $parent=0, $indent="") {


	$sql = "SELECT c.id, c.nom_".$_SESSION['langue'].", c.parent_id FROM peel_categories c 

	WHERE c.parent_id = '".intval($parent)."' ORDER BY c.nom_".$_SESSION['langue']." ASC";

Tout à l'air de marcher, ajouts et modifications de produits.

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Parfait, content que votre problème soit résolu !

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping