Toon posts:

Met tijd rekenen in PHP

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een database met daarin allemaal items die op een site vertoond moeten worden.
Ik heb in die MySQL DB een collumn zitten met daarin een timestamp van de wanneer het is toegevoegd.

Ik wil dus die items op een site vertonen, en dan wil ik, als de dit item niet langer dan een maand geleden is geplaatst, het woordje "nieuw" erbij hebben staan.

Alleen ik weet niet hoe ik dit moet doen.
Is er iemand die me kan helpen?

Thnx :)

  • Bas_f
  • Registratie: Januari 2001
  • Laatst online: 18-09 09:38
Voorbeeldje als een timestamp in je DB hebt zitten:
PHP:
1
2
3
4
5
<?
$datum=date("U")-(30*86400);

mysql_query("SELECT * FROM blabla WHERE timestamp>".$datum);
?>

zoiets?

PS. 30*86400 = 30 dagen * (86400) seconden in een dag..

...


  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 17:28

Knutselsmurf

LED's make things better

code:
1
2
if (currenttime-timestamp<aantalsecondenineenmaand){
echo("nieuw");

- This line is intentionally left blank -


Verwijderd

Topicstarter
die time stamp zit trouwens als volgt in elkaar:

JJJJMMDDUUMMSS

J=Jaar
M=Maand
D=Dag
U=Uur
M=Minuten
S=Seconden

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 23-07 15:18

Tim

Op woensdag 19 september 2001 18:28 schreef _Assassinator_ het volgende:
die time stamp zit trouwens als volgt in elkaar:
Euh.. Timestamp is gewoon aantal seconden sinds 1 jan 1970..
Lijkt me dus ook wel duidelijk hoe je er achter kan komen hoe een timestamp meer dan een maand oud is..

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

volgens mij verwarren jullie de mysql timestamp en de php timestamp...

Verwijderd

mktime()?

Verwijderd

Topicstarter
Op woensdag 19 september 2001 18:40 schreef Timpie2000 het volgende:

[..]

Euh.. Timestamp is gewoon aantal seconden sinds 1 jan 1970..
Lijkt me dus ook wel duidelijk hoe je er achter kan komen hoe een timestamp meer dan een maand oud is..
Euh.. Nee, Timestamp is dus echt gewoon:

JJJJMMDDUUMMSS

J=Jaar
M=Maand
D=Dag
U=Uur
M=Minuten
S=Seconden

Althans, de timestamp die ik gebruikt heb..

en laten we zeggen dat nu gelijk is aan 20010919190750 dan is dat denk ik niet gelijk aan het aantal seconden sinds 1 januari 1970 |:(

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 23-07 15:18

Tim

Op woensdag 19 september 2001 18:43 schreef stylee het volgende:
volgens mij verwarren jullie de mysql timestamp en de php timestamp...
tja, kan best maar er staat rekenen met PHP, dus ga ik er maar vanuit dat het ook over een timestamp van PHP gaat..
En die is toch echt aantal seconde sinds 1 jan 1970..
zie ook www.php.net/mktime
Returns the Unix timestamp corresponding to the arguments given. This timestamp is a long integer containing the number of seconds between the Unix Epoch (January 1 1970) and the time specified.
Maar goed, andere timestamp is ook prima :)
String splitsen om de 2 chars, en die door een mktime heen gooien geeft je een simpelere versie om mee te rekenen :)

Verwijderd

Kzit met een vergelijkbaar probleempje, (en vond het nuttiger om het hierin te plaatsen, ipv een nieuw topic)

Kheb nu dit in PHP:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
$datefromdb = $guest['guest_time'];
$year = substr($datefromdb,0,4);
$mon  = substr($datefromdb,4,2);
$day  = substr($datefromdb,6,2);
$hour = substr($datefromdb,8,2);
$min  = substr($datefromdb,10,2);
$sec  = substr($datefromdb,12,2);
$orgdate = date("l F dS, Y h:i A",mktime($hour,$min,$sec,$mon,$day,$year));
?>
<? echo $orgdate; 
?>

guest_time is dus vanuit mysql de tijd als 22010919174425

Het resultaat wat php geeft is:
Wednesday September 19th, 2001 05:44 PM

En eigenlijk wil ik het zo:
September 19th, 2001 17.44

Kreeg het niet voor elkaar om die code zo aan te passen dat het dit werd, maybe kan een van jullie helpen?

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 23-07 15:18

Tim

www.php.net/date en dan vooral ondedr het kopje Description

Verwijderd

Topicstarter
dus met mktime() kan ik alles in seconden maken?
en dan moet ik er kunnen komen??
heeft iemand een voorbeeld scriptje?

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 23-07 15:18

Tim

Op woensdag 19 september 2001 22:29 schreef _Assassinator_ het volgende:
dus met mktime() kan ik alles in seconden maken?
en dan moet ik er kunnen komen??
heeft iemand een voorbeeld scriptje?
alle code staat al in het topci, je moet het alleen even combineren..
code:
1
2
3
4
5
6
7
8
9
10
11
$prevmonth = 60*60*24*30;
$year = substr($datefromdb,0,4);
$mon  = substr($datefromdb,4,2);
$day  = substr($datefromdb,6,2);
$hour = substr($datefromdb,8,2);
$min  = substr($datefromdb,10,2);
$sec  = substr($datefromdb,12,2);
$stamp = mktime($hour,$min,$sec,$mon,$day,$year);
if (time() - $stamp > $prevmonth) {
 echo "New!";
}

Verwijderd

Topicstarter
Op woensdag 19 september 2001 23:50 schreef Timpie2000 het volgende:

[..]

alle code staat al in het topci, je moet het alleen even combineren..
code:
1
2
3
4
5
6
7
8
9
10
11
$prevmonth = 60*60*24*30;
$year = substr($datefromdb,0,4);
$mon  = substr($datefromdb,4,2);
$day  = substr($datefromdb,6,2);
$hour = substr($datefromdb,8,2);
$min  = substr($datefromdb,10,2);
$sec  = substr($datefromdb,12,2);
$stamp = mktime($hour,$min,$sec,$mon,$day,$year);
if (time() - $stamp > $prevmonth) {
 echo "New!";
}
Thnx very much :)
ik heb alleen van de > wel een < gemaakt en nu werkt ie :)
Pagina: 1