Bonjour, je viens de constater un problème qui est très gênant.
Je dois remettre à jour un site de commerce qui vend des vêtements. On peut donc les classer par marques, catégories, couleurs ou encore prix. On m'a demandé un fil d'Ariane qui respecte les choix du client et non un ordre pré-établi. Je suis donc parti sur un tableau de session qui enregistre l'ordre d'affectation des différentes variable d'URL correspondantes ($_GET[ID_MARK] pour la marque, $_GET[ID_CAT] pour la catégorie, $_GET[SCAT] pour la sous-cat, $_GET[COUL] pour la couleur, $_GET[PRIX] pour la fourchette de prix et $_GET[TRI] pour le classement).
A chacune de ces variables correspond un champ dans le tableau de session $_SESSION[tab_ariane] et a chaque nouvelle variable 'URL définit le champ classement dans le tableau prend la valeur max+1 du tableau.
Pour plus de clarté je vous mets le script en lui-même :
Je vous signale que le premier hébergement c'est mon perso qui est chez1and1 tandis que le deuxième est un espace pour les test pour les futurs modules de notre site (je travaille pour un site de commerce comme je vous l'ai dit) chez WAW...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 // ---------------------------------------------------------------------------- // -- Comparaison du tableau de session et des variables d'URL ---------------- // -- pour l'ordre du fil d'ariane -------------------------------------------- // ---------------------------------------------------------------------------- // On vérifie que toutes les variables GET dont le classement est défini ont bien une valeur non nulle (si pas on mets le classement à 0) foreach ($_SESSION[tab_ariane] as $ari_nom => $ari_val) { if ($ari_val != 0) { if (!$_GET[$ari_nom] OR $_GET[$ari_nom] == '') $_SESSION[tab_ariane][$ari_nom] = 0; } } // On récupère le max du tableau d'ariane auquel on ajoute 1 (la prochaine variable à enregistrer aura comme classement max+1) $ari_cla = max($_SESSION[tab_ariane]) + 1; // On vérifie que les variables GET présentes et concernées par le fil d'ariane ont bien un classement foreach ($_GET as $get_nom => $get_val) { if ($get_nom == 'RUB' OR $get_nom == 'ID_MARK' OR $get_nom == 'ID_CAT' OR $get_nom == 'SCAT' OR $get_nom == 'COUL' OR $get_nom == 'PRIX' OR $get_nom == 'ID_PROD') { // si une variable GET a une valeur non nulle mais pas de classement, on lui mets son classement avec $ari_cla if (($get_val != 0 OR $get_val != '') AND $_SESSION[tab_ariane][$get_nom] == 0) { $_SESSION[tab_ariane][$get_nom] = $ari_cla; $ari_cla++; } } }
Si quelqu'un a une explication parce que là je bloque complet. Je savais qu'un script n'étais pas traité pareil sur deux serveurs différents...
Partager