Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/SQL] Nie zwraca spodziewanych wyników
Forum PHP.pl > Forum > PHP
Babcia@Stefa
Witam, mam sobie kod:

  1. <?php
  2. $Results = $mysqli->query('SELECT * FROM users WHERE name LIKE "%' .$Query. '%" OR surname LIKE "%' .$Query. '%"');
  3. ?>


I funkcję która zamienia w $Query Polskie znaki (¶ => \\:¶, ¦ => \\:S, ± => \\:a itp.)
Tyle że jak mam wyraz np. ٱka to nic nie znajdzie, gdy dam ±ka to wyszuka...

Co jest nie tak?

Pozdrawiam, WebNuLL(Babcia@Stefa)
webJ@cob
Problemy z dużymi i małymi literami.
Sugerował bym użycie funkcji PHP: mb_strtolower
Oraz SQL: LOWER
nevt
zmodyfikuj kod na:

  1. <?php
  2. $sql = "SELECT * FROM users WHERE name LIKE '%$Query%' OR surname LIKE '%$Query%";
  3. echo $sql;
  4. $Results = $mysqli->query($sql);
  5. ?>


i pokaż co ci się wyświetli.

Poza tym wyjaśnij co dokładnie robi twoja funkcja zmieniająca $Query, bo zapis:
Cytat
(ś => \\:ś, Ś => \\:S, ą => \\:a itp.)

nic nie wyjaśnia. Najlepiej pokaż kod tej funkcji.
Babcia@Stefa
Znalazłem rozwiązanie poprzez ucięcie pierwszej litery winksmiley.jpg
Ale jeśli mówicie że to problem z wielkością znaków to po kombinuje jeszcze smile.gif

@up

Dwie prymitywne funkcje zamieniające Polskie znaki na \\:znak aby w DB znaki się nie psuły smile.gif

  1. <?php
  2. function ConvertChars($String)
  3. {
  4. $Chars = array('ˇ', '±', '¶', '¦', 'Ľ', '¬', 'ń', 'Ń', 'ż', 'Ż', 'Ó', 'ó', 'Ł', 'ł', 'Ć', 'ć', 'Ę', 'ę');
  5. $Replaces = array(':A', ':a', ':s', ':S', ':x', ':X', ':n', ':N', ':z', ':Z', 'ohmy.gif', 'ohmy.gif', ':L', ':l', ':C', ':c', ':E', ':e');
  6. return str_replace($Chars, $Replaces, $String);
  7. }
  8.  
  9. function UnconvertChars($String)
  10. {
  11. $Chars = array(':A', ':a', ':s', ':S', ':x', ':X', ':n', ':N', ':z', ':Z', 'ohmy.gif', 'ohmy.gif', ':L', ':l', ':C', ':c', ':E', ':e');
  12. $Replaces = array('ˇ', '±', '¶', '¦', 'Ľ', '¬', 'ń', 'Ń', 'ż', 'Ż', 'Ó', 'ó', 'Ł', 'ł', 'Ć', 'ć', 'Ę', 'ę');
  13. return str_replace($Chars, $Replaces, $String);
  14. }
  15. ?>


Pozdrawiam.
Fixus
wiem, że sprawa zamknięta, ale zastanawia mnie czy nie mogłe¶ po prostu wymusić odpowiedniego kodowania na bazie przez
Kod
mysql_query("SET CHARSET utf8");

Nie jestem w 100% pewien czy to by pomogło, ale powinno. Je¶li mam rację to masz mniej kodu ergo masz mniej szans na bł±d ergo jest lepiej tongue.gif
to tylko luĽna my¶l hehe 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.