allemaal

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

<?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];
?>
Heb je errors en error_reporting al aangezet?
<?php
error_reporting(E_ALL);
ini_set('diplay_errors',1);
?>

ZO ja, welke foutmelding krijg je?
ja staat op

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.
Daar was pas nog een topic over.. Zoiets?
inderdaad dat gebruik ik

ik heb nu de lijnen uit de functie gehaald en deze afzonderlijk aant testen

keep posted
>>> inderdaad dat gebruik ik

Uh? Die topic is van 31 december 2015.. Niet de topic uit 07/01/2006, waar je deze functie vandaan hebt.
ik heb nu alle onderdelen uit de functie gehaald en nu
blijkbaar loopt het mis bij de while loop


<?php
  while ($week1 != '01') 
  {
    $start += (7 * 24 * 3600);
    $week1 = strftime ('%V', $start);
  }
?>


als ik deze uit de echo haal werkt het

wat wil += zeggen? in de while

while ($week1 != '01')

Moet dat niet gewoon dit zijn?

while ($week1 != 1)
Je kunt hier de methode DateTime::setISODate() gebruiken, want daarmee kun je een datum vormen met jaartal plus ISO-weeknummer. Daarmee wordt de functie overzichtelijker:


<?php
function getISOWeek($week, $year, $format = 'Y-m-d')
{
    $date = new DateTime();
    $date->setTime(0, 0, 0);

    $date->setISODate($year, $week, 1);
    $first_date = $date->format($format);

    $date->setISODate($year, $week, 7);
    $last_date = $date->format($format);
    
    return array($first_date, $last_date);
}
?>


Als je avontuurlijk bent aangelegd, kun je voor datum- en tijdperioden zoals een week ook nog de klasse DatePeriod gebruiken.

Reageren