![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Mam problem z napisaniem zaawansowanej wyszukiwarki. Formularz wygląda tak:
Mianowicie wszystko komplikuje się dla mnie, ponieważ użytkownik może wybrać pole "Wszystkie". I co wtedy zrobić? Sprawa byłaby prostsza bez tego czyli jedno zapytanie gdzie coś=coś i szukaj. Ale może wybrać np. miasto warszawa a dalej już "Wszystkie", "Wszystkie", "Wszystkie" etc. Jak to wyszukać? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Zacznij od podstaw, czyli normalnej komunikacji z bazą danych, tj. PDO.
2. Popraw swoją bazę danych. Występowanie krzaków prędzej czy później przyczyni się do sporych problemów. Wątek był poruszany dosłownie setki razy. Podpowiedź: baza danych powinna mieć ustawione domyślne kodowanie znaków na UTF8, połączenie Skrypt <--> Baza Danych musi mieć ustawione kodowanie UTF8 (parametr charset w DNS-ie PDO), pliki PHP powinieneś mieć zapisane jako UTF8 i na koniec najważniejsze: strona powinna być serwowana w kodowaniu UTF8 (nagłówek Content-Type oraz element <meta charset="utf-8" />). Miej jednak na uwadze, że to zapewni jedynie poprawny zapis dla nowych danych - stare musisz albo usunąć i wgrać ponownie, albo przekonwertować (Google: MySQL ICONV). 3. Budowanie zapytania i przekazanie mu odpowiednich parametrów: wywal to co miałeś do tej pory bo to się do niczego nie nadaje. Wyjątkowo, z racji na to, że kod jest śmiesznie krótki, a opis nadzwyczaj długi dostaniesz niemal gotowca:
EDIT: 4. Jeszcze odnośnie porównywania tekstu. Tutaj MySQL wykorzystuje tzw. collatory (Google: MySQL Collations), który pozwala na traktowanie różnych znaków jako tożsamych. Np. utf8_unicode_ci zwróci prawdę w następujących przypadkach: 'a' = 'A', 'Ę' = 'é', 'ß' = 'ss'. Niestety MySQL od lat posiada buga, który niepoprawnie traktuje literę "Ł". Ten post edytował Crozin 15.08.2013, 12:40:34 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 06:29 |