poniedziałek, 18 grudnia 2017

Laboratorium PHP: Wyszukiwanie polskich słów w bazie danych - mysqli, php

W internecie jest dużo tematów, w którym użytkownicy piszą i pytają, jak napisać kod, aby wyszukiwarka wyszukiwała polskie słowa np: z ę, ą,ł itd, w bazie danych. Jest kilka rozwiązań.

Szukając po forach, przeważnie można spotkać rozwiązanie, które wyszukuje polskie słowa w bazie danych i takim rozwiązaniem jest napisanie takiego zapytania:

SELECT `sth` FROM `table` WHERE LOWER(`column`)LIKE LOWER('%sth%') 
COLLATE utf8_polish_ci

Trzeba pamiętać, że trzeba za każdym razem dopisywać COLLATE utf8_polish_ci. Ja jednak rozwiązałem to inaczej, i pokazują to dwa zrzuty mojego kodu. 
Pierwszy jest połączeniem z bazą a drugi zapytanie bez COLLATE utf8_polish_ci.


Korzystając z VertrigoServ, który ma swój pakiet, to ma domyślne hasło vertrigo, dlatego nie zamazałem hasła. Gdyby połączenie dotyczyło mojego hostingu, to już tak:)
Widać, że wystarczy jedna linijka, aby wyszukiwanie z polskimi znakami działało.
Teraz jak wyżej pisałem, będzie zapytanie, które wyszukuje polskie słowa w bazie danych.


W tym kodzie, co widać na zrzucie, nie ma w zapytaniu COLLATE..... Można zadać mi pytanie, po co mam w zapytaniu imię, nazwisko, wiek, dział, skoro szukam po słowie w bazie. Ten kod, dotyczy wyszukania pracowników w bazie z danego działu! Może to być dział rachunkowość, bankowość i ewentualnie można za pomocą tego kodu, wyszukać pracowników z poszczególnych miast. Wystarczy zmienić zmienną w php i też w formularzu (nie koniecznie) oraz zmodyfikować zapytanie, aby wyszukiwało po danej miejscowości.
Dalej w kodzie widać pobranie i wyświetlenie danych. I wszystko!