Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Wyszukiwanie LIKE
Forum PHP.pl > Forum > Przedszkole
motorolka24
Witam. Czy jest możliwość wyszukiwania w bazie danych z użyciem LIKE w polu w którym występują znaczniki html'owe? Chodzi o to żeby przy tym wyszukiwaniu pominąć te znaczniki.


Czy ma ktoś pomysł jak to można zrobićquestionmark.gif Jedynym z rozwiązań jest trzymanie w osobnej kolumnie tabeli tego tekstu bez znaczników htmla tylko że w takiej sytuacji mamy w bazie danych nadmiarowe dane sad.gif no i to raczej odpada
sadistic_son
Generalnie to czemu nie. Znaczników nie masz przecież (chyba) w połowie słowa więc wystarczy podmienić spacje na % i gotowe.
Dla przykładu jeśli w bazie masz '<b>ala<i><br />ma kota</span>' to jeśli ktoś wpisze w wyszukiwaniu 'ala ma kota' zrób coś w tym stylu:
  1. $szukany=str_replace(' ','%',$_POST['wyszukaj']);
  2. $sql="SELECT * FROM tabela WHERE pole LIKE '%$szukany%'";
Alternatywnie, co będzie raczej bardzo nieoptymalne mógłbyś wczytać do tablicy wszystkie pary id+szukane pole, następnie wszystkie szukane pola potraktować strip_tags i następnie wyszukać interesujący Cię string w tej tablicy:
  1. $sql="SELECT id, pole FROM tabela";
  2. $res=mysql_query($sql);
  3. $tab=array();
  4. $i=0;
  5. while($r=mysql_fetch_array($res)){
  6. $no_html=strip_tags($r['pole']);
  7. if($no_tags==$_POST['wyszukaj']){
  8. $tab[$i]=$r['id'];
  9. $i++;
  10. }
  11. }
  12. print_r($tab); //zwroci tablice z id rekordow ktore spelniaja kryteria wyszukiwania
Nalezy jednak pamietac ze strp_tags dziala tylko dla poprawnych tagow czyli nie usunie ze stringu np czegos takieg <i > lub <br> bo poprawne sa <i> oraz <br />.
motorolka24
ale jak już dla pierwszej opcji wpisze tekst br to mi zwróci rekord a nie powinien sad.gif. Druga opcja odpada
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.