Hallo allemaal,
Ik heb een kalender waarop reserveringen aangegeven kunnen worden. De datum is groen als het nog niet gereserveerd is en rood als dat wel het geval is. Nu kan de beheerder datums invoegen die gereserveerd zijn, maar hij moet dan elke dag apart in vullen.
De datums komen dan in een database tabel te staan, en op de kalender vergelijk ik die datums en zorg ik dat ze in de juiste kleur weer gegeven worden.

Hoe kan ik er nu voor zorgen dat de beheerder een begin en een einddatum kan invullen en dat de dagen die daartussen zitten ook automatisch in de tabel komen te staan?

En dan zou het ook nog zo moeten zijn dat ik in de tabel een kolom heb waar de waarden 1, 2 en 3 ingevuld moeten worden. 1 voor de begin dag van een periode, 2 voor de dagen ertussen en 3 voor de eind dag van een periode.

Iemand enig idee?

Alvast bedankt.
josephine schreef op 23.09.2009 14:24
Hoe kan ik er nu voor zorgen dat de beheerder een begin en een einddatum kan invullen en dat de dagen die daartussen zitten ook automatisch in de tabel komen te staan?

Het zou volgens mij beter zijn als je in de database ook gewoon de begin en eind datum zou opslaan... Heb je meer flexibiliteit en minder problemen later mee.

josephine schreef op 23.09.2009 14:24
En dan zou het ook nog zo moeten zijn dat ik in de tabel een kolom heb waar de waarden 1, 2 en 3 ingevuld moeten worden. 1 voor de begin dag van een periode, 2 voor de dagen ertussen en 3 voor de eind dag van een periode.

Nou, wat is je probleem hiermee? Gewoon een tinyint veldje in de database lijkt me. (overigens is dit niet meer nodig wanneer je start en eind datum in DB zou zetten, dan heb je dit probleem ook al niet meer.)
oke, maar HOE kan ik dan die datums die tussen de begin en eind datum zitten ook in de kalender rood maken?

En over dat andere, geen probleem ik vroeg me alleen af hoe ik automatisch de eerste datum het nummertje 1 mee kan geven, die daar tussen 2 en de laatste 3.
<?php
if($dag <= $einddag and $dag >= $startdag) $kleur = "rood";
else $kleur = "groen";
?>

Over je tweede: je kan php toch wel laten tellen tot 3 zeker?
ja inderdaad.. is makkelijker dan ik dacht.
Maar de eerst vraag zou ik nog niet weten..
Nu doe ik het zegmaar zo: Ik haal de losse datums uit de tabel en zet ze in een array. Zo zet ik ze dan in de kalender:


	<?php 
if(in_array($mdag.'-'.$maandnr.'-'.$jaar, $datums)){
		$mijnkalender .= "<td class=\"vandaag\" id=\"bezet\">".$mdag."</td>\n";
	}
	
	else{	
		$mijnkalender .= "<td class=\"vandaag\" id=\"vrij\">".$mdag."</td>\n";
	}?>


Gelieve Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

Je zou dan kunnen maken dat bij activiteiten die een begin en eind datum hebben, php er dus de tussenliggende datums ook in die array steekt.

bv. activiteit met start en eind datum die 3 dagen duurt.
1) je laat php die dagen aflopen van begin tot eind.
2) telkens steek je die datums in die $datums array
3) de rest van je script kan je nu blijven behouden..
Ik snap wat je bedoeld, maar ik weet niet echt hoe ik de datums dan af moet lopen? Kan je misschien een voorbeeldje geven?
Mijn laatste vraag is helaas nog niet opgelost...
Zou iemand mij kunnen vertellen hoe ik de datums af loop? Met gewoon een getal snap ik het wel (met een for loop) maar een datum is niet maar 1 getal toch?
Klopt, een datum is niet zomaar een getal. Ik heb niet het hele topic gevolgd, maar als ik je goed begrijp wil je een array hebben met alle datums tussen een start- en een einddatum?

Deze werkt:
<?php
for ($i = 0 ; $i < 30; $i++) {
$sql = "SELECT DATE_ADD(CURDATE(), INTERVAL " . $i . " DAY) AS mijndatum";
// hierna fetchen
}
?>
Jan Koehoorn schreef op 24.10.2009 20:15
Klopt, een datum is niet zomaar een getal. Ik heb niet het hele topic gevolgd, maar als ik je goed begrijp wil je een array hebben met alle datums tussen een start- en een einddatum?

Deze werkt:
<?php
for ($i = 0 ; $i < 30; $i++) {
$sql = "SELECT DATE_ADD(CURDATE(), INTERVAL " . $i . " DAY) AS mijndatum";
// hierna fetchen
}
?>

Bedankt voor je reactie!
Denk alleen dat dit niet helemaal de oplossing is. Op deze manier moet ik voor elke maand 30 queries uitvoeren??? Elk record in de database bevat een begin en einddatum, dan zou ik die dus eerst eruit kunnen halen en dan de tussenliggende getallen moeten berekenen?

Reageren