2017-10-13 11 views
0

Je télécharge des images qui sont groupées par nom de projet.Pour afficher la dernière image téléchargée à la place du premier du groupe mysql par

Sur la première page, j'affiche un nom de projet avec une image de ce groupe.

Il affiche la première image téléchargée à partir de ce groupe d'images, et j'essaie que la dernière image téléchargée s'affiche.

Mon code est:

$dbhostname="localhost"; 
$dbusername="root"; 
$dbpassword=""; 
$db = "main_name"; 
$dbh = new PDO("mysql:host=$dbhostname;dbname=$db", $dbusername, $dbpassword); 

foreach($dbh->query("SELECT *,COUNT(*) 
FROM images 
GROUP BY project_name ORDER BY img_timestamp DESC") as $row) { 
echo "Project Name: " . $row['project_name']; 
echo "<br>"; 
echo $row['imagelink']; 
} 

Pour votre référence MySQL mon tableau est:

Table name: images 

id  project_name  imagelink  img_timestamp 
1  Travier    image1   (timestamp of upload) 
2  Travier    image2   (timestamp of upload) 
3  Travier    image3   (timestamp of upload) 
4  Travier    image4   (timestamp of upload) 
5  Collosion   image1   (timestamp of upload) 
6  Collosion   image2   (timestamp of upload) 
7  Collosion   image3   (timestamp of upload) 

aide sera appréciée :)

Répondre

0

Vous pouvez utiliser un SUBQUERY ET MAX pour que:

SELECT id, project_name, COUNT(*), 
MAX(img_timestamp) AS img_timestamp, 
(SELECT imagelink FROM images img WHERE img.project_name = images.project_name ORDER BY img_timestamp DESC LIMIT 1) AS imagelink 
FROM images GROUP BY project_name; 

S'il vous plaît gardez à l'esprit que l'utilisation de * se traduira par deux colonnes ayant le nom img_timestamp & imagelink une autre façon pourrait être l'utilisation d'un alias différent pour l'horodatage et imagelink.

+0

elle n'a pas été résolue. –

+0

Duh, évidemment vous avez besoin du 'imagelink' :-) Désolé à ce sujet, je vais changer la requête. –

+0

Merci, merci .. Merci beaucoup :) –

0

Essayez ci-dessous les requêtes les deux requêtes fonctionnent correctement.

SELECT * 
FROM images 
WHERE id IN (
    SELECT Max(id) 
    FROM images 
    GROUP BY project_name 
) 

OR 

SELECT * 
FROM images 
WHERE timestemp IN (
    SELECT Max(timestemp) 
    FROM images 
    GROUP BY project_name 
)