Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> skomplikowane zapytanie do bazy, jak je wykonać
pyrek
post
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 23.09.2003

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


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ć!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Ociu
post
Post #2





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




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)


Ten post edytował Ociu 7.06.2005, 16:32:19
Go to the top of the page
+Quote Post
pyrek
post
Post #3





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 23.09.2003

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


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.

Ten post edytował pyrek 8.06.2005, 11:02:17
Go to the top of the page
+Quote Post
Radarek
post
Post #4





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 23.05.2005

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


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





Goście







siema,

pisz na gg: 5799377
postaram sie pomóc (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

pozdrawiam
Go to the top of the page
+Quote Post
staspolo
post
Post #6





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 2.06.2005

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


witam,

czy mógł byś się później pochwalić efektem, sam coś podobnego próbuje zrobić z tym że na bazie *.dbf
Go to the top of the page
+Quote Post
pyrek
post
Post #7





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 23.09.2003

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


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.  }
  9. }
  10.  
  11. $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());
  12. $dane = mysql_fetch_assoc($result);
  13. $ile=$dane[0];
  14. $dane['ile']=($dane['ile']-$(IMG:http://forum.php.pl/style_emoticons/default/haha.gif) );
  15. $page_num = ceil($dane['ile']/$max);
  16.  
  17. if($dane['ile']>0){
  18.  
  19. for($i=0; $i<$page_num; $i++) {$ii=$i+1;
  20. if($_GET['pg']==$i){
  21.  
  22. $link=&#092;"<FONT class=normal2><b>$ii</b></font>\";}
  23. 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>\";
  24. $bar[]=$link;
  25. }
  26.  
  27. $start=(int)$_GET['start'];
  28. $new_bar=array();
  29. $bar_licz=0;
  30. for($i=1; $i<15; $i++) {
  31.  $new_bar[$start]=$bar[$start];
  32. if($bar[$start-$i]) { $new_bar[$start-$i]=$bar[$start-$i];$bar_licz++; }
  33.  if($bar[$start+$i]) { $new_bar[$start+$i]=$bar[$start+$i];$bar_licz++; }
  34.  
  35.  if($bar_licz==14)break;
  36.  }
  37.  
  38.  
  39. ksort($new_bar);
  40. $bar=implode(' | ',$new_bar);
  41.  
  42. if($start>0){
  43. $back=$start-1;
  44. $pgback=$pg-1;
  45. }
  46. if($start<$page_num-1){
  47. $next=$start+1;
  48. $pgnext=$pg+1;
  49. }
  50. $bar.=&#092;"&nbsp;&nbsp;\";
  51. $wynik_il=$dane['ile'];
  52. $start*=$max;
  53.  
  54. if($wynik_il>='1'){
  55.  
  56. 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>\";
  57. echo&#092;"<br><center>
  58.  &#092;";
  59. $x=$start;
  60. echo&#092;"<table>\";
  61. $wyniksz = mysql_query(&#092;"SELECT * FROM {$pr}pojazdy WHERE  aktywnosc_pojazdu!='0' ORDER BY marka_pojazdu  LIMIT $start,$max\")  OR die(mysql_error());
  62.  
  63. $lp=0;
  64.  
  65. while ($rekordsz = mysql_fetch_array ($wyniksz)){
  66. extract($rekordsz);
  67.  
  68. $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) \";
  69.  $result =mysql_query($query) OR die(&#092;"ERROR mySQL: $query\");
  70. if(!$row = mysql_fetch_assoc($result)){
  71.  
  72.  
  73. if($lp==0)echo &#092;"<tr>\";
  74. 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>
  75. <tr><td><img src=&#092;"$foto_pojazdu\" border=0 width=120 height=90 ><br>\";
  76.  
  77. $wynikce = mysql_query(&#092;"SELECT * FROM {$pr}cennik WHERE  grupa_cennik='$grupa_pojazdu'\")  OR die(mysql_error());
  78. while ($rekordce = mysql_fetch_array ($wynikce)){
  79. extract($rekordce);
  80. echo&#092;"<b>$netto_cennik PLN</b> netto/doba\";
  81. }
  82. echo&#092;"</td><td>
  83. <table>
  84.  
  85. <tr><td height=18 bgcolor=#C5D192 width=300><table width=100%><tr><td align=left >
  86. <img src=&#092;"images/5.gif\" border=\"0\" alt=\"ilość drzwi $drzwi_pojazdu\" ><big><b>$drzwi_pojazdu</b></big></td>\";
  87. if($abg_pojazdu!='0'){ echo&#092;"<td><img src=\"images/8.gif\" border=\"0\" alt=\"poduszki powietrzne\" ></td>\"; }
  88. if($wspomaganie_pojazdu!='0'){ echo&#092;"<td><img src=\"images/6.gif\" border=\"0\" alt=\"wspomaganie kierownicy\" ></td>\"; }
  89. if($abs_pojazdu!='0'){ echo&#092;"<td align=right ><img src=\"images/10.gif\" border=\"0\" alt=\"system ABS\"  ></td>\"; }
  90. echo&#092;"
  91. </tr></table>
  92. </td></tr>
  93. <tr><td height=20>
  94.  
  95. <table width=100%><tr>&#092;";
  96. if($van_pojazdu!='0'){ echo&#092;"<td><img src=\"images/9.gif\" border=\"0\" alt=\"VAN\" ></td>\"; }
  97. if($radio_pojazdu!='0'){ echo&#092;"<td><img src=\"images/11.gif\" border=\"0\" alt=\"radio/magnetofon/CD\" ></td>\"; }
  98. if($ac_pojazdu!='0'){ echo&#092;"<td align=right ><img src=\"images/7.gif\" border=\"0\" alt=\"klimatyzacja\"  ></td>\"; }
  99. echo&#092;"
  100. </tr></table>
  101.  
  102. </td></tr>
  103. <tr><td bgcolor=#C5D192 width=300 valign=bottom >
  104. <table width=100%><tr>&#092;";
  105. echo&#092;"<td>\";
  106. for ($i = 1; $i <= $confort_pojazdu; $i++) {
  107. echo&#092;"<img src=\"images/1.gif\" border=\"0\" alt=\"ilość osób do konfortowej jazdy $confort_pojazdu\" >\";
  108. }
  109. $lp_con=($max_pojazdu-$confort_pojazdu);
  110. for ($i = 1; $i <= $lp_con; $i++) {
  111. echo&#092;"<img src=\"images/2.gif\" border=\"0\" alt=\"maxymalna ilość osób $max_pojazdu\" >\";
  112. }
  113. echo&#092;"</td><td>\";
  114. for ($i = 1; $i <= $bagaz_pojazdu; $i++) {
  115. echo&#092;"<img src=\"images/3.gif\" border=\"0\" alt=\"duży bagaż\" >\";
  116. }
  117. echo&#092;"</td><td align=right >\";
  118. for ($i = 1; $i <= $small_pojazdu; $i++) {
  119. echo&#092;"<img src=\"images/4.gif\" border=\"0\" alt=\"mały bagaż\" >\";
  120. }
  121. echo&#092;"</td>\";
  122. echo&#092;"
  123. </tr></table>
  124. </td></tr>
  125. </table>
  126. <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>
  127. </td>&#092;";
  128. $lp++;
  129. if($lp==2){echo &#092;"</tr>\";$lp=0;}
  130.  
  131. }
  132. else {
  133.  
  134.  } } }
  135.  
  136. echo&#092;"
  137.  
  138. </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>
  139. <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>
  140.  
  141. &#092;";
  142.  
  143. }
  144.  
  145.  
  146. ?>


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ć
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 15:31