Rekenen met tijd
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! :)
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! :)
Han en Robert :D Bedankt! :D
Nog even een klein vraagje,
De datums mogen elkaar niet overlappen, hoe zouden jullie mij dat aanraden om dat aan te pakken.
Edit: Snelle reactie hier :D
Nog even een klein vraagje,
De datums mogen elkaar niet overlappen, hoe zouden jullie mij dat aanraden om dat aan te pakken.
Edit: Snelle reactie hier :D
Gewijzigd op 09/12/2005 20:05:00 door Knorfski
Mogen elkaar niet overlappen? bedoel je dat $tijd1 niet groter mag zijn dan tijd2?
Dan:
Dan:
Code (php)
Ik moet een camping systeem maken, en als er dan 2 mensen boeken dan mogen die tijden elkaar niet overlappen, anders heb je een dubbelboeking.
Kan je iets duidelijker zijn? werk je met een database? En welke tijden heb je het precies over. We werken nu met maar 2 data, en ik heb je al laten zien hoe je kan controleren of de 2e datum kleiner is dan de 1e datum..
Maar dat is dus niet de bedoeling.. graag wat meer info.
Maar dat is dus niet de bedoeling.. graag wat meer info.
Ik werk met een database :)
En ik maak een management systeem voor een camping, dus als er een klant bij de balie staat en die zegt:'Ik wil graag een bungalowhuisje huren van 12-09-2005 tot 18-11-2005 huren' dan vuurt de balie medewerker een query af op de database en die komt terug met het resultaat: Huisje 1, 3, en 6 zijn nog vrij die tijd. de rest is al volgeboekt.
Maar ook dat als er geen plek meer is als hij dan ook een melding geeft als de camping vol is.
En ik maak een management systeem voor een camping, dus als er een klant bij de balie staat en die zegt:'Ik wil graag een bungalowhuisje huren van 12-09-2005 tot 18-11-2005 huren' dan vuurt de balie medewerker een query af op de database en die komt terug met het resultaat: Huisje 1, 3, en 6 zijn nog vrij die tijd. de rest is al volgeboekt.
Maar ook dat als er geen plek meer is als hij dan ook een melding geeft als de camping vol is.
Hij bedoelt dat als iemand die bijvoorbeeld van 2 uur tot 4 uur boekt er niet iemand kan zijn die van 3 uur tot 5 uur op dezelfde plek (ik neem aan dat je per plek werkt) een plaatsje kan reserveren.
-- edit --
Je was me voor...
-- edit --
Je was me voor...
Gewijzigd op 09/12/2005 20:20:00 door Eric Cartman
Je moet een query maken die tussen die dingen selecteerd
Precies Jip,
En bedankt Han,
Ik had het op die manier nog niet bekeken.
En bedankt Han,
Ik had het op die manier nog niet bekeken.
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:
vb:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$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";
}
?>
$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" />
Ik krijg nu een reeks cijfers eruit :S
<link href="paginas/css/lettertypen.css" rel="stylesheet" type="text/css" />
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
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
<?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;
?>
$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;
Probeer eens:
echo $temp4."-".$temp5."-".$temp6;
Ik kan er geen logica in ondervinden:
113410800011341260001134155100
113410800011341260001134155100
En als je dit nog in een while loop bouwt met verschillende huisjes ben je zo'n beetje klaar.
Edit: laaaaat ^^
Edit: laaaaat ^^
Gewijzigd op 09/12/2005 20:48:00 door Han eev
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
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
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
41
42
43
44
45
46
47
48
49
50
51
52
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
41
42
43
44
45
46
47
48
49
50
51
52
<?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;
?>
//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
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.
Het is opzich maar een heel simpel stukje script.




