[PHP/MySQL] Aan de hand van datum beslissing nemen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • C.44
  • Registratie: Juni 2001
  • Laatst online: 05-08-2020

C.44

TurboCharged Supra Driver

Topicstarter
Ik heb een vraagje:

Ik heb een tabel in mysql waarin ik een kolom heb (type DATETIME) waarin data terecht komen (doh) Nu wil ik dat bijvoorbeeld data van de laatste 12 uur een ander gegeven meekrijgen in een PHP script:

dit heb ik daar zelf al voor bedacht:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
// even kijken hoe oud het topic is

if ($topic["topic_lastedited"] > $maxdate)
{
    // topic is jong genoeg
    echo "<td width=2%>[img]",[/img]</td>";
}
else
{
    // topic is al oud
    echo "<td width=2%>[img]",[/img]</td>";
}


hierbij is $imgdir_icons een folderverwijzing, $(in)active_topic een gif verwijzing.

$topic["topic_lastedited"] is de kolom van het type DATETIME

en $maxdate bevat

PHP:
1
$maxdate = date("Y-m-d G:i:s", mktime( date('H')-12) );


Toch maakt het ding geen onderscheid tussen en toch zijn er topics jonger en ouder dan 12 uur...

Hebben jullie enig id waar ik dit zou moeten zoeken ?

Toyota Supra 3.0i Turbo Targa in Panther Black Mica - 300D || 30D || 10-20 || 50mm 1.8 mk1 || 18-55 || 17-85 || 75-300 || Giottos || Manfrotto || Cullmann || Kenko || Hoya


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 20:50
Sla je die timestamp in MySql op als een MySql-timestamp of een Unix-timestamp. En als je het opslaat als een MySql-timestamp convert je deze dan wel goed naar een Unix-timestamp (die nodig is voor mktime & co).?

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Sybr_E-N:
Sla je die timestamp in MySql op als een MySql-timestamp of een Unix-timestamp. En als je het opslaat als een MySql-timestamp convert je deze dan wel goed naar een Unix-timestamp (die nodig is voor mktime & co).?
C.44:
(...) waarin ik een kolom heb (type DATETIME) (...)
DATETIME dus. Niet timestamp.
Hebben jullie enig id waar ik dit zou moeten zoeken ?
Kijk eens naar de functies van MySQL om met data te rekenen

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • C.44
  • Registratie: Juni 2001
  • Laatst online: 05-08-2020

C.44

TurboCharged Supra Driver

Topicstarter
Sybr_E-N schreef op 30 maart 2003 @ 17:51:
Sla je die timestamp in MySql op als een MySql-timestamp of een Unix-timestamp. En als je het opslaat als een MySql-timestamp convert je deze dan wel goed naar een Unix-timestamp (die nodig is voor mktime & co).?
ik sla gewoon $currentdate op naar die kolom. $currentdate bevat dan:

PHP:
1
$currentdate = date("Y-m-d G:i:s");


verder doe ik er nix mee

De $maxdate geeft ook netjes de uitkomst die ut zou moeten geven.

dus in feite komt er dat te staan (ik neem wat willekeurige data)
PHP:
1
2
3
4
5
6
7
8
9
if (2003-03-30 14:58:10 > 2003-03-30 05:58:10)
{
echo "joepie";
}

else
{
echo "notsogood";
}

Toyota Supra 3.0i Turbo Targa in Panther Black Mica - 300D || 30D || 10-20 || 50mm 1.8 mk1 || 18-55 || 17-85 || 75-300 || Giottos || Manfrotto || Cullmann || Kenko || Hoya


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Je vergeet dat als PHP een string gebruikt in een integer comparison, de integer genomen wordt aan het begin van de string totdat een non-integer karakter tegengekomen wordt. In dit geval is dat dus het streepje ('-') na 2003. Feitelijk wordt dus gekeken of 2003 groter is dan 2003. Nee, dus.

Nogmaals: los dit op met MySQL, niet met PHP.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • C.44
  • Registratie: Juni 2001
  • Laatst online: 05-08-2020

C.44

TurboCharged Supra Driver

Topicstarter
drm schreef op 30 March 2003 @ 18:05:
Je vergeet dat als PHP een string gebruikt in een integer comparison, de integer genomen wordt aan het begin van de string totdat een non-integer karakter tegengekomen wordt. In dit geval is dat dus het streepje ('-') na 2003. Feitelijk wordt dus gekeken of 2003 groter is dan 2003. Nee, dus.

Nogmaals: los dit op met MySQL, niet met PHP.
Ey dat vat ik :) thanks, ik kan weer verder met prutsen :) maar zou het niet een mogelijkheid zijn om gewoon de - en : er vanaf te strippen ?

[ Voor 9% gewijzigd door C.44 op 30-03-2003 18:09 ]

Toyota Supra 3.0i Turbo Targa in Panther Black Mica - 300D || 30D || 10-20 || 50mm 1.8 mk1 || 18-55 || 17-85 || 75-300 || Giottos || Manfrotto || Cullmann || Kenko || Hoya


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Kan ook, maar dan doe je overdreven moeilijk.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • C.44
  • Registratie: Juni 2001
  • Laatst online: 05-08-2020

C.44

TurboCharged Supra Driver

Topicstarter
drm schreef op 30 March 2003 @ 18:13:
Kan ook, maar dan doe je overdreven moeilijk.
hehe, is my middlename ;)

Thanks for thinking along :)

Toyota Supra 3.0i Turbo Targa in Panther Black Mica - 300D || 30D || 10-20 || 50mm 1.8 mk1 || 18-55 || 17-85 || 75-300 || Giottos || Manfrotto || Cullmann || Kenko || Hoya


Acties:
  • 0 Henk 'm!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 16-09 09:38

Goodielover

Only The Best is Good Enough.

Kan je beide dates niet beter omzetten naar een string met een vast formaat incl leading zero's. Ik heb geen idee hoe dat moet in PHP, want die taal spreek ik niet, maar daar kan je wel uitkomen.

drm, hoe wil je dit oplossen in sql. Wil je een if-statement opnemen in de select-clause of zit je te denken aan twee statements voor de twee gevallen?

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

IF is niet nodig, want een boolean vergelijking levert gewoon een 1 of 0 op in MySQL. Dus:
SQL:
1
2
3
4
5
6
SELECT
   DATE_ADD(
     datumveld, 
     INTERVAL 12 HOUR
   ) > NOW ()  
      AS is_less_than_twelve_hours_ago

even een huge naam voor de duidelijkheid ;)

Vervolgens evalueert '0' in PHP in een boolean situatie (if) false op, en kun je dus gewoon voor elk record
PHP:
1
2
3
if ( $record [ 'is_less_than_twelve_hours_ago' ] ) {
   // ...
}
gebruiken :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1