Sujet fermé
Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

[RESOLU] Jointures de tables et tableaux associatifs dans une UDT
#2

J'ai réussi en intégrant simplement une seconde requête dans la boucle :

Code :
[== PHP ==]
//Connexion BDD
$db = cmsms()->GetDb();

//Requête pour lister les items de ListIt
$itemReq = 'SELECT i.item_id AS id
     , i.title AS title
     , i.active AS active
     , ic.category_id AS cat_id
     , ic.item_id AS item_id
     , c.category_id
     , c.category_name as cat_name
     , c.category_alias as cat_alias
     , fielddef.alias
  FROM cms_module_listit2ressources_item i
  INNER
  JOIN cms_module_listit2ressources_item_categories ic
    ON ic.item_id = i.item_id
  INNER
  JOIN cms_module_listit2ressources_category c
    ON c.category_id = ic.category_id
    '.$categorieDoc .'
  INNER JOIN `'.cms_db_prefix().'module_listit2ressources_fieldval` AS fieldval
    ON i.item_id = fieldval.item_id
  INNER JOIN `'.cms_db_prefix().'module_listit2ressources_fielddef` AS fielddef
    ON fieldval.fielddef_id = fielddef.fielddef_id
   '.$typeDoc .'
   '.$langueDoc .'
   '.$sourceDoc .'
WHERE i.active = 1 AND fielddef.alias="date"
'.$dateDoc.'
ORDER BY fieldval.value DESC';

//Execution de la requête
$items = $db->Execute($itemReq);


//On affiche les résultats...
while ($row = $items->FetchRow())
{
//Et dans la boucle on fait une seconde requête pour faire correspondre les champs 'custom'
$fieldReq = 'SELECT
        item.item_id AS id,
        item.active AS active,

        fieldval.item_id as fkItemId,
        fieldval.fielddef_id as fkfieldefId,
        fieldval.value as theVal,

        fielddef.fielddef_id,
        fielddef.name as valueTitle,
        fielddef.alias

        FROM `'.cms_db_prefix().'module_listit2ressources_item` AS item
        INNER JOIN `'.cms_db_prefix().'module_listit2ressources_fieldval` AS fieldval
            ON item.item_id = fieldval.item_id
        INNER JOIN `'.cms_db_prefix().'module_listit2ressources_fielddef` AS fielddef
            ON fieldval.fielddef_id = fielddef.fielddef_id

        WHERE fielddef.alias IN("langue", "source", "type") AND item.active=1 AND item.item_id='.$row['id'].'
        ';

}

Je ne détaille pas plus que ca puisque ca concerne un module qui n'est plus mis à jour sur la v2 de CMSMS, mais si quelqu'un est interessé je peux partager mon UDT complète.

Pour rappel l'idée était de créer un formulaire de recherche multi-critères pour ListIt2. (Bien que prévue par le module, je n'ai pas réussi à faire fonctionner correctement cette fonctionnalité, d'où l'UDT).
Sujet fermé


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)