Grouper des id par date

Statut
N'est pas ouverte pour d'autres réponses.
A

anon23T

ex membre
Bonsoir. :)

J'aimerai grouper des id par date... (exemple: 5 id le 17/01/2005, 7 le 18,...). J'utilise donc comme requête la suivante:

Code:
$sql = "select * from links group by jour order by id desc";
Il regroupe bien par jour et tout mais le problème c'est qu'il n'affiche QU'UNE SEULE id par jour, et non touts...

Que faire ? Merci. :)
 

zoheir

cvm.mangaleet()
tu peux utiliser un WHERE tout simplement
c'est difficile de dire comme cela sans savoir la ou les structures de tes tables
 
1er
OP
A

anon23T

ex membre
Code:
<table width="600px" class="taff">
<?
mysql_connect("localhost", "pass", "");
mysql_select_db("db");

$sql = ("SELECT * FROM links GROUP BY jour ORDER BY id DESC");

$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());


while($data = mysql_fetch_array($req)) {
?>
<tr>
<td width="80px"></td>
<td width="22px"></td>
<td width="500px" class="ligne" style="border-bottom: 2px solid #000000;font-weight:bold;font-size:16px;text-align:right;"><? echo $data['jour']; ?></td></tr>
<tr>
<td width="80px" class="ligne"><? echo $data['pseudo']; ?></td>
<td width="22px" class="ligne"></td>
<td width="500px" class="ligne"><a href="<? echo $data['lien']; ?>" target="_blank"><? echo $data['texte']; ?></a></td>
</tr>
<?
}
?>
</tr>
</table>
Enfin bref, même sans table, j'ai quand même ce prob. ;)
 

zoheir

cvm.mangaleet()
non jparlais de ta DB :)

comme je te l'ai dit utilise un WHERE ca devrait le faire

ou bien un GROUP BY .. HAVING.., ca dépend vraiment de ta table
 
1er
OP
A

anon23T

ex membre
Ca servirait à rien avec ce que je voudrai faire:

 
1er
OP
A

anon23T

ex membre
Puisque je dois grouper toutes les IDs par jour. ;)
 
S

seeya

ex membre
rien à voir je crois.

le truc est de trier ta requete par date et ensuite ton code qui affiche le "tableau" doit faire un "saut" à chaque nouvelle date rencontrée ... c'est la meme chose dans tous les languages :wink:

EDIT ---

et en effet filtrer sur l'id de ton "user" pour n'avoir que les records le concernant.
 

zoheir

cvm.mangaleet()
Spo0n a dit:
Puisque je dois grouper toutes les IDs par jour. ;)
SELECT * from links WHERE champ_date = date ORDER BY id DESC

pq ca ne marcherais pas?
 
S

seeya

ex membre
cvmz a dit:
Spo0n a dit:
Puisque je dois grouper toutes les IDs par jour. ;)
SELECT * from links WHERE champ_date = date ORDER BY id DESC

pq ca ne marcherais pas?
ah bhen, j'aurais dit le contraire:

Code:
SELECT * from links WHERE id = XX ORDER BY champ_date DESC
puis le code de présentation doit gérer le changement de date (et faire une jolie séparation).

car faire une requete par date, ça risque d'etre assez lourd quand-meme ...
 
1er
OP
A

anon23T

ex membre
Je comprends pas pourquoi tu fais un ID = xx. :pfiou:
 

zoheir

cvm.mangaleet()
Spo0n a dit:
Je comprends pas pourquoi tu fais un ID = xx. :pfiou:
apparemment tu veux regrouper toutes les lignes de ton champ avec une date précise c'est bien ça ?

donc l'id n'est pas connu

donc ma requete devrait fonctionner
 
S

seeya

ex membre
Spo0n a dit:
Je comprends pas pourquoi tu fais un ID = xx. :pfiou:
bien, sur l'image que tu présentes, apparemment ce sont les records propres à 1 utilisateur, tout simplement. Pourquoi ramener les enregistrements de tous les users si ce n'est que pour présenter ceux d'1 seul (spoOn sur la photo)?

maintenant, je n'ai peut etre pas bien saisi ce que tu voulais?..
 
1er
OP
A

anon23T

ex membre
Bon...
Chaque jour, je rajoute des liens. Chaque lien a une ID. Et j'aimerai regrouper ces IDs par date.
 
S

seeya

