Query geeft verkeerd resultaat met datums
Ik heb een probleem met mijn query:
Ik wil het resultaat als de volgende:
Januari
12-01-2011
19-01-2011
26-01-2011
Februari
02-02-2011
09-02-2011
16-02-2011
23-02-2011
Nu de code hieronder, geeft het volgende resultaat:
Januari
23-02-2011
23-02-2011
23-02-2011
Februari
23-02-2011
23-02-2011
23-02-2011
23-02-2011
De laatste datum "23-02-2011" wordt herhaald.
Hieronder vind je mijn query:
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
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
<?php
$sql = "SELECT *
FROM (".AGENDA_TABLE." a)
LEFT JOIN ".TRAINING_TABLE." t ON (a.agenda_name = t.training_name)
WHERE t.training_id = $training_id
";
$result = $site_db->query($sql);
$num_rows = $site_db->get_numrows($result);
if (!$num_rows) {
$training_data = "No geen data";
}
else {
$set = array();
while ($agenda_row = $site_db->fetch_array($result)){
$agenda_date = date("d-m-Y", $agenda_row['agenda_date']);
$agenda_month = date("F", $agenda_row['agenda_date']);
$set[$agenda_month][] = $agenda_row;
}
foreach ($set as $agenda_month => $records) {
$training_data .= "<span class=\"title300\">".$agenda_month."<br /></span>";
foreach ($records as $value) {
$training_data .= "".$agenda_date."<br />";
}
}
}
$site_template->register_vars("training_data", $training_data);
unset($training_data);
?>
$sql = "SELECT *
FROM (".AGENDA_TABLE." a)
LEFT JOIN ".TRAINING_TABLE." t ON (a.agenda_name = t.training_name)
WHERE t.training_id = $training_id
";
$result = $site_db->query($sql);
$num_rows = $site_db->get_numrows($result);
if (!$num_rows) {
$training_data = "No geen data";
}
else {
$set = array();
while ($agenda_row = $site_db->fetch_array($result)){
$agenda_date = date("d-m-Y", $agenda_row['agenda_date']);
$agenda_month = date("F", $agenda_row['agenda_date']);
$set[$agenda_month][] = $agenda_row;
}
foreach ($set as $agenda_month => $records) {
$training_data .= "<span class=\"title300\">".$agenda_month."<br /></span>";
foreach ($records as $value) {
$training_data .= "".$agenda_date."<br />";
}
}
}
$site_template->register_vars("training_data", $training_data);
unset($training_data);
?>
kan iemand mijn query corrigeren svp?
Alvast bedankt,
SZ
En maak dit van regel 30:
$training_data .= date("d-m-Y", $value)."<br />";
Ik kreeg deze foutmelding:
date() expects parameter 2 to be long...
Dan heb ik deze code geprobeerd:
$training_data .= "".$value[3]."<br />";
Resultaat:
Januari
1295910588
1295911991
1295912079
Februari
1295912173
1295912315
1295912315
1295912315
Dus ik dacht dat ik er bijna ben. Daarna heb ik deze code gebruikt:
$training_data .= date("d-m-Y", $value[3])."<br />";
Resultaat:
Januari
24-01-2011
24-01-2011
24-01-2011
Februari
24-01-2011
24-01-2011
24-01-2011
24-01-2011
24-01-2011 is helemaal verkeerd. Het hoort niet bij die reeks datums die ik verwacht.
Echo $value eens. Wat zit daar in?
ArrayArrayArrayArrayArrayArrayArray
?
Je kan dat toch allemaal in die while() afhandelen.
Dan zou het voor jou misschien ook wat minder verwarrend zijn.
Toevoeging op 25/01/2011 12:36:02:
Kris Peeters op 25/01/2011 12:33:17:
Waarom eigenlijk die foreach ($set as $agenda_month => $records) {
?
Je kan dat toch allemaal in die while() afhandelen.
Dan zou het voor jou misschien ook wat minder verwarrend zijn.
?
Je kan dat toch allemaal in die while() afhandelen.
Dan zou het voor jou misschien ook wat minder verwarrend zijn.
Mee eens.
Ik kan wel de reeks datums laten tonnen, maar om de naam van de maand voor elke datums krijgen heb ik alles geprobeerd. Het is mij nog niet gelukt.
Kun jij svp die blok WHILE voor mij aanpassen?
Alvast bedankt
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
else {
$hlp = '';
while ($agenda_row = $site_db->fetch_array($result)){
$agenda_month = date("F", $agenda_row['agenda_date']);
if($hlp != $agenda_month) {
$hlp = $agenda_month;
$training_data .= '<span class="title300">' . $agenda_month . '<br /></span>';
}
$training_data .= date("d-m-Y", $agenda_row['agenda_date']) . '<br />';
}
}
$site_template->register_vars("training_data", $training_data);
unset($training_data);
?>
else {
$hlp = '';
while ($agenda_row = $site_db->fetch_array($result)){
$agenda_month = date("F", $agenda_row['agenda_date']);
if($hlp != $agenda_month) {
$hlp = $agenda_month;
$training_data .= '<span class="title300">' . $agenda_month . '<br /></span>';
}
$training_data .= date("d-m-Y", $agenda_row['agenda_date']) . '<br />';
}
}
$site_template->register_vars("training_data", $training_data);
unset($training_data);
?>
Bijna precies wat ik van plan was te posten :)
Groetjes
SZ
Ook kent mysql gewoon datum en tijd functies: mysql date and time functions veel handiger én beter dan geklooi in php.
Omdat ik een heel lange lijst heb gekregen (Agenda voor het hele jaar), wil ik mijn lijst delen in 4 kolommen.
Dus ik heb deze code gebruikt:
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
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
<?php
else {
$rows= (15) ;
$sx = 0;
$training_data = "<div style=\"float:left;\">";
$hlp = '';
while ($agenda_row = $site_db->fetch_array($result)){
$agenda_month = date("F", $agenda_row['agenda_date']);
$training_data .= ($sx%$rows == 0) ? "</div>":"";
$training_data .= ($sx%$rows == 0) ? "<div style=\"float:left\">":"";
if($hlp != $agenda_month) {
$hlp = $agenda_month;
$training_data .= '<span class="title300">' . $agenda_month . '<br /></span>';
}
$training_data .= date("d-m-Y", $agenda_row['agenda_date']) . '<br />';
$sx++;
}
}
$training_data .= "</div style=\"clear:both\">\n";
$site_template->register_vars("training_data", $training_data);
unset($training_data);
?>
else {
$rows= (15) ;
$sx = 0;
$training_data = "<div style=\"float:left;\">";
$hlp = '';
while ($agenda_row = $site_db->fetch_array($result)){
$agenda_month = date("F", $agenda_row['agenda_date']);
$training_data .= ($sx%$rows == 0) ? "</div>":"";
$training_data .= ($sx%$rows == 0) ? "<div style=\"float:left\">":"";
if($hlp != $agenda_month) {
$hlp = $agenda_month;
$training_data .= '<span class="title300">' . $agenda_month . '<br /></span>';
}
$training_data .= date("d-m-Y", $agenda_row['agenda_date']) . '<br />';
$sx++;
}
}
$training_data .= "</div style=\"clear:both\">\n";
$site_template->register_vars("training_data", $training_data);
unset($training_data);
?>
Ik kreeg wel vier kolommen, maar ik wil eigenlijk dat de kolom 1 begint met Januari, de tweede met April, de derde met Juli en de vierde met Oktober.
Is dat mogelijk?
Alvast bedankt,
SZ
S Z op 25/01/2011 21:18:40:
Ik kreeg wel vier kolommen, maar ik wil eigenlijk dat de kolom 1 begint met Januari, de tweede met April, de derde met Juli en de vierde met Oktober.
Is dat mogelijk?
Is dat mogelijk?
Ja hoor, dan moet je vier kolommen maken van drie blokjes hoog en 1 blokje breed. Die vier naast elkaar alignen en erin dan de drie maandenblokjes.
Moet ik dat met PHP doen???? of praat je over html?
Ik praat over HTML maar je moet het met PHP maken. Je moet eerst een extra div aanmaken en dan om de drie maanden die div afsluiten en weer een nieuwe aanmaken. Breedte van die div waarin de drie maanden staan met CSS opgeven (bijv. style="float: left; width: 100px" maar nog mooier met een class die je aan die div meegeeft en dan daarnaar verwijzen in een CSS bestand).
Met html is het makkelijk om te maken, maar het probleem zit in PHP.
Volgens mij heb jij niet gekeken in de code hierboven.
Ik wil de 4 kolommen met PHP krijgen.