Vos requêtes n'ont aucun sens. Vous sélectionnez d'abord les dates DISTINCT (ignorez l'heure) à partir des données. Ensuite, pour chaque date, vous... sélectionnez toutes les données pour cette date ?
Pourquoi ne lancez-vous pas une seule requête
SELECT *, DATE(added) as DateNoTime
FROM tb_videos
ORDER BY added desc
Si vous ne voulez que 5 dates et que le tableau est grand, il y a deux possibilités.
1, il n'y a jamais de lacunes dans les dates, vous pouvez utiliser
SELECT *, DATE(added) as DateNoTime
FROM tb_videos
WHERE added >= ADDDATE(CURDATE(), interval -4 days)
ORDER BY added desc
2, s'il peut y avoir des lacunes, par ex. rien pour hier donc il doit montrer les 5 derniers jours qui ont des enregistrements
SELECT *, DATE(added) as DateNoTime
FROM (
select min(DateNoTime) as MinDate
from
(
select DATE(added) as DateNoTime
FROM tb_videos
order by DateNoTime desc
limit 5
) x) y, tb_videos
WHERE added >= y.MinDate
ORDER BY added desc
Cela vous donne toutes les données. En PHP, gardez une trace de DateNoTime. Chaque fois que cela change, vous êtes à une date différente, ce qui vous aurait déjà amené à lancer une autre requête. Sinon, le code ne devrait changer que très peu.
Code PHP décoché
$result = mysql_query('
SELECT *, DATE(added) as DateNoTime
FROM (
select min(DateNoTime) as MinDate
from
(
select DATE(added) as DateNoTime
FROM tb_videos
order by DateNoTime desc
limit 5
) x) y, tb_videos
WHERE added >= y.MinDate
ORDER BY added desc
');
$prevdate = NULL;
foreach($result as $rst)
{
if($prevdate!=$rst=>DateNoTime) {
// do something, like printing out a header for each new date
$prevdate=$rst=>DateNoTime;
}
// do something with the record
}