Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: skomplikowane zapytanie do bazy
Forum PHP.pl > Forum > Przedszkole
pyrek
Witam mam problem ponieważ musze wykonać dość skomplikowane zapytanie a mianowicie:

mam 2 bazy 1 to:
pojazd
w niej mam wpisane dane pojazdów

2 to : zamowienia
i w niej są trzy ważne pola id_pojazdu , data_od i data_do

w formularzu przesyłam dane

data1=2005-06-07 10:00
data2=2005-06-08 12:00

i teraz musze wyciągnąć wszystkie pojazdy które nie są zajęte w tym przedziale czasowym i wyświetlić ich dane.

I nie mam pojęcia jak to zrobić!
Ociu
Jako, że nie wiem czy można dać NOT BETWEEN
  1. SELECT pojazdy.*, zamowania.*
  2. FROM pojazdy, zamowienia WHERE NOT (zamowienia.data2 > iles1 AND zamowienia.data1 < iles2)
pyrek
Chyba nie bardzo o to mi chodziło! Więc postaram się to wytłumaczyć dokładnie!

mam 2 bazy :
pojazdy
i w niej kilka pól z danymi pojazdów ale najważniejsze pole to ID_POJAZDU

i zamowienia
w niej mam 4 ważne pola:

ID_ZAMOWIENIA, pojazd_id, data_od, data_do

i np wpis do bazy zamowienia wygląda tak:
8, 12, 2005-07-01 10:00:00, 2005-07-03 10:00:00

teraz w formularzu przesyłam zmienną
data_zamowienia
data_oddania

i musze wyświetlić wszystkie pojazdy które w tym czasie (podanym w formularzu)
są wolne czyli wyeliminować zajęte. I nie mam pojęcia jak to zrobić, domyślam sie że musze połączyć sie z bazą pojazdy i wyciągnąć wszystkie wyniki i sprawdzać teraz czy w zamowieniach nie ma tego pojazdu który mieścił by się w przedziale podanym w formularzu!

Proszę o pomoc siedze nad tym już 2 dzień i za bardzo się zamotałem.
Radarek
Cytat
mam 2 bazy :
pojazdy
i w niej kilka pól z danymi pojazdów ale najważniejsze pole to ID_POJAZDU

i zamowienia
w niej mam 4 ważne pola:


To zrob to na 1 bazie z 2 tabelami. Po co ci 2 bazy?
majster
siema,

pisz na gg: 5799377
postaram sie pomóc tongue.gif

pozdrawiam
staspolo
witam,

