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?
Welk rondje?

wat is de output van je query? wat staat er in begin_timestamp en eind_timestamp? ( gebruik overigens of engels of nl, blijf consistent)
Dit lijkt mij in orde.
Nu de rest nog.
Wat heb je daar al van?
Waarschijnlijk omdat je $start_timestamp op 00:00:00 uur houdt. Als het evenement vervolgens om 09:00:00 begint dan valt hij dus buiten de range.

volgens mij is $start_timestamp = mktime(); genoeg. Waar komen $iMonth, $iDay, $iYear vandaan?
@Reshard F
De outpud gebruik ik niet, ik kijk gewoon of er die dag iets te doen is. die timestamp zal ik veranderen als het werkt.

@- SanThe -, Frank Nietbelangrijk
<?php
for ($iDay = 1; $iDay <= $iTotalMonthDays; $iDay++, $iPlusTr++) {
$add_class = '';
$ingevuld = ''; //fouten voorkomen

/*ingeven van de week id*/
$data_output['kalender_body'][$week]['id'] = date('YW', strtotime($iYear."/".$iMonth."/".$iDay));

/*is er een event*/
$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");
if($check_sql == FALSE) {
//db_error('Er is een fout opgetreden, (sql fout). ', mysqli_error($connectie));
} elseif(mysqli_num_rows($check_sql) == "0") {
$ingevuld = 'false';
} else {
$ingevuld = 'true';
$add_class .= ' event';
}


if (date ("j-n-Y", time ()) == ($iDay."-".$iMonth."-".$iYear)) {
$data_output['kalender_body'][$week]['data'][] = array('id' => $iDay, 'label' => $iDay, 'class' => 'dag vandaag'.$add_class, 'gevuld' => $ingevuld);
} else {
$data_output['kalender_body'][$week]['data'][] = array('id' => $iDay, 'label' => $iDay, 'class' => 'dag'.$add_class, 'gevuld' => $ingevuld);
}
if (($iPlusTr % 7) == 0) {
$week = $week + 1;
}
}
?>
Okee je laat een aantal dagen zien op de kalender. maar nu wil je een rondje/kleurtje of wat dan ook op de evenementen die OP DIT MOMENT aan de gang zijn. Dat is dus altijd op de dag VANDAAG. dus zoals ik al zei gewoon $start_timestamp = mktime(); op regel 10.
de pagina maakt json die door jquery in een kalender wordt omgezet, in die kalender kun je vooruit en terug.
@Frank: Gebruik dan NOW() of CURDATE() in de sql.
- SanThe - op 04/05/2014 12:21:57

@Frank: Gebruik dan NOW() of CURDATE() in de sql.


Dat is inderdaad sneller maar dan zal de TS moeten overstappen op DATETIME fields lijkt mij?
Iedere dag van de maand wordt door de for (regel 2) gehaalt. en er wordt door de sql gekeken of er OP DIE DAG een evenement is. Ik controleer dus niet op de huidige dag maar voor de hele maand.
Christoph e op 04/05/2014 11:58:23

... hij zou als er een evenement bezig is ...


als iets bezig is dan is dat nu en niets anders toch?

in je overzicht geef je wellicht meerdere dagen. (bijv de huidige maand) maar als je daarin een andere stijl wilt geven aan iets dat NU bezig is dan is dat NU

Reageren