ex membre
Spo0n a dit:
Bon...
Chaque jour, je rajoute des liens. Chaque lien a une ID. Et j'aimerai regrouper ces IDs par date.
ok ... bon, on retire le parametre "user".

mais l'astuce reste la meme.

a vrai dire, tu t'en fous de "regrouper" par date!

ta requete doit simplement etre triées par date, de la plus récente à la plus ancienne (comme sur la photo).

une seule requete suffit, sans group by même; je m'explique:

une fois que tu auras le jeu d'enregistrements (donc les liens triés par date), ton code va parcourir chaque enregistrement, un par un (movenext). à chque fois qu'un changement de date est detecté, avant d'afficher une ligne standard (spoOn - lien -bla bla), ton code va d'abord afficher la date avec un bon gros jolie trait pour bien séparer.

ok?

en fait, tu dois plus regarder au niveau de ton code qu'au niveau de ta requete, qui finallement est toute simple en somme.
 

zoheir

cvm.mangaleet()
[THEO a dit:
]
Spo0n a dit:
Bon...
Chaque jour, je rajoute des liens. Chaque lien a une ID. Et j'aimerai regrouper ces IDs par date.
ok ... bon, on retire le parametre "user".

mais l'astuce reste la meme.

a vrai dire, tu t'en fous de "regrouper" par date!

ta requete doit simplement etre triées par date, de la plus récente à la plus ancienne (comme sur la photo).

une seule requete suffit, sans group by même; je m'explique:

une fois que tu auras le jeu d'enregistrements (donc les liens triés par date), ton code va parcourir chaque enregistrement, un par un (movenext). à chque fois qu'un changement de date est detecté, avant d'afficher une ligne standard (spoOn - lien -bla bla), ton code va d'abord afficher la date avec un bon gros jolie trait pour bien séparer.

ok?

en fait, tu dois plus regarder au niveau de ton code qu'au niveau de ta requete, qui finallement est toute simple en somme.
le mieux c'est de trier par ta requete, pcq ton opération sollicitera trop la DB
 
S

seeya

ex membre
cvmz a dit:
[THEO a dit:
]
Spo0n a dit:
Bon...
Chaque jour, je rajoute des liens. Chaque lien a une ID. Et j'aimerai regrouper ces IDs par date.
ok ... bon, on retire le parametre "user".

mais l'astuce reste la meme.

a vrai dire, tu t'en fous de "regrouper" par date!

ta requete doit simplement etre triées par date, de la plus récente à la plus ancienne (comme sur la photo).

une seule requete suffit, sans group by même; je m'explique:

une fois que tu auras le jeu d'enregistrements (donc les liens triés par date), ton code va parcourir chaque enregistrement, un par un (movenext). à chque fois qu'un changement de date est detecté, avant d'afficher une ligne standard (spoOn - lien -bla bla), ton code va d'abord afficher la date avec un bon gros jolie trait pour bien séparer.

ok?

en fait, tu dois plus regarder au niveau de ton code qu'au niveau de ta requete, qui finallement est toute simple en somme.
le mieux c'est de trier par ta requete, pcq ton opération sollicitera trop la DB
l'ideal etant meme de construire le code HTML dans la requete ... mais bon, je vais pas m'eterniser sur le sujet :wink:

sinon, stocker dans un tableau et refermer direct le recordset. hop, plus de connexion à la db ... en contre partie, faudra bcp plus de mémoire ...

chacun son truc. l'ideal etant quand meme d'avoir une procedure stockée (connais pas l'equivalent en MySQL) qui retourne directement le code HTML; ça c'est nickel mais demande un travail plus ardu.

yop.

bonne prog' :cool:
 
1er
OP
A

anon23T

ex membre
Ma méthode au départ est la plus simple, mais je ne comprends pas pourquoi il ne met pas TOUTES les ID triées par date. =/
 

Bartdude

Touriste
parce que dans ta requête de départ, tu utilises un GROUP BY... c'est à ca que ca sert le group by. Si tu veux uniquement trier sur 1 champ donné , c bêtement ta clause order by qui sert !

Le plus simple selon moi c'est comme le dit theo, de sélectionner tes trucs triés par date, et dans ta boucle d'affichage, tu fait ce qu'il faut (mettre une séparation, en l'occurence) quand tu sautes d'une date à l'autre.
 

MbK_

Etudjant
si je comprends bien tu veux afficher tes champs par date?

tu enregistre le timestamp et tu le classe par grandeur...

j'ai mal compris?
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut