[PHP/MySQL] query met opeenvolgende rijen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • nimm2
  • Registratie: Juni 2001
  • Laatst online: 08-08 16:23
ik heb een forum met een stuk of 35 gebruikers
en nu wil ik een statistieken overzichtje maken. ik wil een overzicht hoeveel berichten iemand heeft geplaatst per week.

deze query gebruik ik daarvoor:

code:
1
2
3
4
5
SELECT WEEK( datum )  AS week, COUNT( datum )
FROM reactie 
WHERE username =  "wim" 
GROUP  BY week 
ORDER  BY datum ASC


nu is het zo, dat wanneer een gebruiker een week niet heeft ingelogd, er geen gegevens over worden weergegeven. oftewel: er komt een lijst uit:

3 93
4 71
6 70
7 54
8 73
9 27
12 20
13 16
14 72
15 103
18 135

ik wil echter met deze query ervoor zorgen dat er een lijst wordt weergegeven die de weeknummers, het eerste getal, opeenvolgend weergeeft, in plaats van met de gaten die er nu tussen zitten. Weet iemand hoe dit kan worden opgelost in MySQL of anders op een eenvoudige manier in PHP?

even verduidelijkend: ik zou willen dat MySQL de 'gaten' in de lijst met nummers kan opvullen

[ Voor 7% gewijzigd door nimm2 op 09-05-2003 18:38 ]


Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
Zet de resultaten van je query in een array, en maak vervolgens een loopje voor week 1 t/m 52 (bijvoorbeeld) waar je de data uit je array haalt.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Acties:
  • 0 Henk 'm!

  • nimm2
  • Registratie: Juni 2001
  • Laatst online: 08-08 16:23
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$result = mysql_query("
SELECT WEEK(datum) AS week, COUNT(datum) AS aantal, username 
FROM reactie WHERE username='$user' GROUP BY week ORDER BY datum ASC LIMIT 0, 30"
,$db);


 
$row = mysql_fetch_row ($result); 


 
echo "begin<br><table>"; 
for ($i=0;$i < mysql_numrows($result);$i++){ 
  echo "<tr><td>". mysql_result($result,$i,'week')." ".mysql_result($result,$i,'aantal')."</td></tr>\r\n"; 
} 
echo "</table>\r\n";



ik heb dit nu geschreven.
helaas is het zo dat er nog steeds gaten tussen zitten. de output is gelijk aan mijn start bericht.

weet er iemand hoe de rijen die niet bestaan ook worden weergegeven, en dan met waarde 0
?

Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
Kijk of je hier iets mee kan:
PHP:
1
2
3
4
5
6
for ($i=0;$i < mysql_numrows($result);$i++){ 
  $aantallen[mysql_result($result,$i,'week')] = mysql_result($result,$i,'aantal'); 
} 
for ($i = 1; $i <=52; $i++) {
  echo "<tr><td>". $i ." ". $aantallen[$i]."</td></tr>\r\n"; 
}
Maar probeer vooral te snappen wat dit doet.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Acties:
  • 0 Henk 'm!

  • nimm2
  • Registratie: Juni 2001
  • Laatst online: 08-08 16:23
oke, de resultaten worden weggezet in een andere array

en het werkt! :)

1
2 105
3 93
4 71
5
6 70
7 54
8 73
9 27
10 37
11 80
12 20
13 16
14 72
15 103
16 103
17 104
18 135
19
20
21
22
23
24


tnx