[PHP] Timestamp + 7 dagen later?

Pagina: 1
Acties:
  • 217 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Hey,,
ik ben bezig met een verjaardagskalender script en nu wil ik laten zien wie de komende 2 week (of een week,maakt niet veel uit, gaat om het idee) allemaal jarig zijn.
Nu heb ik dus deze query (ff snel een schets, gaat om het idee);

code:
1
$selectkomendeweekjarig = "select * from verjaardag where datum > $nudatum AND < $datumovertweeweek";


Hierbij moet $datumovertweeweek dus de timestamp van vandaag zijn,,, PLUS 14 dagen. $nudatum + 14 werkt uiteraard niet want dan krijg je bijv 20040941 ipv 20041011.....

Weet iemand hier een oplossing voor?? Ik kon niets op GoT vinden :(

[ Voor 7% gewijzigd door Peedy op 27-09-2004 20:17 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Ksnap geen reet van de oplossingen die daar aangedragen zijn :S
Is hier geen makkelijke PHP functie voor ofzo? :(

Die gast heeft in een stukkie code stan;
code:
1
2
// eind datum (timestamp) van deze week definieren 
// kan op verschillende manieren, bijv. met mktime()..


Maarja..hoe dat kan zegt ie nou juist ff niet :S

[ Voor 49% gewijzigd door Peedy op 27-09-2004 20:24 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

pEeDy16 schreef op 27 september 2004 @ 20:22:
Ksnap geen reet van de oplossingen die daar aangedragen zijn :S
Is hier geen makkelijke PHP functie voor ofzo? :(
Nope; sowieso zou je moeten kijken bij MySQL :) En die oplossingen kan je zo ongeveer letterlijk kopieren en plakken? :)

[ Voor 13% gewijzigd door gorgi_19 op 27-09-2004 20:23 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Stoffel
  • Registratie: Mei 2001
  • Laatst online: 19-09 10:17

Stoffel

Engineering the impossible

Je kan toch gewoon die timestamp in seconden sinds xx 1970 (give or take ;) ) pakken en daar 14 dagen aan seconden bij optellen, of ben ik nu gek?

Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
gorgi_19 schreef op 27 september 2004 @ 20:22:
[...]

Nope; sowieso zou je moeten kijken bij MySQL :) En die oplossingen kan je zo ongeveer letterlijk kopieren en plakken? :)
Mjah wat leer je van knippen en plakken? Ik wil de query snappen (dan kan ik hem ook beter aanpassen) maar van die query snap ik geen ruk...
_-SToFFeL-_ schreef op 27 september 2004 @ 20:24:
Je kan toch gewoon die timestamp in seconden sinds xx 1970 (give or take ;) ) pakken en daar 14 dagen aan seconden bij optellen, of ben ik nu gek?
Ja dat werkt dus niet..zie mijn startpost

[ Voor 40% gewijzigd door Peedy op 27-09-2004 20:26 ]


Acties:
  • 0 Henk 'm!

  • sjhgvr
  • Registratie: Januari 2004
  • Laatst online: 04-08 14:27
$time_now = time();
$time_now_plus_14_days = time() + 604800;

oisd.nl


Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
DapinododiadeaL schreef op 27 september 2004 @ 20:25:
$time_now = time();
$time_now_plus_14_days = time() + 604800;
Als ik dit probeer krijg ik:
$time_now = 1096309684
$time_now_plus_14_days = 1096914484

Werkt dus ook niet :/

Acties:
  • 0 Henk 'm!

  • sjhgvr
  • Registratie: Januari 2004
  • Laatst online: 04-08 14:27
Ik denk dat ik je begin te snappen:

code:
1
2
3
if (time() < $datumovertweeweek - 604800) {
echo("Deze gast is binnen 2 weken jarig :)");
}


edit: aaaarg + moest - zijn

[ Voor 31% gewijzigd door sjhgvr op 27-09-2004 20:34 ]

oisd.nl


Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 24-07 21:14

WPN

