par
manue87 » 03 oct. 2013, 14:55
bonjour,
j'ai testé ta solution ainsi :
// soit $page tout tes articles (sous la forme d'un array)
// $item->category_name la categorie
// $item->titre_produit; le nom du produit
$titrecategorieproduitprecedent = false;
$numeroligneproduit = 0;
$nombreditems = count($page);
//echo $nombreditems;
$nombreditemsentableau = 0;
// pour chaque item
foreach ($page as $item) {
$itemhtml = $itemtemplate;
require JModuleHelper::getLayoutPath($module->module, 'default_parse');
echo "COL : ".$numeroligneproduit." /// ITEMS = ".$nombreditemsentableau." /// RES = ".$res." /// CAT = ".$item->category_name." /// CAT PREC = ".$titrecategorieproduitprecedent."<br/>";
if ($titrecategorieproduitprecedent === false) {
// ne s'affichera qu'au premier tour pour être sur que notre tableau commence bien par un tr
$mainareahtml .= '<tr>';
}
// si l item est de la meme categorie que la precedente
if ($item->category_name == $titrecategorieproduitprecedent) {
// les 2 items sont de la même cat = on continue
$res = "ok";
if ($numeroligneproduit < 3) {
// il y a moins de 3 produits affiches sur la meme ligne
// on ajoute sur la même ligne
$numeroligneproduit++;
$res.= " Ok";
} else {
// Sinon on ferme la ligne et on en cree une nouvelle
$mainareahtml .= '</tr>'; // on ferme la ligne
$mainareahtml .= '<tr>';
$res.= " Ko";
}
} else {
// c est une autre cat : donc nouvelle ligne
$mainareahtml .= '<tr>';
$res = "KO";
}
// on affiche nos infos produits
$mainareahtml .= '<td style="width:'.$cell_width.'%" >'.$itemhtml.'</td>';
// si y'a plus d objets a afficher on ferme la ligne ouverte
if ($nombreditems = $nombreditemsentableau) {
$mainareahtml .= '</tr>';
}
$titrecategorieproduitprecedent=$item->category_name;
$nombreditemsentableau++;
}
je vire chèvre : j'ai mis des affichages de resultat des tests :
COL : 0 /// ITEMS = 0 /// RES = /// CAT = Garden Tools /// CAT PREC =
COL : 0 /// ITEMS = 1 /// [b]RES = KO[/b] /// CAT = Garden Tools /// CAT PREC = Garden Tools
COL : 1 /// ITEMS = 2 /// RES = ok Ok /// CAT = Garden Tools /// CAT PREC = Garden Tools
COL : 2 /// ITEMS = 3 /// RES = ok Ok /// CAT = Hand Tools /// CAT PREC = Garden Tools
COL : 2 /// ITEMS = 4 /// RES = KO /// CAT = Hand Tools /// CAT PREC = Hand Tools
COL : 3 /// ITEMS = 5 /// RES = ok Ok /// CAT = Hand Tools /// CAT PREC = Hand Tools
COL : 3 /// ITEMS = 6 /// RES = ok Ko /// CAT = Hand Tools /// CAT PREC = Hand Tools
COL : 3 /// ITEMS = 7 /// RES = ok Ko /// CAT = Indoor Tools /// CAT PREC = Hand Tools
COL : 3 /// ITEMS = 8 /// RES = KO /// CAT = Outdoor Tools /// CAT PREC = Indoor Tools
COL : 3 /// ITEMS = 9 /// RES = KO /// CAT = Peintures Acryliques /// CAT PREC = Outdoor Tools
COL : 3 /// ITEMS = 10 /// RES = KO /// CAT = Peintures Acryliques /// CAT PREC = Peintures Acryliques
COL : 3 /// ITEMS = 11 /// RES = ok Ko /// CAT = Peintures Acryliques /// CAT PREC = Peintures Acryliques
COL : 3 /// ITEMS = 12 /// RES = ok Ko /// CAT = Power Tools /// CAT PREC = Peintures Acryliques
COL : 3 /// ITEMS = 13 /// RES = KO /// CAT = Power Tools /// CAT PREC = Power Tools
comme on le voit, le test renvoit KO au lieu de OK lorsque les categories sont identiques.
Au final j'ai l'affichage suivant :
A A
A
B
B
C
D
D
E
F
j'ai beau tourner le truc dans tous les sens....