Query geeft verkeerd resultaat met datums

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sara Z

Sara Z

25/01/2011 11:53:22
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);
?>


kan iemand mijn query corrigeren svp?

Alvast bedankt,
SZ
 
PHP hulp

PHP hulp

25/11/2024 08:06:51
 
- SanThe -

- SanThe -

25/01/2011 12:04:19
Quote Anchor link
Regel 19 kan weg.

En maak dit van regel 30:
$training_data .= date("d-m-Y", $value)."<br />";
 
Sara Z

Sara Z

25/01/2011 12:17:56
Quote Anchor link
Bedankt voor je reactie.

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.
 
- SanThe -

- SanThe -

25/01/2011 12:23:11
Quote Anchor link
Echo $value eens. Wat zit daar in?
 
Sara Z

Sara Z

25/01/2011 12:30:37
Quote Anchor link
Ik krijg de volgende te zien:

ArrayArrayArrayArrayArrayArrayArray
 
Kris Peeters

Kris Peeters

25/01/2011 12:33:17
Quote Anchor link
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.
 
- SanThe -

- SanThe -

25/01/2011 12:35:03
Quote Anchor link
$training_data .= date("d-m-Y", $value['agenda_date'])."<br />";

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.


Mee eens.
 
Sara Z

Sara Z

25/01/2011 12:52:13
Quote Anchor link
Ik ben ook met jullie eens, De vraag nu is: hoe moet ik dat doen?

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
 
- SanThe -

- SanThe -

25/01/2011 13:09:11
Quote Anchor link
Vanaf de else...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>
 
Kris Peeters

Kris Peeters

25/01/2011 13:13:14
Quote Anchor link
Bijna precies wat ik van plan was te posten :)
 
Sara Z

Sara Z

25/01/2011 13:18:18
Quote Anchor link
Mijn dank is groot SanThe en Kris. Perfect gedaan. Respect voor jullie kennis en hulp.
Groetjes
SZ
 

25/01/2011 16:44:38
Quote Anchor link
Let je wel op dat je het veld in de database van het juiste type hebt? DATETIME / DATE / TIME / whatever.
Ook kent mysql gewoon datum en tijd functies: mysql date and time functions veel handiger én beter dan geklooi in php.
 
Sara Z

Sara Z

25/01/2011 21:18:40
Quote Anchor link
Jij hebt gelijk Karl. Dank je wel voor de tips.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);
?>


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
 
The Force

The Force

25/01/2011 21:38:55
Quote Anchor link
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?


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.
 
Sara Z

Sara Z

25/01/2011 21:46:05
Quote Anchor link
Bedankt The Force voor je reactie.

Moet ik dat met PHP doen???? of praat je over html?
 
The Force

The Force

25/01/2011 21:54:44
Quote Anchor link
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).
 
Sara Z

Sara Z

25/01/2011 22:00:56
Quote Anchor link
Hoi The Force,
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.