Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Wyszukiwarka książek
Arhimenrius
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 3
Dołączył: 19.04.2011

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


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





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Indeksy.
Go to the top of the page
+Quote Post
Arhimenrius
post
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 3
Dołączył: 19.04.2011

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


a można prosić o bardziej szczegółową odpowiedź? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
tomm
post
Post #4





Grupa: Zarejestrowani
Postów: 142
Pomógł: 28
Dołączył: 7.04.2008

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


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





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


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)
Go to the top of the page
+Quote Post
Arhimenrius
post
Post #6





Grupa: Zarejestrowani
Postów: 115
Pomógł: 3
Dołączył: 19.04.2011

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


Ciężko określić, ponieważ jest to aplikacja pisana na pokaz (IMG:style_emoticons/default/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...

Ten post edytował Arhimenrius 27.10.2011, 13:10:40
Go to the top of the page
+Quote Post
tomm
post
Post #7





Grupa: Zarejestrowani
Postów: 142
Pomógł: 28
Dołączył: 7.04.2008

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


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ć

Ten post edytował tomm 27.10.2011, 15:51:08
Go to the top of the page
+Quote Post
Arhimenrius
post
Post #8





Grupa: Zarejestrowani
Postów: 115
Pomógł: 3
Dołączył: 19.04.2011

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


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 (IMG:style_emoticons/default/smile.gif)

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


mam nadzieję że komuś się przyda (IMG:style_emoticons/default/smile.gif)

Ten post edytował Arhimenrius 28.10.2011, 13:01:49
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: 23.08.2025 - 21:36