Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] poprawne zpytanie
kropla
post
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 16.12.2005

Ostrzeżenie: (10%)
X----


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ć...
Go to the top of the page
+Quote Post
nowotny
post
Post #2





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


Wg. mnie jest tu błąd w samej bazie... Ja bym trzymał daty w formacie timestampa... Wtedy mogę sobie użyć konstrukcji BETWEEN...
Go to the top of the page
+Quote Post
--kropla--
post
Post #3





Goście







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
Go to the top of the page
+Quote Post
nowotny
post
Post #4





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


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..
Go to the top of the page
+Quote Post
--kropla--
post
Post #5





Goście







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
Go to the top of the page
+Quote Post
nowotny
post
Post #6





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował nowotny 5.02.2008, 15:28:14
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 23:37