Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] zapytanie z like
Forum PHP.pl > Forum > Przedszkole
lolus
witam,

  1. <?
  2. include("connect.php");
  3.  
  4. $zapytanie = mysql_query("SELECT * FROM pytania WHERE pytanie LIKE '%$pytanie%'");
  5. $myrow=mysql_fetch_array($zapytanie);
  6. ?>


zmienna $pytanie jest pobierana z formularza, tylko jest problem :/ jesli wpisze w formularzu Ile to z bazy mi dobrze pobiera dane, na pytanie Ile` nie wyswietla nic...

prosze o pomoc!

ps. szukalem na forum o tym, probowalem cos z tym zrobic, ale nic z tego co znalazlem nie rozwiazuje problemu...
TomASS
Czyli:
  1. SELECT *
  2. FROM pytania
  3. WHERE pytanie LIKE '%Ile%';

Wyświetla rekordy, natomiast:
  1. SELECT *
  2. FROM pytania
  3. WHERE pytanie LIKE '%Ile`%';

już nie. Zapytanie jest jak najbardziej poprawne - może nie masz poprostu w bazie rekordow zawierających Ile`. Swoją drogą to po co ten apostrof?
Guest
"wyechuj" sobie zapytanie, wklej do phpmyadmina i zobaczysz czy Ci coś zwróci. albo skorzystaj z funkcji mysql_error i mysql_errno (wyświetlisz nimi błędy w zapytaniu).
lolus
dawalem mysql_error i nie ma żadnych bledow... bo chodzi mi o uzyskanie takiego czegos co by wyswietlalo dane pytania najbardziej podobnego do wpisanego...
penksa
przylaczam sie do pytania
luinnar
Jeżeli dobrze rozumiem to user wpisuje jakieś pytanie w formularzu a Ty chcesz wyszukać w bazie pytania najbardziej podobne do tego wpisanego.

W takim przypadku wyszukanie prze LIKE mija się z celem. Ja proponowałbym rozdzielić treść wpisanego pytania na słowa i szukać jakiś słów kluczowych.
lolus
Troszkę szerzej bym prosił smile.gif
luinnar
Dobrze do tabeli dodać pole keywords i wstawiać tam słowa kluczowe dla danego pytania np: "Jak wymienić płytę główną?" słowa kluczowe "wymienić, wymiana, płyta, płytę, główna". Tutaj pojawia się pierwszy problem smile.gif mianowicie odmiana słów w języku polskim. można zrobić tak, że w bazie umieszczamy jakieś najczęstsze odmiany (łatwiejsze) bądź umieszczamy tylko niezmienną część słowa (to chyba nazywa się temat ale nie jestem polonistą) i szukamy wg tego (dużo bardziej skomplikowane).

Teraz bierzemy sobie pytanie, które wpisał nasz user. Powiedzmy "Gdzie mam płytę główną w moim komputerze?" (wie że głupie ale to przykład smile.gif) i rozbijamy taki ciąg na słowa (explode" title="Zobacz w manualu php" target="_manual). Zaraz możemy wywalić 1- i 2-literowe wyrazy (w, o, na itp.) można także wyrzucić: "gdzie", "ile", "jak" itp. a reszty szukamy w bazie. Na koniec wyrzucamy znalezione wyniki.

To chyba tyle na szybko.
lolus
  1. <?
  2. include("connect.php");
  3.  
  4. $keywords = explode(' ', $pytanie);
  5.  
  6.  
  7. $zapytanie = mysql_query("SELECT * FROM pytania WHERE keywords LIKE '%$keywords%'");
  8. $myrow=mysql_fetch_array($zapytanie);
  9.  
  10. echo "$myrow[odpowiedz]";
  11.  
  12. ?>


dalej nic sad.gif
Guest
sorry za podbijanie, ale zalezy mi na odpowiedzi...
bim2
daj str_trplace("'", " ", $keywords) i jak chcesz zeby wywslalo tez np jeslimktos da Ile] to tez daj str_replace tyleze zamiast "'" daj "]" itd winksmiley.jpg
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.