Autor Zpráva
Getty
Profil *
Ahoj,

zasekl jsem se u výběru dotazu z databáze. Mám stránku, kde vypisuji rezervace vždy po týdnu a potřebuji tam přidat opakované rezervace, takže mám následující tabulku rezervation_repeatedly, sloupce: id, date_from, date_to, day, time_from, time_to, kde si do pole ukládám hodnoty o rezervaci vždy pro daný den (pondělí, úterý, středa, ...):
$week_start = '2017-03-20';
$week_end = '2017-03-26';

$sql = mysqli_query($db, "
select
    *
from
    rezervation_repeatedly  
order by
    id asc");
while($v = mysqli_fetch_array($sql)){
    
    $plus_date = ($v['day']-1); // VE SLOUPCI DAY UKLÁDÁM 1-PONDĚLÍ, 2-ÚTERÝ, ...
    $date = date('Y-m-d', strtotime($aktualni_tyden[0] .' +'.$plus_date.' day')); //$aktualni_tyden[0] - ZDE JE VŽDY ULOŽENA HODNOTA PRVNÍHO DNE ZVOLENÉHO TÝDNE
    
    for ($i = $v['time_from']; $i <= $v['time_to']; $i++) {
        $rezervace[$date][$i] = 1;
    }
}

A já bych potřeboval vždy vypsat jen ty záznamy, které se nacházejí v daném týdnu, tzn. zakomponovat zde i podmínky pro time_from a time_to, ve spojitosti s proměnnými $week_start a $week_end.

Díky za rady.
Kajman
Profil
Pokud v té tabulce jsou date_from a date_to datumy odpovídající day, tak by mělo stačit upravit dotaz...
select
    *
from
    rezervation_repeatedly 
where
    date_from <= '$week_end'     
    and date_to >= '$week_start'
order by
    id asc

Pokud v date_to bude např. pondělí akutálního týdne, ale day bude třeba až pátek, tak to dotaz vrátí také. V takovém případě je potřeba přidat ještě filtraci v php, kde si porovnáte vypočtené $date, zda je stále v intervalu události.

if($date>=$v['date_from'] && $date<=$v['date_to']) {
  for cyklus s time
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: