Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie LIKE, Szukanie w bazie - ktorekolwiek ze słów
djgarsi
post
Post #1





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Witam. Jak w temacie, potrzebuję zapytania, które wyświetli mi którekolwiek ze słów podanych przez użytkownika.
Prosze o pomoc.
Go to the top of the page
+Quote Post
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Podziel wpisana frazę po spacji (explode) i dynamicznie zbuduj zapytanie na zasadzie:
WHERE (pole LIKE slowo1 OR pole LIKE slowo2 ...)
Go to the top of the page
+Quote Post
djgarsi
post
Post #3





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


mam rozumieć że tym się kierować(IMG:style_emoticons/default/questionmark.gif)
  1. $fraza = "wyraz1 wyraz2 wyraz3 wyraz4";
  2. $zmienna = explode(" ", $fraza);
  3. echo $zmienna[0];
  4. echo $zmienna[1];
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Tak.
Go to the top of the page
+Quote Post
djgarsi
post
Post #5





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Ok. Z pojedynczym wyświetlaniem sobie poradziłem. Teraz jest problem taki, że nie wiem jak wyświetlić pojedynczo słowa z formularza.
Mój kod to:
  1. <?php
  2.  
  3. echo'<form action="" method="POST">
  4. <input type="text" name="szukaj"> <input type="submit" value="Ok">
  5. </form>';
  6.  
  7. $fraza = $_POST["szukaj"];
  8. $zmienna = explode(" ", $fraza);
  9.  
  10. $ile = str_word_count($fraza);
  11. echo 'Tekst '.$fraza.' zawiera '.$ile.' slow';
  12. echo ' Oto i one: ';
  13. for ($i = 0; $i = $ile; $i=$i+1) {
  14. echo $zmienna[$i];
  15. }
  16. ?>

Niestety pętla pokazuje tylko ostatnie słowo nieskończoną ilość razy.
Go to the top of the page
+Quote Post
mkozak
post
Post #6





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 21.03.2005

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


Jeżeli to jest jedno pole w którym szukasz np.: tabela z newsami ma pole news_tresc, to zrób na niej full text index

  1. ALTER TABLE `news` ADD FULLTEXT (
  2. `news_tresc`
  3. )

a wyszukaj tak:
  1. SELECT *
  2. FROM `news`
  3. WHERE MATCH (
  4. `news_tresc`
  5. )
  6. AGAINST (
  7. 'slowo1 slowo2 slowo3'
  8. )


  1. <?php
  2. echo'<form action="" method="POST">
  3. <input type="text" name="szukaj"> <input type="submit" value="Ok">
  4. </form>';
  5. $fraza = $_POST["szukaj"];
  6.  
  7. $zmienna = explode(" ", $fraza);
  8.  
  9. echo 'Tekst '.$fraza.' zawiera '.$ile.' slow';
  10. echo ' Oto i one: ';
  11. foreach ( $zmienna as $slowo) {
  12. echo $slowo;
  13. }
  14.  


Ten post edytował mkozak 29.07.2010, 12:24:05
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Zobacz sobie, jak ma wyglądać for, bo to elementarny błąd.
Go to the top of the page
+Quote Post
krispak
post
Post #8





Grupa: Zarejestrowani
Postów: 250
Pomógł: 55
Dołączył: 27.08.2008

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


Dokladnie zrob to w foreach lub jak juz chcesz w for to zmien $i = $ile na $i < $ile
Go to the top of the page
+Quote Post
djgarsi
post
Post #9





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


No ok. Oddzielenie słów już mam. Tylko teraz jak to do zapytania dac żeby szukało dla ktoregokolwiek ze słów.(IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
krispak
post
Post #10





Grupa: Zarejestrowani
Postów: 250
Pomógł: 55
Dołączył: 27.08.2008

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


  1. $warunki=" (Tytul LIKE '%$zmienna[0]%')";
  2. for ($i=1;$i<count($zmienna);$i++)
  3. {
  4. $warunki.=" or (Title LIKE '%$zmienna[$i]%')";
  5. }
  6.  
  7. $sql = mysql_query("SELECT * FROM costam WHERE ".$warunki."");
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 18.09.2025 - 13:50