show je hele code eens dan, kunnen we wat meer mee

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
include("header.php");

$datum = date("Ymd");
$datumoverweek = "????????????????????";
$selectvandaagjarig = "select * from verjaardag where datum = '$datum'";
$selectkomendeweekjarig = "select * from verjaardag where datum > '$datum' AND < '$datumoverweek'";
$komendeweekjarigresult = mysql_query($selectkomendeweekjarig) or die(mysql_error());
$vandaagjarigresult = mysql_query($selectvandaagjarig) or die(mysql_error());

echo("Vandaag ($datum) jarig<br>");
while ($vandaagjarigrecord = mysql_fetch_object ($vandaagjarigresult))
{
echo("$vandaagjarigrecord->vnaam $vandaagjarigrecord->anaam<br>");
}
echo("<br><br>");
echo("Komende week jarig<br>");
while ($komendeweekjarigrecord = mysql_fetch_object ($komendeweekjarigresult))
{
echo("$komendeweekjarigrecord->vnaam $komendeweekjarigrecord->anaam op $komendeweekjarigrecord->datum<br>");
}

?>

[ Voor 15% gewijzigd door Peedy op 27-09-2004 20:37 ]


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:10

Robtimus

me Robtimus no like you

date geeft een string terug, dat is niet goed nee.
time() geeft een timestamp (int) terug, daarmee kun je beter rekenen. Heb je ook die ' niet nodig.


Aangezien je die database definitie en inhoud vast niet wilt veranderen moet je dus de tijd converteren. Je kan die tijd converteren naar een timestamp met strtotime, daar dan 14 dagen bij optellen met met date(format, timestamp) er weer een date van maken.
PHP:
1
2
3
$datum = date("Ymd");
$ts = strtotime($datum) + 604800;
$datumoverweek = date("Ymd", $ts);
Levert op 20040927 en 20041004 (dus dat is 1 dag te weinig eigenlijk)

