Mam problem z polskimi znakami a mianowicie, po wpisaniu w pole wyszukiwarki np:węgiel nie pokazuje mi wyników tylko komunikat : Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in search.php on line 47, ale jeśli wpiszę wegiel to wyniki wyskakują , i nie wiem co zrobić by działały polskie znaki. Tabela w bazie SQL jest na UTF8-polish_ci.
A tutaj kod
a tutaj php:
<style> body { font-family: "Tahoma"; font-size: 14px; margin:15px; background: #f4f4f4; background-position: top center; } </style> <?php // program wyszukiwarki - search.php // wyświetlenie nagłówka // usunięcie niepotrzebnych białych znaków // sprawdzenie, czy użytkownik wpisał dane // jeśli nie, to wyświetl komunikat i zakończ działanie skryptu // jeśli jednak dane są wpisane poprawnie else { // połączenie z bazą danych, NIE ZAPOMINJ USTAWIĆ WŁASNYCH DANYCH! $base=mysqli_connect('localhost','xxxxx','xxxxx','xxxxxl'); mysqli_query($base, "SET NAMES utf8"); mysqli_query($base, "SET CHARACTER SET utf8"); mysqli_query($base, "SET collation_connection = utf8_polish_ci"); // skonstruowanie zapytania // zwróć uwagę na operator Like - to on jest sercem całej aplikacji. Pozwala wyszukać dany ciąg w bazie danych // jak zapewne zauważyłeś, przed frazą i po niej umieszczam znaki procenta % // ten znak symbolizuje dowolny inny ciąg znaków, więc jest niezbędny do skutecznego wyszukiwania // połaczenie operatorem Or pozwala na wyszukiwanie danego ciągu zarówno w nazwie, jak i opisie produktu // UWAGA! Tutaj też nie zapomnij ustawić swoich danych! $query="Select * FROM firma WHERE telefon Like '%{$_POST['phrase']}%' Or firma Like '%{$_POST['phrase']}%' Or miejscowosc Like '%{$_POST['phrase']}%' Or asortyment Like '%{$_POST['phrase']}%' "; // wysłanie zapytania do bazy danych $result=mysqli_query($base,$query); // ustalenie ilości wyszukanych obiektów $obAmount=mysqli_num_rows($result); // wyswietlenie ilości wyszukanych obiektów // wyświetlenie wyników w pętli for($x=0;$x<$obAmount;$x++) { // przekształcenie danych na tablicę $row=mysqli_fetch_assoc($result); // wyświetlenie numeru identyfikacyjnego // wyświetlenie nazwy produktu echo('<p><br />Nazwa firmy: '.$row['firma'].' <br> Telefon: '.$row['telefon'].' <br> Ulica: '.$row['ulica'].'<br> Miasto: '.$row['miejscowosc'].'<br> Asortyment: '.$row['asortyment'].' <br> Umowa do : '.$row['umowa_do'].'</br>'); } } // zamknięcie połączenia mysqli_close($base); // koniec aplikacji ?>
Wcześniej jak szukałem jakiś fraz i wpisałem wyszukiwarce np : wegiel to jak otwierała mi sie nowa strona i miałem kilka rzcezy np: asortyment, ulica itp to były krzaczki jeśli pobierał wyniki z bazy ale jak dodałem:
mysqli_query($base, "SET NAMES utf8"); mysqli_query($base, "SET CHARACTER SET utf8"); mysqli_query($base, "SET collation_connection = utf8_polish_ci");
to w wynikach pokazuje polskie znaki , jedynie w wyszukiwarce jak wpisuej polskie to nie działa i wyskakuje komunikat który napisałem wcześniej (Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in search.php on line 47,).Wiem że to chodzi o kodowanie ale już mi się pomysły wyczerpały
