Forum Thelia

Forum THELIA

Bienvenue sur le forum de THELIA.

Vous n'êtes pas identifié(e).

communauté et support

#1 15-05-2009 01:14:25

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Boucle produit

Bon bah je suis le dernier rescapé...

Je fais mes boucles produits avec l'id du produit en paramètre et je remarque que si l'id n'existe pas, ça me retourne tous les produits de ma boutique.

Alors que si j'utilise la ref produit bah ma condition <T_PROD> fonctionne bien...

C'est normal ?


Aide les autres, ils t'aideront en retour.

Hors ligne

#2 15-05-2009 01:22:33

ottoroots
Membre
Lieu : Marseille
Inscription : 20-11-2008
Messages : 965
Site Web

Re : Boucle produit

ta boucle produit est en une conditionnelle ? Et si tu boucles sur un ID en paramètre (id=#PRODUIT_ID) qui n'existe pas la condition est quand même remplie : elle affiche tous les produits du catalogue ?

tu peux me montrer la boucle ?

Hors ligne

#3 15-05-2009 01:23:54

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Re : Boucle produit

rien de très compliqué ^^

<T_PROD>
<THELIA_PROD type="PRODUIT" id="#PRODUIT_ID">
Il existe!
</THELIA_PROD>
</T_PROD>
Il existe pas!
<//T_PROD>

Aide les autres, ils t'aideront en retour.

Hors ligne

#4 15-05-2009 01:26:16

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Re : Boucle produit

Ah ah ah !

La bonne blague!

En fait pour la référence, j'ai fais un test en dur donc ça doit donner la même chose qu'avec l'id...

Fichier substitproduits.php

if($ref)
	$tproduit->charger($ref);
else if($id_produit)
	$tproduit->charger_id($id_produit);
		
if( $ref || $id_produit)        
	$tproduitdesc->charger($tproduit->id, $_SESSION['navig']->lang);

là ça me sort rien donc les replace se font par du vide et donc ma boucle va tout chercher...


Aide les autres, ils t'aideront en retour.

Hors ligne

#5 15-05-2009 01:30:00

ottoroots
Membre
Lieu : Marseille
Inscription : 20-11-2008
Messages : 965
Site Web

Re : Boucle produit

Bon vite quelqu'un ! qu'on donne un bug à manger à elyos sinon il se met à en créer lui-même... big_smile

Hors ligne

#6 15-05-2009 01:30:02

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Re : Boucle produit

Exemple : http://www.distillerie-girardot.fr/prod … =04LIFRMIC

ça charge tout big_smile (et ça rame au passage je vais lui dire ^^)


Aide les autres, ils t'aideront en retour.

Hors ligne

#7 15-05-2009 01:31:10

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Re : Boucle produit

ottoroots a écrit :

Bon vite quelqu'un ! qu'on donne un bug à manger à elyos sinon il se met à en créer lui-même... big_smile

J'en crée pas! Ils existent ! Fais des tests tu verras!!

(va jeter un œil à l'autre post aussi ^^)


Aide les autres, ils t'aideront en retour.

Hors ligne

#8 15-05-2009 01:40:28

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Re : Boucle produit

En fait j'ai bien peur que c'est pareil partout, dès lors que tu spécifies une ref produit, un id produit, un id rubrique, un id contenu, un id dossier,... erroné, ça te charge tout ce que la boucle peut te sortir hmm


Aide les autres, ils t'aideront en retour.

Hors ligne

#9 15-05-2009 01:42:37

ottoroots
Membre
Lieu : Marseille
Inscription : 20-11-2008
Messages : 965
Site Web

Re : Boucle produit

'tin...
La distillerie Girardot à fait planter firefox.... smile

OK je confirme. Mais alors il suffirait de modifier cette ligne là  (j'en profite que yoan et manu dorment) ->

if( $ref || $id_produit)

non ?

Dernière modification par ottoroots (15-05-2009 01:43:00)

Hors ligne

#10 15-05-2009 01:46:16

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Re : Boucle produit

Oui, moi aussi ça a failli faire plante Firefox ^^.

Sinon, non!
Car $ref ou $id_produit eux ils existent! (tout comme $id_rubrique etc)

Je dirais plutôt que dans les classes qui vont chercher les informations si aucun résultat n'est retourné alors on renvoie soit sur l'index soit sur une page erreur.php.

Dernière modification par Elyos (15-05-2009 01:47:26)


Aide les autres, ils t'aideront en retour.

Hors ligne

#11 15-05-2009 02:10:13

ottoroots
Membre
Lieu : Marseille
Inscription : 20-11-2008
Messages : 965
Site Web

Re : Boucle produit

les classes surchargent la méthode charger() de Requete(), classe abstraite pour la connexion à la base. Mais toutes font appel à getvars() de la classe BaseObj.

getvar() retourne 0 (pas de résultat) ou 1. Peut-être par là ?

Bon je profite  que tu t'ennuies pour poser des questions de bleu

Hors ligne

#12 15-05-2009 02:19:55

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Re : Boucle produit

vas y je t'en prie big_smile

en gros faudrait faire
- soit dans la fonction getVars à la place de

return 0

mettre

header("Location: index.php");exit;

ou

header("Location: erreur.php");exit;

- soit dans les classes qui font appel à getVars à la place de

return $this->getVars("select * from $this->table where ref=\"$ref\"");

mettre

$result = $this->getVars("select * from $this->table where ref=\"$ref\"");
if(!$result || $result==0){
header("Location: index.php");exit; //ou erreur.php
}else{
return $result;
}

Dernière modification par Elyos (15-05-2009 02:20:32)


Aide les autres, ils t'aideront en retour.

Hors ligne

#13 15-05-2009 02:31:28

ottoroots
Membre
Lieu : Marseille
Inscription : 20-11-2008
Messages : 965
Site Web

Re : Boucle produit

on est d'accord. La 2nde solution serait quand même moins risquée. Pas sûr qu'une obscure arrière fonction ne se serve pas de ce retour 0 de getvar()....

Bon là j'en connais qui vont avoir le poil qui se hérisse demain en lisant ces horreurs.

je testerais demain juste pour rigoler.

Hors ligne

#14 15-05-2009 02:36:10

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Re : Boucle produit

Oui car la première solution est utilisé à d'autres endroits.

Quoiqu'en fait, ce serait peut être même mieux de faire la vérification dans les substitutions globales avant de faire partir les boucles...

Yoan et Manu décideront, même si je vois déjà leur réponse : "Mais y'a pas d'intérêt à saisir une url fausse!" lol (nan ils sont pas comme ça smile)


Aide les autres, ils t'aideront en retour.

Hors ligne

#15 15-05-2009 09:00:45

alfouine
Membre
Lieu : Touraine
Inscription : 17-09-2008
Messages : 2 314

Re : Boucle produit

Salut la compagnie,

Vous m'avez fait peur mad, le cas de figure que vous décrivez n'existe pas en ligne, puisque je n'affiche jamais un produit seul, seul un internaute qui connait THELIA peut creer ce genre de dysfonctionnement.

C'est normal que cette page rame ou plante, vous chargez 196 produits avec une image de 40k, soit 8M au total lol

Alfouine,


Au royaume des aveugles, les borgnes sont mal vus.

Hors ligne

#16 15-05-2009 13:38:13

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Re : Boucle produit

Salut!

Oui oui en accès direct c'est pas possible... mais via un lien erroné c'est possible...et moi perso ça me gêne big_smile


Aide les autres, ils t'aideront en retour.

Hors ligne

#17 15-05-2009 20:03:05

manu
faï tot petar miladiu
Lieu : Clermont-Ferrand
Inscription : 09-11-2007
Messages : 1 933
Site Web

Re : Boucle produit

une solution qui me vient vite fait comme ca, passer un paramètre num à vos boucles produits smile

Vous mettez une règle disant qu'au maximum sur votre on pourra pas afficher au maximum c produits sur une même page (sinon vous aurez le problème crée sur le site d'alfouine ce qui est tout à fait normal il l'a expliqué smile )

Hors ligne

#18 15-05-2009 23:01:09

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Re : Boucle produit

Oui, c'est à ça qu'il sert le param num tongue


Aide les autres, ils t'aideront en retour.

Hors ligne

#19 16-05-2009 22:15:39

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Re : Boucle produit

Pour la boucle produit, j'ai choisi d'afficher le dernier produit en ligne rentré dans la bdd,

j'ai donc mis :

<THELIA_PROD type="PRODUIT" id="#PRODUIT_ID" num="1" ligne="1" classement="inverse">
</THELIA_PROD>

Dernière modification par Elyos (16-05-2009 22:16:06)


Aide les autres, ils t'aideront en retour.

Hors ligne

#20 19-05-2009 23:15:56

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Re : Boucle produit

Bon je reviens sur ce post après une petite idée ^^

Si vous voulez empêcher l'accès en cas de produit/rubrique/contenu inexistant

Boucle produit sur l'id :

<?php
$id_produit=#PRODUIT_ID;
if($id_produit==""){
 header("Location: index.php");exit;
}
?>

Boucle produit sur la référence:

<?php
$ref=#PRODUIT_REF;
if($ref==""{
 header("Location: index.php");exit;
}
?>

et ainsi de suite sur les rubriques et contenus.

Dernière modification par Elyos (19-05-2009 23:16:51)


Aide les autres, ils t'aideront en retour.

Hors ligne

#21 25-05-2009 16:52:02

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Re : Boucle produit

En fait ça peut pas marcher car avant d'exécuter le php, des informations sont déjà envoyées à la page ce qui nous donne

Warning: Cannot modify header information - headers already sent by (output started at [...]/htdocs/fonctions/moteur.php(276) : eval()'d code:4) in [...]/htdocs/fonctions/moteur.php(276) : eval()'d code on line 263


Aide les autres, ils t'aideront en retour.

Hors ligne

#22 25-05-2009 18:34:59

Elyos
Membre
Inscription : 05-05-2009
Messages : 1 745

Re : Boucle produit

Bon bah je suis passé par du javascript...

En fait, je récupère des infos pour générer le titre de chaque page.

Quand l'id produit n'existe pas (pareil pour les rubriques, les contenus etc...) la variable "titrepage" est vide et donc je remplace le contenu de ma page centrale par ce que je désire par du javascript.

Par contre, je ne fais des vérifications que sur les ids retournés que j'utilise.
Je ne fais aucune vérification sur les textes et les autres ids dans les urls mais ça c'est autre histoire big_smile

Dernière modification par Elyos (25-05-2009 18:40:54)


Aide les autres, ils t'aideront en retour.

Hors ligne

#23 06-06-2012 21:35:24

boyquotes
Membre
Lieu : Montpellier
Inscription : 19-03-2010
Messages : 194
Site Web

Re : Boucle produit

Bonsoir,

Je déterre ce post, car j'ai perdu 30 minutes sur le debug de mon plugin wordpress thelia, j'avais mis id_produit=1 et tous sortais, jusqu'à ce que j'aille voir en base qu'il n'y avait plus de produit avec un tel ID, ne pourrait-on pas avoir un message "Produit inexistant" ou même une erreur 404?

NUM st une modeste parade  mais ce serait bien de pouvoir avoir le message pour tous les types de contenus:
Sans parler de la mise en page qui sautent:
http://demo.thelia.net/?fond=produit&id … rubrique=4

EDIT: Sur les rubriques, même le menu dans la partie gauche trinque:
http://demo.thelia.net/?fond=rubrique&id_rubrique=444

Bonne soirée.

Dernière modification par boyquotes (06-06-2012 21:40:53)


Linux-live-cd.org
Serveur Linux / Thélia 1.5.x.x
PHP 5.3.x / Mysql 5.1.x

Hors ligne

#24 13-03-2013 10:44:23

yvds90
Membre
Inscription : 14-01-2013
Messages : 5

Re : Boucle produit

Je re-déterre le post, puisque j'ai exactement le même problème.
J'avais énormément de référence en doublons suite à une insertion par fichier CSV, des produits dans la BDD.
J'ai supprimé les doublons, malheureusement Google a référencé toutes les pages avant que je fasse le nettoyage.

Ce qui fait qu'une personne via Google peut tomber sur une page où l'ID du produit n'existe plus, ce qui fait que l'ensemble des produits existant dans la base de donnée est affiché.

Et j'ai remarqué , comme le message précédent, que sur le site démo il y a le même problème :
http://demo.thelia.net/?fond=produit&id … rubrique=3

Merci !


Yoann.
Nouveau sur Thélia.

Hors ligne

#25 13-03-2013 10:50:03

roadster31
Modérateur
Lieu : Toulouse, ô Toulouse !
Inscription : 19-09-2009
Messages : 3 735
Site Web

Re : Boucle produit

ajouter num="1" a la boucle produit règle ce problème.

Idem pour la boucle contenu.

Hors ligne

Pied de page des forums

OCTOLYS - 17 rue du Pré la Reine - 63100 Clermont-Ferrand - 09 54 95 32 34 - thelia@octolys.fr


Réalisation Octolys
Charte graphique Scopika
Intégration Punbb Arts Graphs Design