THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 Boucle produit

(15-05-2009 00:14:25)


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.

Offline

#2 Re: Boucle produit

(15-05-2009 00:22:33)


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 ?

Offline

#3 Re: Boucle produit

(15-05-2009 00:23:54)


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.

Offline

#4 Re: Boucle produit

(15-05-2009 00:26:16)


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.

Offline

#5 Re: Boucle produit

(15-05-2009 00:30:00)


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

Offline

#6 Re: Boucle produit

(15-05-2009 00:30:02)


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.

Offline

#7 Re: Boucle produit

(15-05-2009 00:31:10)


ottoroots wrote:

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.

Offline

#8 Re: Boucle produit

(15-05-2009 00:40:28)


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.

Offline

#9 Re: Boucle produit

(15-05-2009 00:42:37)


'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 ?

Last edited by ottoroots (15-05-2009 00:43:00)

Offline

#10 Re: Boucle produit

(15-05-2009 00:46:16)


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.

Last edited by Elyos (15-05-2009 00:47:26)


Aide les autres, ils t'aideront en retour.

Offline

#11 Re: Boucle produit

(15-05-2009 01:10:13)


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

Offline

#12 Re: Boucle produit

(15-05-2009 01:19:55)


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;
}

Last edited by Elyos (15-05-2009 01:20:32)


Aide les autres, ils t'aideront en retour.

Offline

#13 Re: Boucle produit

(15-05-2009 01:31:28)


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.

Offline

#14 Re: Boucle produit

(15-05-2009 01:36:10)


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.

Offline

#15 Re: Boucle produit

(15-05-2009 08:00:45)


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.

Offline

#16 Re: Boucle produit

(15-05-2009 12:38:13)


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.

  • manu
  • faï tot petar miladiu

Offline

#17 Re: Boucle produit

(15-05-2009 19:03:05)


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 )


http://doc.thelia.net/
http://thelia.net/modules
http://raynaud.io
PGP public Key : 0xC6E546A6

Offline

#18 Re: Boucle produit

(15-05-2009 22:01:09)


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


Aide les autres, ils t'aideront en retour.

Offline

#19 Re: Boucle produit

(16-05-2009 21:15:39)


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>

Last edited by Elyos (16-05-2009 21:16:06)


Aide les autres, ils t'aideront en retour.

Offline

#20 Re: Boucle produit

(19-05-2009 22:15:56)


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.

Last edited by Elyos (19-05-2009 22:16:51)


Aide les autres, ils t'aideront en retour.

Offline

#21 Re: Boucle produit

(25-05-2009 15:52:02)


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.

Offline

#22 Re: Boucle produit

(25-05-2009 17:34:59)


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

Last edited by Elyos (25-05-2009 17:40:54)


Aide les autres, ils t'aideront en retour.

Offline

#23 Re: Boucle produit

(06-06-2012 20:35:24)


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.

Last edited by boyquotes (06-06-2012 20:40:53)


Linux-live-cd.org
Serveur Linux / Thélia 1.5.x.x / Thélia 2.x.x
PHP 5.4.x / Mysql 5.5.x
Compte Twitter

Offline

#24 Re: Boucle produit

(13-03-2013 09:44:23)


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.

Offline

#25 Re: Boucle produit

(13-03-2013 09:50:03)


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

Idem pour la boucle contenu.


OpenStudio Toulouse