Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wyszukiwarka książek
Forum PHP.pl > Forum > Przedszkole
Arhimenrius
Witam.
Więc piszę wyszukiwarkę książek (pod aplikacje dla biblioteki) przy użyciu biblioteki PDO, lecz mam taki problem. Więc planuje by ktoś mógł podać Twórcę, Tytuł, Wydawnictwo i rok wydania a następnie wyszukiwało. Oczywiście jeżeli zostanie wpisana tylko jedna rzecz, to ma wyszukiwać tylko względem niej, ale im więcej rzeczy poda, tym bardziej szczegółowe ma być wyszukiwanie

Z góry dziękuję
Arhimenrius
wNogachSpisz
Indeksy.
Arhimenrius
a można prosić o bardziej szczegółową odpowiedź? smile.gif
tomm
sprawdzasz czy w przesłanym formularzu pole zostało wypełnione NP.

if( trim($_POST['tytu']) !== '' ){
dodajesz do klauzuli WHERE tytul =:tytul;
dodajesz do tablicy warunków przesłaną wartość np. $conditions[] = $_POST['title'];
}

a później "bindujesz" tablićę conditions do zapytania
wNogachSpisz
Jeśli odpowiedź ma być szczegółowa, szczegółowe musi być i pytanie...

1. jak wiele ksiażek jest w bazie?
2. jak cześto (ile razy na sek) przeszukiwana będzie baza
3. jaki serwer jest do dyspozycji (shared hosting, vps czy dedyk)
Arhimenrius
Ciężko określić, ponieważ jest to aplikacja pisana na pokaz wink.gif do użycia będę mieć dedyka.
Tomm, tylko jak to zrobic, jezeli mam np...

  1. $stmt = $db->prepare("SELECT * FROM `books` WHERE `BoTitle` = :title");


To jak to ma tam dalej dopisywac? i co zastosowac? AND, to zwroci nic jak bedzie zle. za to OR to wypisze i wszystkie ksiazki o tym tytule jak i wszystkie ksiazki tego autora...
tomm
to zależy od koncepcji: jeżeli mają być spełnione wszystkie warunki to AND, jeśli którykolwiek to OR

realizować możesz np. tak:

  1. $conditions = array();
  2. $q = 'SELECT * FROM `books` WHERE 1 ';
  3.  
  4. if( trim($_POST['tytu']) !== '' ){
  5. $q .= 'AND title = ?, ';
  6. $conditions[] = $_POST['title'];
  7. }

i tak sprawdzasz w pętli wszystkie klucze $_POSTa, których wartości mają brać udział w wyszukiwaniu, natępnie obcinasz 2 ostatnie znaki z $q czyli ostatni przecinek i spację i na koniec wykonujesz zapytanie podpinając tablicę $conditions pod znaki zapytania

  1. $stmt = $db->prepare($q);
  2. $stmt->execute($conditions);


to tylko wskazówka ,oczywiście można to ładniej zrobić
Arhimenrius
hmmm... 2 ostatnie znaki? A jaką metodę polecasz by ocinało TYLKO w takim razie te 2 ostatnie znaki? praktycznie znalazłem str_replace, aczkolwiek w takim wypadku by tylko ostatnie kasowało, to niezbyt wiem jak użyć.

Chwile po przemyśleniach:

  1. $zmienna2 = substr($zmienna)-3;
  2. $zmienna2 .= ' " '


A teraz po nauczeniu się działania substr i próbie działania smile.gif

  1. $test = "piesek";
  2. $test = substr("$test", 0, -1);
  3. echo $test;


mam nadzieję że komuś się przyda smile.gif
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.