Page views in while lus
Ik ben bezig om een een pagina te maken waarop je kan zien hoe vaak de website is bezocht per maand per jaar etc. Eigenlijk ging alles heel voorspoedig totdat is de gegevens netjes in een tabel wou zetten. Ik heb alle gegevens in een while lus staan, maar als ik dit in een tabel zet komt alles onder elkaar en als ik een <th> tag gebruik wordt deze ook telkens herhaald.
Wat ik nu krijg is:
maand|januari|1|maand|februari|8|
of
januari|1|
februari|2|
Wat ik graag wil is:
maand|januari|februari|maart|april|
views| 6 | 9 | 19 | 0 |
Dit is even een voorbeeld met 2 rijen, in de toekomst kunnen het er meer zijn. Weet iemand hoe ik dit kan bereiken? Misschien is er een andere oplossing dat een while lus??
Hier is me code, de tabellen zijn al niet meer goed door al het testen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
if($_GET['year']){
$year = $_GET['year'];
$query = mysql_query("SELECT MONTH(cdate) AS cdate,url, COUNT(views) AS views FROM page_recs WHERE YEAR(cdate)=$year GROUP BY MONTH(cdate)");
echo '<table border="1">
<tr><th>maand</th>';
while ($views = mysql_fetch_assoc($query))
{
//switch voor alle maanden voorbeeld(maand is 01 dan wordt januari weergegeven)
switch ($views['cdate'])
{
case 01:
$month = "januari";
break;
case 02:
$month = "februarie";
break;
case 03:
$month = "maart";
break;
case 04:
$month = "april";
break;
case 05:
$month = "mei";
break;
case 06:
$month = "juni";
break;
case 07:
$month = "julie";
break;
case 08:
$month = "augustus";
break;
case 09:
$month = "september";
break;
case 10:
$month = "oktober";
break;
case 11:
$month = "november";
break;
case 12:
$month = "december";
break;
}//einde switch
echo '<td><a href="cms.index.php?pagina=show_recs&month='.$views['cdate'].'">'.$month.'</a></td></tr>';
echo '<tr><td>'.$views['views'].'</td></tr>';
}
echo'</table>';
}
?>
if($_GET['year']){
$year = $_GET['year'];
$query = mysql_query("SELECT MONTH(cdate) AS cdate,url, COUNT(views) AS views FROM page_recs WHERE YEAR(cdate)=$year GROUP BY MONTH(cdate)");
echo '<table border="1">
<tr><th>maand</th>';
while ($views = mysql_fetch_assoc($query))
{
//switch voor alle maanden voorbeeld(maand is 01 dan wordt januari weergegeven)
switch ($views['cdate'])
{
case 01:
$month = "januari";
break;
case 02:
$month = "februarie";
break;
case 03:
$month = "maart";
break;
case 04:
$month = "april";
break;
case 05:
$month = "mei";
break;
case 06:
$month = "juni";
break;
case 07:
$month = "julie";
break;
case 08:
$month = "augustus";
break;
case 09:
$month = "september";
break;
case 10:
$month = "oktober";
break;
case 11:
$month = "november";
break;
case 12:
$month = "december";
break;
}//einde switch
echo '<td><a href="cms.index.php?pagina=show_recs&month='.$views['cdate'].'">'.$month.'</a></td></tr>';
echo '<tr><td>'.$views['views'].'</td></tr>';
}
echo'</table>';
}
?>
Dit gaat hem naar mijn idee niet worden, misschien heeft iemand een idee!!
Alvast bedankt!
Gewijzigd op 09/11/2012 00:52:56 door Tim S
Waarom gebruik je hier een switch?
Om de maand weer te geven, anders staat er als maand 01 of bijvoorbeeld 12 nu staat er januari of december
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$months = array('januari', 'februari', 'maart', ...);
$month = $months[views['cdate']];
?>
$months = array('januari', 'februari', 'maart', ...);
$month = $months[views['cdate']];
?>
Ook heb ik zitten denken om de tabel uit een array te halen, en dan foreach te gebruiken, maar dan zit ik nog steeds met de <th> tag. Hier kom ik even niet uit...