Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Wyświetlanie rekordów z użyciem LIKE
Forum PHP.pl > Forum > Przedszkole
axwell
mam pewne zdanie które dziele funkcją explode na pojedyńcze słowa. Przykład:

  1. $pattern = "ala ma kota";
  2. $pattern = explode(" ",$pattern);


chcę aby skrypt sprawdził dla każego słowa czy podobne wyrażenie znajduje się już w bazie. Podobne oznacza to, czy przynajmniej jedno słowo z $pattern jest w polu ZDANIE. Jeżeli tak to powinien je wyświetlić. Robie coś takiego:

  1. for ($i = 0; $i <= sizeof($pattern); $i++) {
  2. if (strlen($pattern[$i]) > 4) {
  3. $wynik = mysql_query("SELECT * FROM elements WHERE zdanie LIKE '%$pattern[$i]%' LIMIT 1") or die(mysql_error());
  4. if(mysql_num_rows($wynik) > 0) {
  5. echo $r['zdanie'];
  6. };
  7. };
  8. };


Niestety mimo, że warunki zachodzą tj. $pattern = "ala ma kota", a w bazie mam zdanie "jan tez ma kota" to coś nie działa poprawnie i skrypt nic nie wyświetla... proszę o pomoc
mortus
A gdzie masz funkcję, która wyciągnie z wyniku rekord (mysql_fetch_***)? Poza tym zastanowiłbym się nad zapytaniem w stylu
  1. SELECT * FROM elements WHERE zdanie LIKE %$pattern[0]% OR zdanie LIKE %$pattern[1]% OR ... LIMIT 1;
Można je wygenerować dynamicznie w pętli. Wydajność zapytania nie będzie zbyt duża, ale lepsze to niż wysyłanie w pętli kilku zapytań.
Pikuss
Ja powiem tak... Kolega wyżej ma rację jeśli chodzi o zapytanie SQL jak i o funkcję mysql_fetch_assoc/array a dodatkowo dopowiem, że na początku jeszcze sprawdzasz długość ciągu, czy jest dłuższy od 4, a w Twoim zdaniu "Ala ma kota" nie ma żadnego wyrazu który ma więcej znaków niż 4 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.