php function - eisen op server?
ik heb overlaatst hier een script gezien en gebruik deze nu voor de begin dag en eind dag opteroepen via een weeknummer en jaarinput
nu dit werkt thuis op mijn server moeiteloos op IE en chrome.
ik heb hier php 5.5.30 draaien.
nu op het werk draait er php 5.6 en daar wil die functie niet werken (op de werk server wel te verstaan)
als ik de pagina op het werk open van mijn eigen server werkt het.
nu is mijn vraag, waar moet ik opletten of enabelen zodat functions ook werken op de werkserver?
de functie is
Code (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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
38
39
40
<?php
$week=$_POST['week'];
$jaar=$_POST['jaar'];
/********************************************************************************************************/
//weeknummer naar datum omvormen
/********************************************************************************************************/
$dateweek=ISOdates_from_weeknr($week, $jaar);
function ISOdates_from_weeknr ($weeknr, $year, $format = '%Y-%m-%d')
{
$start = strtotime ('1 january ' . $year);
$week1 = strftime ('%V', $start);
while ($week1 != '01')
{
$start += (7 * 24 * 3600);
$week1 = strftime ('%V', $start);
}
$timestamp_week = strtotime ('+' . ($weeknr - 1) . ' week', $start);
$weekdag = strftime ('%u', $timestamp_week);
$dagen_tot_begin_week = $weekdag - 1;
$dagen_tot_eind_week = 7 - $weekdag;
$checkdatum = strtotime ("-" . $dagen_tot_begin_week . " days + 3 days", $timestamp_week);
$check = strftime ('%V', $checkdatum);
if ($check == '01' && $weeknr > 52)
{
echo 'ongeldig weeknummer voor dit jaar' . "\n";
return false;
}
$begindatum = strtotime ("-" . $dagen_tot_begin_week . " days", $timestamp_week);
$einddatum = strtotime ("+" . $dagen_tot_eind_week . " days", $timestamp_week);
return array (strftime ($format, $begindatum), strftime ($format, $einddatum));
}
$begin=$dateweek[0];
$eind=$dateweek[1];
?>
$week=$_POST['week'];
$jaar=$_POST['jaar'];
/********************************************************************************************************/
//weeknummer naar datum omvormen
/********************************************************************************************************/
$dateweek=ISOdates_from_weeknr($week, $jaar);
function ISOdates_from_weeknr ($weeknr, $year, $format = '%Y-%m-%d')
{
$start = strtotime ('1 january ' . $year);
$week1 = strftime ('%V', $start);
while ($week1 != '01')
{
$start += (7 * 24 * 3600);
$week1 = strftime ('%V', $start);
}
$timestamp_week = strtotime ('+' . ($weeknr - 1) . ' week', $start);
$weekdag = strftime ('%u', $timestamp_week);
$dagen_tot_begin_week = $weekdag - 1;
$dagen_tot_eind_week = 7 - $weekdag;
$checkdatum = strtotime ("-" . $dagen_tot_begin_week . " days + 3 days", $timestamp_week);
$check = strftime ('%V', $checkdatum);
if ($check == '01' && $weeknr > 52)
{
echo 'ongeldig weeknummer voor dit jaar' . "\n";
return false;
}
$begindatum = strtotime ("-" . $dagen_tot_begin_week . " days", $timestamp_week);
$einddatum = strtotime ("+" . $dagen_tot_eind_week . " days", $timestamp_week);
return array (strftime ($format, $begindatum), strftime ($format, $einddatum));
}
$begin=$dateweek[0];
$eind=$dateweek[1];
?>
ZO ja, welke foutmelding krijg je?
en dat is het juist als ik dat zou zien zou ik weten waar het kan aanliggen
hij geeft geen fout melding omdat de pagina gewoon blijft laden. je zien geen beweging alleen ene witte pagina
Ik zie geen brekende functies. Dus ik zou eens als ik jouw was op diverse strategische plekken tijdelijk een echo plaatsen. Vervolgens kan je prima zien welke route je script doorloopt en waar het eindigt in een blanko scherm.
ik heb nu de lijnen uit de functie gehaald en deze afzonderlijk aant testen
keep posted
Uh? Die topic is van 31 december 2015.. Niet de topic uit 07/01/2006, waar je deze functie vandaan hebt.
blijkbaar loopt het mis bij de while loop
Code (php)
als ik deze uit de echo haal werkt het
wat wil += zeggen? in de while
Gewijzigd op 13/01/2016 21:52:16 door chris Bosmans
Moet dat niet gewoon dit zijn?
while ($week1 != 1)
DateTime::setISODate() gebruiken, want daarmee kun je een datum vormen met jaartal plus ISO-weeknummer. Daarmee wordt de functie overzichtelijker:
Als je avontuurlijk bent aangelegd, kun je voor datum- en tijdperioden zoals een week ook nog de klasse DatePeriod gebruiken.
Je kunt hier de methode Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Als je avontuurlijk bent aangelegd, kun je voor datum- en tijdperioden zoals een week ook nog de klasse DatePeriod gebruiken.