Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] poprawne zpytanie
Forum PHP.pl > Forum > Przedszkole
kropla
witam mam w php napisaną funkcję do której przekazuję 3 argumenty

function test ($d,$m,$y)
{
}

$d - dzień
$m -miesiąc
$y - rok

w funkcji wykonuję zapytanie:

$query="SELECT * FROM `Reservation`WHERE `DateStart` LIKE '$y-$m-$d%'";

teraz meritum jeżeli mam rezerwację trzydniową załóżmy od 2008-02-05 do 2008-02-05

jeśli wywołam tą funkcję z arumentami (05,02,2008)
Dostanę oczekiwany wpis, ale ta sama funkcja zostanie później uruchomina z argumentem (06,02,2006)

chciałbym również dostać ten sam wpis czyli sprawdzić czy jest taka rezerwacja pomiędzu datą początkową, która widnieje w bazie i datą końcową. Niestety nie mam pojęcia jak to zrobić...
nowotny
Wg. mnie jest tu błąd w samej bazie... Ja bym trzymał daty w formacie timestampa... Wtedy mogę sobie użyć konstrukcji BETWEEN...
-kropla-
jest już timestamp co dalej ? bo właśnie nie mam pojęcia odnośnie tej kwerendy sprawdzającej czy dany dzień mieści się w przedziale początku i końca danej rezerwacji
nowotny
A skąd bierzesz początek i koniec rezerwacji...? Masz tu chyba jakiś błąd w myśleniu... pokaż kod bo inaczej nigdy nie dojdziemy..
-kropla-
kodu jeszcze póki co nie mam póki co tylko to

  1. <?php
  2. function getReservationDate($d,$m,$y){
  3. if ($d<10) $d='0'.$d;  
  4. if ($m<10) $m='0'.$m;  
  5. $query="SELECT * FROM `Reservation`WHERE `DateStart` LIKE '$y-$m-$d%'";
  6. $Rezerwacja=WykonanieBezFetch($query);  
  7. while($wpis=mysql_fetch_array($Rezerwacja))
  8. {  
  9. echo '<div class="Reservation">'.$wpis['Title'].'</div>';
  10. }  
  11. }
  12. ?>


teraz mam zrobiony kalendarz w którym są dni i w każdym dniu jest wywołana ta funkcja getReservationDate z parametrami odpowiednimi dla konkretnych dni.

Teraz chcę spawdzić czy jeśli dany dzień który wywołuje tą funkcję mieści się w przedziale żeby również został mi zwrona wartość kolumny Title
nowotny
Ale do czego to ma służyć...? przechodzisz po każdym dniu miesiąca po kolei i sprawdzasz czy coś danego dnia jest zarezerwowane...?

Zakładając że masz coś takiego (pseudokod):
  1. <?php
  2. foreach($day_of_month as $day){
  3. if(reserved($day)){
  4. echo 'zarezerwowano';
  5. }
  6. else{
  7. echo 'niezarezerwowano';
  8. }
  9. }
  10. ?>


to funkcja reserved powinna mieć taka postać:
  1. <?php
  2. function reserved($date){ //$date jest w formacie timestampu
  3. $query='SELECT * FROM `Reservation` WHERE '.$date.'>=`DateStart` AND '.$date.'<=`DateStop`';
  4. $result=mysql_query($query);
  5. if(mysql_num_rows==FALSE) return FALSE;
  6. else return TRUE;
  7. }
  8. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.