Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/mysql] problem z wyszukiwaniem
guilty82
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 31
Dołączył: 26.03.2007

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


Witam,

Może zacznę od kodu.
Mój fomularz wygląda tak:

  1. <form action="wyszukaj.php" method="get" name="wyszukaj" id="wyszukaj">
  2. <pre><select name="p_uzyt" id="pow"><option selected value="*">powierzchnia</option>
  3. <option value="">------------------------</option>
  4. <option value="1">do 80m2</option>
  5. <option value="2">80 do 120m2</option>
  6. <option value="3">powyżej 120m2</option>
  7. </select>
  8. </pre>
  9. <pre><select name="tech"><option selected value="*">technologia</option>
  10. <option value="">------------------------</option>
  11. <option value="murowany">murowany</option>
  12. <option value="szkieletowy">szkieletowy</option>
  13. </select>
  14. </pre>
  15. <pre><select name="kat"><option selected value="*">kategoria</option>
  16. <option value="">------------------------</option>
  17. <option value="parter">parterowy</option>
  18. <option value="male_poddasze">małe poddasze</option>
  19. <option value="poddasze">poddasze</option>
  20. </select>
  21.  
  22. <input name="szukaj" type="submit" id="wyszukaj" value="szukaj">
  23. </pre>
  24. </form>


Zapytanie tak:
  1. <?php 
  2. $p_uzyt = $_GET['p_uzyt'];
  3. $tech = $_GET['tech'];
  4. $kat = $_GET['kat'];
  5.  
  6. $lista = @mysql_query("SELECT * FROM domki
  7. WHERE p_uzytkowa='$p_uzyt' OR technologia='$tech'
  8. OR kategoria='$kat' ORDER BY p_uzytkowa");
  9. ?>


Ok. Mój problem dotyczy zmiennej $p_uzyt. Nie wiem jak zdefiniować dla niej wartość żeby zapytanie filtrowało pozycje które spełniają warunek. W bazie mam pozycje p_uzytkowa od 0.00 do 200.00 i przykładowo wybieram opcję <option value="2">80 do 120m2</option>. probowałem z IF, ale nie działa:
  1. <?php
  2. $p_uzyt = $_GET['p_uzyt'];
  3. if ($p_uzyt == 1) {
  4. $p_uzyt = $p_u < 80.00; }
  5. if ($p_uzyt == 2) {
  6. $p_uzyt = ($p_u > 80.00) and ($p_u < 120.00); }
  7. if ($p_uzyt == 3) {
  8. $p_uzyt = $p_u > 120.00; }
  9. ?>


--edit--
ok $p_u nie ma przypisanej wartości. teraz zauważyłem ten błąd. Jednak nadal się zastanawiam jak przekształcić tego IFa, żeby w zapytaniu wybrał tylko te pozycje, których p_uzytkowa = od 80 do 120
--edit--

Drugi problem to, że jak nie zaznacze żadnej opcji z forma to chciałbym aby z bazy zostały wyciągnięte wszystkie wartości. Próbowałem wstawić '*' jako default value:
  1. <option selected value="*">powierzchnia</option>

Jednak mysql chyba ignoruje "gwiazdki" przesyłane przez GET.
Proszę o pomoc

Ten post edytował guilty82 26.04.2007, 16:38:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
guilty82
post
Post #2





Grupa: Zarejestrowani
Postów: 176
Pomógł: 31
Dołączył: 26.03.2007

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


Chodzi o to, aby w zależności od ograniczeń podanych w formularzu, można było odpowiednio modyfikować SELECT. Ograniczenia te narzucą konieczność modyfikowania WHERE. Jeśli jednak nie określę żadnych warunków (chcemy żeby pokazało wszystkie wyniki), WHERE nie będzie potrzebne. Ponieważ jednak trudno modyfikować WHERE, które nie istnieje, w takiej sytuacji bedzie potrzebne WHERE które nic nie robi i zawsze jest prawdziwe (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Mam nadzieje, że jasno to wyjaśniłem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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: 26.12.2025 - 13:15