[ Voor 70% gewijzigd door Robtimus op 27-09-2004 21:06 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

  • sjhgvr
  • Registratie: Januari 2004
  • Laatst online: 04-08 14:27
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
<? 
include("header.php"); 
$date = date("Ymd");
$get_dateA = "select * from verjaardag where datum = '$date'"; 
$get_date = mysql_query($get_dateA) or die(mysql_error()); 
echo("Vandaag ($date) jarig<br>"); 
while ($date = mysql_fetch_object($get_date)) { 
    echo("$date->vnaam $date->anaam<br>"); 
} 
echo("<br><br>");
$date2 = date("Ymd", time() + 86400); 
$get_dateA2 = "select * from verjaardag where datum = '$date2'"; 
$get_date2 = mysql_query($get_dateA2) or die(mysql_error()); 
echo("Morgen ($date2) jarig<br>"); 
while ($date2 = mysql_fetch_object($get_date2)) { 
    echo("$date2->vnaam $date2->anaam op $date2->datum<br>"); 
} 
echo("<br><br>");
$date3 = date("Ymd", time() + 86400 * 2); 
$get_dateA3 = "select * from verjaardag where datum = '$date3'"; 
$get_date3 = mysql_query($get_dateA3) or die(mysql_error()); 
echo("Overmorgen ($date3) jarig<br>"); 
while ($date3 = mysql_fetch_object($get_date3)) { 
    echo("$date3->vnaam $date3->anaam op $date3->datum<br>"); 
} 
?>

... ziezo, eerste keer dat ik met iets in MYSQL doe (ik ben into txt-db O+ ), dus.. ik hoop dat t werkt voor je.
Dit zou de jarigen voor vandaag, morgen en overmorgen weer moetten weergeven.
offtopic:
edit [de 7de ofzo] lijntje code opgesnoven
edit [de 8ste ofzo] weer een lijntje code opgesnoven
edit [zal de 9de wel zijn] $datum veranderd in $date
edit [gaaap] misschien werkttie nu ? kan overigens 2,5 keer zo kort (8>
Wat ben ik een forum vervuiler zeg.... als dit niet blijkt te werken ga ik weer lekker verder met me eigen site. :X


edittttt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
$array = array("vandaag","morgen","overmorgen");
for ($i = 0; $i < 3; $i++) { 
    $date = date("Ymd", time() + 86400 * $i); 
    $get = "select * from verjaardag where datum = '$date'"; 
    $get_date = mysql_query($get) or die(mysql_error()); 
    echo("$array[$i] ($date2) jarig<br>"); 
    while ($date = mysql_fetch_object($get_date)) { 
        echo("$date->vnaam $date->anaam op $date->datum<br>"); 
    } 
    echo("<br><br>");
} 
?>

misschien werkt dat ? 8)7

[ Voor 255% gewijzigd door sjhgvr op 27-09-2004 21:36 ]

oisd.nl


Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Wat je kan doen (zoals IceManX al zij maar dan korter).

PHP:
1
2
3
4
5
6
7
$datumnu = date("Ymd");
$datumrOverEenWeek = date("Ymd", strtotime("+1 week")); 

//Of andere tijdsperioden
$datumOverTweeWeken = date("Ymd", strtotime("+5 week")); 
$datumOverEenJaar = date("Ymd", strtotime("+ year"));
$datumOver1week2dagen4uurEn2seconden = date("Ymd", strtotime("+1 week 2 days 4 hours 2 seconds"));

[ Voor 19% gewijzigd door Suepahfly op 27-09-2004 23:08 ]


Acties:
  • 0 Henk 'm!

  • Theguide
  • Registratie: December 2000
  • Laatst online: 26-06 11:48
Waarom alles in PHP berekenen als MySQL zelf prachtige datum en tijd functies heeft.
Volgens mij is DATE_SUB de vriend die je zoekt in deze.

MySQL documentatie

Bovenin de pagina meteen een begrijpelijk voorbeeld van de functie.

Fuck me if I'm wrong, but isn't your name Gretchen?


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Let er op dat gewoon 14 dagen optellen bij een timestamp problemen kan geven rond de omschakeling van zomertijd naar wintertijd en andersom. Eigenlijk zou je met date (om dag/maand/jaar info uit een datum te halen) en mktime moeten werken.

Overigens heeft mysql hier idd zelf ook functies voor (en let er op dat een mysql timestamp niet hetzelfde is als een unix timestamp)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

pEeDy16 schreef op 27 september 2004 @ 20:28:
[...]


Als ik dit probeer krijg ik:
$time_now = 1096309684
$time_now_plus_14_days = 1096914484

Werkt dus ook niet :/
nee, maar hier moet je toch nog jouw formaat van maken??
$datum_nu = date("Ymd",$time_now);
$datum_straks = date("Ymd",$time_now_plus_14_days);

of begrijp ik je verkeerd...?? Het mooiste is het om in SQL op te lossen. Als je even de search gebruikt, dan heb je het zo gevonden. Ik heb het hier ook een keer gevonden voor de komende maand uit DB te halen.

Acties:
  • 0 Henk 'm!

  • BetuweKees
  • Registratie: Januari 2003
  • Laatst online: 15-07 20:53

BetuweKees

Flipje uit Tiel

kijk hier eens: 939023
had topic destijd geopend omdat ik mijn query wat wilde uitbreiden, maar de query die ik in mijn TS noem kun je volgens mijn prima gebruiken.

Through meditation I program my heart to beat breakbeats and hum basslines on exhalation -Blackalicious || *BetuweKees was AFK; op de fiets richting China en verder


Acties:
  • 0 Henk 'm!

Verwijderd

Je query is sowieso fout, er staat na de 'AND' in je query niet welke kolomnaam gebruikt moet worden voor $datumovertweeweek.

Daarnaast gewoon de functies van MySQL gebruiken, dus zo:

$selectkomendeweekjarig = "SELECT * FROM verjaardag WHERE datum > NOW() AND datum < ADDDATE(NOW(), INTERVAL 14 DAY)";
Pagina: 1