[PHP] Selectie maken uit datums

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste lezers,

Voor een script waarin veel statistische gegevens verwerkt moeten worden in een grafiek wil ik een selectie maken van verschillende datums voor onder in de X-as.

Ik zal het even verder uitleggen aan de hand van een theoretisch voorbeeld..

stel:

begindatum = 01-05-06 (2006-05-01)
einddatum = 24-05-06 (2006 - 05-24)

In deze periode tussen de 2 data zijn verschillende metingen gedaan. Om de X-as van mijn grafiek overzichtelijk te houden is het niet verstandig om alle 24 dagen weer te geven.

Het resultaat wat ik zou willen zien is:
de begindatum bij het eerste streepje
de begindatum + 7 dagen bij het 2de streepje (08-05-2006)
de begindatum + 14 dagen bij het 3de streepje (15-05-2006)
de begindatum + 21 dagen bij het 4de streepje (22-05-2006)
de eindatum (24-05-2006)

code:
1
2
   |---------|----------|--------|--------|
begin    08-05      15-05   22-05    eind


Begin en einddatum zijn natuurlijk variabel en ingegeven door de gebruiker.

Zowel in PHP als MySQL moet het kunnen, maar ik krijg deze opzet er niet uit. Wel begindatum +7 d.m.v. de INTERVAL en ADDDATE (DATE_ADD) functie, maar weet dan niet hoe ik die functie kan toepassen binnen die begin en einddatum met een scheiding van 7 dagen telkens.

Bij voorbaat dank!

Met vriendelijke groet,

Kevin

Acties:
  • 0 Henk 'm!

Verwijderd

Je moet data en presentatie apart houden...

Gewoon alle records selecteren en vervolgens in PHP iets doen:

PHP:
1
2
3
4
5
6
7
8
9
$cnt = 0;
for $i = 0 to $reccount
  if ($cnt % 7) == 0 {
    echo "."
    $cnt = 0;
  }
  $cnt ++;
  // de rest
}

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmm..die snap ik niet helemaal..
Als ik het goed lees hou je hier geen rekening met de datumformat maar tel je het aantal records wat er tussen ligt en maak je daar stappen van 7 in? Heb ik dat goed?

Stel dat de data verspreid ligt over 2 maanden?

[ Voor 43% gewijzigd door Verwijderd op 01-05-2006 14:35 ]


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Hoe zit het opgeslagen in je database :) ? In de vorm van een UNIX timestamp? Zonee, dan zou ik het zo op gaan slaan, dan zou je namelijk zoiets kunnen doen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$unix_stamp_start = ....;
$unix_stamp_end = ....;

echo $unix_stamp_start;

$i = $unix_stamp_start;
while($i < $unix_stamp_end) {
  echo date("Y-m-d", $i); /* Other formatting */
  $i += mktime(0, 0, 0, 0, 7, 0);
}

echo $unix_stamp_end;

DM!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zit er gewoon in als een DATE / TIME waarde..in dat geval moet het een lange INTEGER of een TIMESTAMP worden?

Ik denk dat het rekenen met UNIX timestamp wel een oplossing kan zijn inderdaad! Probleem alleen voor mij dat ik nog nooit met date/time conversies heb hoeven werken. en geen idee heb hoe dat in elkaar steekt en hoe ik van normale data, timestamps krijg om mee te rekenen.

[ Voor 102% gewijzigd door Verwijderd op 01-05-2006 16:03 ]


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
is gewoon een kwestie van de juiste functie toepassen :)
http://dev.mysql.com/doc/...e-and-time-functions.html
Pagina: 1