czy mógł byś się później pochwalić efektem, sam coś podobnego próbuje zrobić z tym że na bazie *.dbf
pyrek
ok udało mi sę to zrobić ale i tak mam mały problem a mianowicie mam teraz to zrobione tak:
  1. <?php
  2. $wyniksz = mysql_query(&#092;"SELECT * FROM {$pr}pojazdy WHERE aktywnosc_pojazdu!='0' ORDER BY marka_pojazdu\")  OR die(mysql_error());
  3. while ($rekordsz = mysql_fetch_array ($wyniksz)){
  4. extract($rekordsz);
  5.  
  6. $query =&#092;"SELECT * FROM {$pr}zamowienia WHERE pojazd_zamowienia=$id_pojazdu and  ('{$data_wynajmu}' BETWEEN data_od_zamowienia AND data_do_zamowienia or '{$data_wynajmu}'<data_od_zamowienia) and ('{$data_zwrotu}' BETWEEN data_od_zamowienia AND data_do_zamowienia or '{$data_zwrotu}'>data_od_zamowienia) \";
  7.  $result =mysql_query($query) OR die(&#092;"ERROR mySQL: $query\"); $xp=0;
  8. if($row = mysql_fetch_assoc($result)){ $haha.gif=(++$x); 
  9.  }
  10. }
  11.  
  12. if($haha.gif==0){ $max=10; }
  13. else{ $max=((10+$haha.gif)-1);}
  14. $result = mysql_query(&#092;"SELECT COUNT(id_pojazdu) AS ile FROM {$pr}pojazdy WHERE  aktywnosc_pojazdu!='0' ORDER BY marka_pojazdu \")  OR die(mysql_error());
  15. $dane = mysql_fetch_assoc($result);
  16. $ile=$dane[0];
  17. $dane['ile']=($dane['ile']-$haha.gif);
  18. $page_num = ceil($dane['ile']/$max);
  19.  
  20. if($dane['ile']>0){
  21.  
  22. for($i=0; $i<$page_num; $i++) {$ii=$i+1;
  23. if($_GET['pg']==$i){
  24.  
  25. $link=&#092;"<FONT class=normal2><b>$ii</b></font>\";}
  26. else $link=&#092;"<A class=normal2 HREF='rezerwacja.php?akcja=data&start=$i&pg=$i&data_w=$data_w&data_z=$data_z&godz_w=$godz_w&godz_z=$godz_z'>$ii</A>\";
  27. $bar[]=$link;
  28. }
  29.  
  30. $start=(int)$_GET['start'];
  31. $new_bar=array();
  32. $bar_licz=0;
  33. for($i=1; $i<15; $i++) {
  34.  $new_bar[$start]=$bar[$start];
  35. if($bar[$start-$i]) { $new_bar[$start-$i]=$bar[$start-$i];$bar_licz++; }
  36.  if($bar[$start+$i]) { $new_bar[$start+$i]=$bar[$start+$i];$bar_licz++; }
  37.  
  38.  if($bar_licz==14)break;
  39.  }
  40.  
  41.  
  42. ksort($new_bar);
  43. $bar=implode(' | ',$new_bar);
  44.  
  45. if($start>0){
  46. $back=$start-1;
  47. $pgback=$pg-1;
  48. }
  49. if($start<$page_num-1){
  50. $next=$start+1;
  51. $pgnext=$pg+1;
  52. }
  53. $bar.=&#092;"&nbsp;&nbsp;\";
  54. $wynik_il=$dane['ile'];
  55. $start*=$max;
  56.  
  57. if($wynik_il>='1'){
  58.  
  59. echo&#092;"<br><center><table width=\"600\"  border=\"0\" bgcolor=#E6E1C8 cellpadding=\"0\" cellspacing=\"0\" ><tr><td>Znaleziona ilość pojazdów:<b>\"; echo $dane['ile']; echo\"</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Strona: </span> &nbsp;\"; echo $bar; echo\"</td></tr></table></center>\";
  60. echo&#092;"<br><center>
  61.  &#092;";
  62. $x=$start;
  63. echo&#092;"<table>\";
  64. $wyniksz = mysql_query(&#092;"SELECT * FROM {$pr}pojazdy WHERE  aktywnosc_pojazdu!='0' ORDER BY marka_pojazdu  LIMIT $start,$max\")  OR die(mysql_error());
  65.  
  66. $lp=0;
  67.  
  68. while ($rekordsz = mysql_fetch_array ($wyniksz)){
  69. extract($rekordsz);
  70.  
  71. $query =&#092;"SELECT * FROM {$pr}zamowienia WHERE pojazd_zamowienia=$id_pojazdu and  ('{$data_wynajmu}' BETWEEN data_od_zamowienia AND data_do_zamowienia or '{$data_wynajmu}'<data_od_zamowienia) and ('{$data_zwrotu}' BETWEEN data_od_zamowienia AND data_do_zamowienia or '{$data_zwrotu}'>data_od_zamowienia) \";
  72.  $result =mysql_query($query) OR die(&#092;"ERROR mySQL: $query\");
  73. if(!$row = mysql_fetch_assoc($result)){
  74.  
  75.  
  76. if($lp==0)echo &#092;"<tr>\";
  77. echo &#092;"<td><table width=\"300\"  border=\"0\" bgcolor=#E6E1C8 cellpadding=\"0\" cellspacing=\"0\"><tr><td bgcolor=#606F2D colspan=2 width=300 ><table cellpadding=\"0\" cellspacing=\"0\" width=300><tr><td><font color=white><b><big>&nbsp; $marka_pojazdu $model_pojazdu</big></b></font></td><td bgcolor=#606F2D align=right><font color=white><b><big> Grupa $grupa_pojazdu &nbsp;</big></b></font></td></tr></table></td></tr>
  78. <tr><td><img src=&#092;"$foto_pojazdu\" border=0 width=120 height=90 ><br>\";
  79.  
  80. $wynikce = mysql_query(&#092;"SELECT * FROM {$pr}cennik WHERE  grupa_cennik='$grupa_pojazdu'\")  OR die(mysql_error());
  81. while ($rekordce = mysql_fetch_array ($wynikce)){
  82. extract($rekordce);
  83. echo&#092;"<b>$netto_cennik PLN</b> netto/doba\";
  84. }
  85. echo&#092;"</td><td>
  86. <table>
  87.  
  88. <tr><td height=18 bgcolor=#C5D192 width=300><table width=100%><tr><td align=left >
  89. <img src=&#092;"images/5.gif\" border=\"0\" alt=\"ilość drzwi $drzwi_pojazdu\" ><big><b>$drzwi_pojazdu</b></big></td>\";
  90. if($abg_pojazdu!='0'){ echo&#092;"<td><img src=\"images/8.gif\" border=\"0\" alt=\"poduszki powietrzne\" ></td>\"; }
  91. if($wspomaganie_pojazdu!='0'){ echo&#092;"<td><img src=\"images/6.gif\" border=\"0\" alt=\"wspomaganie kierownicy\" ></td>\"; }
  92. if($abs_pojazdu!='0'){ echo&#092;"<td align=right ><img src=\"images/10.gif\" border=\"0\" alt=\"system ABS\"  ></td>\"; }
  93. echo&#092;"
  94. </tr></table>
  95. </td></tr>
  96. <tr><td height=20>
  97.  
  98. <table width=100%><tr>&#092;";
  99. if($van_pojazdu!='0'){ echo&#092;"<td><img src=\"images/9.gif\" border=\"0\" alt=\"VAN\" ></td>\"; }
  100. if($radio_pojazdu!='0'){ echo&#092;"<td><img src=\"images/11.gif\" border=\"0\" alt=\"radio/magnetofon/CD\" ></td>\"; }
  101. if($ac_pojazdu!='0'){ echo&#092;"<td align=right ><img src=\"images/7.gif\" border=\"0\" alt=\"klimatyzacja\"  ></td>\"; }
  102. echo&#092;"
  103. </tr></table>
  104.  
  105. </td></tr>
  106. <tr><td bgcolor=#C5D192 width=300 valign=bottom >
  107. <table width=100%><tr>&#092;";
  108. echo&#092;"<td>\";
  109. for ($i = 1; $i <= $confort_pojazdu; $i++) {
  110. echo&#092;"<img src=\"images/1.gif\" border=\"0\" alt=\"ilość osób do konfortowej jazdy $confort_pojazdu\" >\";
  111. }
  112. $lp_con=($max_pojazdu-$confort_pojazdu);
  113. for ($i = 1; $i <= $lp_con; $i++) {
  114. echo&#092;"<img src=\"images/2.gif\" border=\"0\" alt=\"maxymalna ilość osób $max_pojazdu\" >\";
  115. }
  116. echo&#092;"</td><td>\";
  117. for ($i = 1; $i <= $bagaz_pojazdu; $i++) {
  118. echo&#092;"<img src=\"images/3.gif\" border=\"0\" alt=\"duży bagaż\" >\";
  119. }
  120. echo&#092;"</td><td align=right >\";
  121. for ($i = 1; $i <= $small_pojazdu; $i++) {
  122. echo&#092;"<img src=\"images/4.gif\" border=\"0\" alt=\"mały bagaż\" >\";
  123. }
  124. echo&#092;"</td>\";
  125. echo&#092;"
  126. </tr></table>
  127. </td></tr>
  128. </table>
  129. <table width=100%><tr><td width=100% align=right>Wybieram ten pojazd <input type='radio' class=no name='pojazd_wyb' value='$id_pojazdu' ></td></tr></table></td></tr></table>
  130. </td>&#092;";
  131. $lp++;
  132. if($lp==2){echo &#092;"</tr>\";$lp=0;}
  133.  
  134. }
  135. else {
  136.  
  137.  } } }
  138.  
  139. echo&#092;"
  140.  
  141. </table><table width=&#092;"600\"  border=\"0\" cellpadding=\"0\" cellspacing=\"0\" ><tr><td align=right ><br><input type=\"submit\" value=\"Dalej\" class=but ></form></td></tr></table>
  142. <br><center><table width=&#092;"600\"  border=\"0\" bgcolor=#E6E1C8 cellpadding=\"0\" cellspacing=\"0\" ><tr><td>Znaleziona ilość pojazdów:<b>\"; echo $dane['ile']; echo\"</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Strona: </span> &nbsp;\"; echo $bar; echo\"</td></tr></table></center>
  143.  
  144. &#092;";
  145.  
  146. }
  147.  
  148.  
  149. ?>


ale mam problem takiej treści że wyniki wyświetlam jako tabela :
pojazd1 pojazd2
pojazd3 pojazd4
pojazd5 pojazd6
itd.
np 10 na stronie ale jeśli jakiś pojazd jest zarezerwowany to wyswietla mi tak:

pojazd1 pojazd2
pojazd3 pojazd4
pojazd5

i nie mam pojęcia jak to poprawić
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.