27/06/2016, 15:18:16
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.12.x
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~
Bonjour,
Je rencontre quelques difficultés avec le mode "search" de ListItExtended (ListIt2) (en gros, impossible de rechercher avec les catégories et surtout les résultats me semblent hasardeux avec certains champs que j'ai créé bref, ce n'est pas vraiment le sujet).
J'essaie donc dans un premier temps de créer une UDT qui me permettrait de lister chaque "item" de mon listIt.
J'ai donc repéré les 6 tables utilisées pour mon instance (que j'ai appelé "ressources"):
cms_module_listit2ressources_category (liste les catégories)
cms_module_listit2ressources_fielddef (liste les types de champs que j'ai créé)
cms_module_listit2ressources_fielddef_opts (liste les options des types de champs créé => je n'utilise pas)
cms_module_listit2ressources_fieldval (liste les valeurs des types de champs que j'ai créé)
cms_module_listit2ressources_item (liste les différents item (id + titre de l'item))
cms_module_listit2ressources_item_categories (relation entre les items et les catégories).
J'essaie donc simplement d'afficher chaque ressource : Son Id, son titre, sa catégorie liée et les différents champs "custom" que j'ai créé avec le couple : clé => valeur).
Voici mon UDT contenant ma requête :
Code :
[== Indéfini ==]
//Je récupère le connecteur de la bdd
$db = cmsms()->GetDb();
// Création et éxécution de la requête
//V1 Tout ensemble => problème 1 ligne par type de valeurs...
$sql = 'SELECT DISTINCT
item.item_id AS id,
item.title AS title,
item.active AS active,
item_cat.category_id AS cat_id,
item_cat.item_id AS item_id,
category.category_id,
category.category_name as cat_name,
category.category_alias as cat_alias,
fieldval.item_id as fkItemId,
fieldval.fielddef_id as fkfieldefId,
fieldval.value as theVal,
fielddef.fielddef_id,
fielddef.name as valueTitle
FROM `'.cms_db_prefix().'module_listit2ressources_item` AS item
LEFT JOIN `'.cms_db_prefix().'module_listit2ressources_item_categories` AS item_cat
ON item.item_id = item_cat.item_id
LEFT JOIN `'.cms_db_prefix().'module_listit2ressources_category` AS category
ON item_cat.category_id = category.category_id
LEFT JOIN `'.cms_db_prefix().'module_listit2ressources_fieldval` AS fieldval
ON item.item_id = fieldval.item_id
LEFT JOIN `'.cms_db_prefix().'module_listit2ressources_fielddef` AS fielddef
ON fieldval.fielddef_id = fielddef.fielddef_id
WHERE item.active=1
';
$articles = $db->Execute($sql);
echo "<table>";
while ($row = $articles->FetchRow())
{
echo <<<REQUETE
<tr>
<td>Article id : {$row['id']}</td>
<td>Titre : {$row['title']}</td>
<td>Active : {$row['active']}</td>
<td>Category id : {$row['cat_id']}</td>
<td>Item id : {$row['item_id']}</td>
<td>Categorie : {$row['cat_name']}</td>
<td>Id: {$row['fkItemId']}<br/>{$row['valueTitle']} : {$row['theVal']}</td>
</td>
</tr>
REQUETE;
}
echo "</table>";
Et voilà le résultat qui est retourné :
Mon problème est donc le suivant :
Je ne voudrai qu'une seule ligne pour l'item avec l'id 328. Ici il en créait autant qu'il y a de champs customs créés (dernière colonne : date, type, langue, source).
J'ai pensé utiliser GROUP_CONCAT, mais du coup je n'ai pas l'association nom du champ => valeur, mais tous les noms de champs regroupés ensemble et toutes leurs valeurs regroupées ensemble...
Je ne vois pas quel type de requête je dois faire, je pense qu'il faut faire une seconde boucle (qui liste les champs custom : fielddef et fieldval) dans la boucle qui liste les articles? Mais comment?
Je regarde les sources de ListIt2 mais je ne suis pas très à l'aise avec les objets du coup j'ai du mal à me repérer.
Si quelqu'un à une piste à me donner, ne serait-ce qu'une piste pour faire des recherches google, je suis preneur!
Merci