Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Wyświetlanie rekordów z użyciem LIKE
axwell
post
Post #1





Grupa: Zarejestrowani
Postów: 143
Pomógł: 1
Dołączył: 14.11.2007

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


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ń.
Go to the top of the page
+Quote Post
Pikuss
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 1
Dołączył: 8.02.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 14:11