Hallo,

Ik ben met mij site bezig en ik zit met een probleempje, ik heb een script waarbij je 2 datums moet opgeven en dan rekent het script uit hoeveel dagen/weken/maanden er tussen die twee datums zitten.

Het liefste zou ik een klein voorbeeld scriptje willen hebben.

Alvast bedankt! :)
Ok.. je hebt gezien hoe je die datum kan vergelijken? dan kan je controleren of de begindatum van de nieuwe reservering groter is dan de einddatum van de andere. Als dat het geval is, dan controleren of er IN DATZELFDE huisje nog een reservering is, die eerder begint dan de einddatum van de nieuwe reservering.

vb:
<?
$reservering_1 = '2005-12-12'; //einde eerste reservering
$reservering_2 = '2005-24-12'; //begin tweede reservering

$tijd1 = '2005-12-12'; // begin nieuwe reservering
$tijd2 = '2005-20-12'; // einde nieuwe reservering

if ($tijd1 >= $reservering_1 && $tijd2 < $reservering_2){
echo "dit huisje is vrij";
}
else{
echo "dit huisje is niet vrij";
}
?>
Dit is nu mijn code:

Ik krijg nu een reeks cijfers eruit :S

<link href="paginas/css/lettertypen.css" rel="stylesheet" type="text/css" />
<?php

$tijd = date('Y-m-d');

$tijd1 = strtotime($tijd);
$tijd2 = strtotime('+1 day', $tijd);
$temp = $tijd1-$tijd2;
date('Y-m-d',$temp).' Verschil';

$dag1 = strftime ("%d", $tijd1);
$maand1 = strftime ("%m", $tijd1);
$jaar1 = strftime ("%Y", $tijd1);

$dag2 = strftime ("%d", $tijd2);
$maand2 = strftime ("%m", $tijd2);
$jaar2 = strftime ("%Y", $tijd2);

if($dag1 <> $dag2)
{
$temp1 = strftime ("%d", $temp);
$temp4 = strtotime($temp1);
}

if($maand1 <> $maand2)
{
$temp2 = strftime ("%m", $temp);
$temp5 = strtotime($temp2);
}

if($jaar1 <> $jaar2)
{
$temp3 = strftime ("%Y", $temp);
$temp6 = strtotime($temp3);
}

echo $temp4.$temp5.$temp6;

?>
Zit er logica in de cijfers?
Probeer eens:
echo $temp4."-".$temp5."-".$temp6;
Ik kan er geen logica in ondervinden:

113410800011341260001134155100
En als je dit nog in een while loop bouwt met verschillende huisjes ben je zo'n beetje klaar.

Edit: laaaaat ^^
Hoi Knorfski,

het beste kun je dit doen met een datetime veld in een MySQL tabel. Voor twee afspraken die elkaar niet mogen overlappen stel je dan de volgende voorwaarde:

1) De begintijd van afspraak 1 moet NA de eindtijd van afspraak 2 liggen OF
2) De begintijd van afspraak 2 moet NA de eindtijd van afspraak 1 liggen.

in MySQL kun je een query opstellen die er zo uit ziet:

SELECT afspraak
FROM afspraken
WHERE
van < '$tot' AND tot < '$van'

Als die query 0 resultaten oplevert zijn er geen overlaps. Verder moet je natuurlijk controleren of de plekken gelijk zijn, zoals al gezegd werd

<?php
//Tijd nu vaststellen
$tijd = date('Y-m-d');

//String naar tijd omzetten
$tijd1 = strtotime($tijd);

//Even de tijd een dag ophoog zetten om te testen.
$tijd2 = strtotime('+1 day', $tijd);

//Tijden door elkaar delen
$temp = $tijd1-$tijd2;

//String van vandaag uitelkaar halen
$dag1 = strftime ("%d", $tijd1);
$maand1 = strftime ("%m", $tijd1);
$jaar1 = strftime ("%Y", $tijd1);

//String van de tijd van morgen uitelkaar halen.
$dag2 = strftime ("%d", $tijd2);
$maand2 = strftime ("%m", $tijd2);
$jaar2 = strftime ("%Y", $tijd2);

//Kijken als de dagen verschillen
if($dag1 <> $dag2)
{
$temp1 = strftime ("%d", $temp);
$temp4 = strtotime($temp1);
}

//Kijken als de maanden verschillen
if($maand1 <> $maand2)
{
$temp2 = strftime ("%m", $temp);
$temp5 = strtotime($temp2);
}

//kijken als de jaren verschillen
if($jaar1 <> $jaar2)
{
$temp3 = strftime ("%Y", $temp);
$temp6 = strtotime($temp3);
}

$result1 = strftime($temp6);
$result2 = strftime($temp5);
$result3 = strftime($temp4);

//De resulaten weergeven.
echo $result1.'-'.$result2.'-'.$result3;

?>

de uitkomst is:
1134155100-1134126000-1134108000

:S
Hallo Jan,

Ik had je tutorial ook al gezien!
Zeer netjes.

Misschien moet ik dit maar vergeten en daarmee aan de slag :P
Net wat je wilt hoor. PHP kan ook rekenen met datum en tijd. Maar MySQL kan het beter, vind ik.
Wat is makkelijker ?

Het is opzich maar een heel simpel stukje script.

Reageren