Je souhaite afficher jusqu'à 3 images attribuées à l'utilisateur connecté dans une table de base de données. J'ai écrit la requête MySQL suivante:
$db = JFactory::getDBO();
//GET GALLEERY IMAGES
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__mcloud_mgallery');
$query->where('model_id = '.$userid);
$query->order('id');
$db->setQuery($query);
$rows = $db->loadObject();
$gallery_img = $rows->file;
Si j'écho $gallery_img
Cela ne produit qu'une seule des images, si je regarde dans la table de la base de données (pour l'utilisateur connecté), 3 images sont attribuées à cet utilisateur:
id file model_id
389 10_burgers_food.jpeg 941
390 14_bridge.jpeg 941
391 test_imag.jpeg 941
Comment puis-je afficher les 3 images s'il n'y a qu'une seule variable $gallery_img
?
Le problème, c'est que vous utilisez loadObject()
qui ne renverra jamais qu'un résultat. Si vous voulez plusieurs, vous devrez utiliser loadObjectList()
, comme ceci:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*')
->from($db->qn('#__mcloud_mgallery'))
->where($db->qn('model_id') . ' = ' . $userid)
->order('id');
$db->setQuery($query);
$rows = $db->loadObjectList();
foreach ($rows as $row)
{
echo '<p>' . $row->file . '</p>';
}
Au cas où il y aurait jamais plus de 3 images dans la base de données, vous pouvez également limiter les résultats de la requête à 3, comme ceci:
$query->select('*')
->from($db->qn('#__mcloud_mgallery'))
->where($db->qn('model_id') . ' = ' . $userid)
->order('id')
->setLimit('3'); // <-- Here
$db->setQuery($query);
J'espère que cela t'aides