Hallo

Ik ben aan het werk met een kalender, hij zou als er een evenement bezig is een rondje rond het vakje hebben.
Ik sla het begin uur en het einduur op als een timestamp, het kan dus zijn dat het evenement 3 dagen duurt.

Nu weet ik echter niet hoe ik dit het best kan opvragen, onderstaande code werk maar hij geeft geen rondje rond de eerste dag, ook als het evenement maar 1 dag duurt krijgt hij geen rondje.

<?php
$start_timestamp = mktime(0, 0, 0, $iMonth, $iDay, $iYear);

$check_sql = mysqli_query($connectie, "SELECT id FROM kalender WHERE ".$start_timestamp." between begin_timestamp and eind_timestamp");
?>

Waar ga ik de mist in?
als op die dag een evenement is dan moet er rond die dag een rondje komen te staan. Mij sql doet het niet juist want het haalt niet alles op

als 4 5 en 6 april er een feest is dan hebben 5 en 6 een rondje maar 4 niet
als het 1 dag is dan verschijnt er geen rondje

Ik denk dat ik het ga moeten doen met een lange WHERE maar wat heeft voorrang
if 1 = 1 and 2 = 2 or 3 = 3

is het
"indien 1 is 1 en 2 is 2 of indien 3 = 3" of is het dan
"indien 1 is 1 en 2 is 2 of indien 1 is 1 en 3 = 3"?
Nee hoor heb je mijn eerdere voorstel wel geprobeerd?

Doe anders eens een echo van je query en van $start_timestamp

<?php
echo "SELECT id FROM kalender WHERE ".$start_timestamp." between begin_timestamp and eind_timestamp";
echo '<br>'.$start_timestamp = mktime(0, 0, 0, $iMonth, $iDay, $iYear);
?>
Met de volgende query genereer je een 'view' met de dagen van de maand:

SELECT
	@datum := @datum + INTERVAL 1 DAY datum
FROM
	products, (SELECT @datum := '2014-04-01' - INTERVAL 1 DAY) var
LIMIT 30

Voor de tabel products kan je elke tabel gebruiken die meer dan 31 records bevat.

Dit gaan we dan gebruiken in combinatie met een join:

SELECT
	d.datum,
	COUNT(k.id) AS aantal
FROM
	(SELECT
		@datum := @datum + INTERVAL 1 DAY datum
	FROM
		products, (SELECT @datum := '2014-04-01' - INTERVAL 1 DAY) var
	LIMIT 30) d
LEFT JOIN
	kalender k
	ON d.datum BETWEEN k.begin_timestamp AND k.eind_timestamp
GROUP BY
	d.datum

Reageren