Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwanie
Forum PHP.pl > Forum > Gotowe rozwiązania
Kali997
Witam
Mam w bazie danych tabele ze spisem plyt cd. Tabela zawiera kolumny ID, wykonawca, tytul. Chce stworzyc wyszukiwarke do tej tabeli. Ale taka ktora by mogla wyszukiwac po numerze ID, nazwie wykonawcy lub nazwie tytułu. Nie mam zielonego pojecia jak sie za to zabrac. Prosze o pomoc.
ikioloak
Czym sie rozni takie wyszukiwanie jak napisales od jakiegokolwiek innego? Robisz jakis formularz i pozniej cos ala
  1. SELECT *
  2. FROM plyty WHERE id=$var OR nazwa='$var' OR title='$var'

oczywiscie to nie jest w zadnym wypadku gotowiec zapytania. Rozumiem ze cos w php potrafisz i liznales chociaz mysqla. Jak dalej czegos nie wiesz, to pisz, ale konkretniej o co chodzi.
Kali997
Juz konkretnie mowie o co mi chodzi. Che zeby na formularzu byly trzy pola input: ID, wykonawca, tytuł oraz przycisk submit. Wyszukiwanie ma polegac na tym ze jezeli wpisze wartosc e pole ID to ma wyszukiwac w kolumnie ID w bazie danych, jezeli wpisze wartosc w pole wykonawca to ma wyszukiwac w kolumnie wykonawca w bazie dancyh itd.
ikioloak
No to tworzysz formularz - z tym chyba problemu nie ma. Dalej w pliku php ktory jest w action formularza robisz cos ala to:
  1. <?php
  2.  
  3. $query=&#092;"SELECT * FROM baza WHERE \";
  4. if ($_POST['id']!='') 
  5. {
  6.  $query.='id = '.$_POST['id'].' ';
  7.  if (($_POST['nazwa']!='')||($_POST['tytul'])!='') $query.=' AND';
  8. }
  9. if ($_POST['nazwa']!='')
  10. {
  11.  $query.='nazwa=''.$_POST['nazwa'].'' ';
  12.  if ($_POST['tytul']!='') $query.=' AND';
  13. }
  14. if ($_POST['tytul']!='') $query.=' tytul=''.$_POST['tytul'].'' ';
  15. ...
  16. $result=mysql_query($query) or die(mysql_error());
  17. ...
  18.  
  19. ?>

Pisane z palca wiec bez gwarancji. Moze to mozna zrobic prosciej i przejzysciej - na razie tylko to mi przychodzi do glowy.
Kali997
Niby wszystko Ok tylko cos z ta linijka jest nie tak
$query="SELECT * FROM baza WHERE "; nie bardzo moge wymyslec co ma byc po WHERE
ikioloak
Nic nie ma byc po where. To co po where bedzie to wyjdzie na postawie tego co ktos wpisze w formularzu. Probowales odpalic w ogole to co napisalem wczesniej?
popo
moze troche inaczej (maly opis do skryptu zaprezentowanego przez ikioloak)

zwroc uwage ze zmienna $query wystepuje w ifach i to po lewej stronie znaku rownosci co oznacza ze cosik do niej w tych ifach podstawiamy (konkretnie to podstawiamy wartosci z formularza - pola wyszukiwania jesli cokolwiek w nich bylo) a zapis w stylu
  1. <?php
  2. $query.= 
  3. ?>
oznacza ze dopisujemy tekst do zmiennej na jej koncu czyli po where snitch.gif

nie wiem tylko czy to zadziala jesli w zadnym polu user nic nie wpisze a nacisnie submit proponowal bym wiec dodac where do zapytania tylko w wypadku jesli w ktores z pol wyszukiwania wstawiono jakis ciag znakow

minimalnie zmieniony skrypt
  1. <?php
  2.  
  3. $query=&#092;"SELECT * FROM baza\";
  4. if ($_POST['id']!='' or $_POST['nazwa']!='' or $_POST['tytul']!='') 
  5.  {
  6. $query.=&#092;" WHERE \";
  7. if ($_POST['id']!='')
  8. {
  9. $query.='id = '.$_POST['id'].' ';
  10. if (($_POST['nazwa']!='')||($_POST['tytul'])!='') $query.=' AND';
  11. }
  12. if ($_POST['nazwa']!='')
  13. {
  14. $query.='nazwa=''.$_POST['nazwa'].'' ';
  15. if ($_POST['tytul']!='') $query.=' AND';
  16.  }
  17.  if ($_POST['tytul']!='') $query.=' tytul=''.$_POST['tytul'].'' ';
  18.  }
  19. ...
  20. $result=mysql_query($query) or die(mysql_error());
  21. ...
  22.  
  23. ?>

mozna tez uzyc isset() do sprawdzenia czy zmienna ma wartosc snitch.gif
Kali997
Dzieki za pomoc dziala super.
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-2024 Invision Power Services, Inc.