Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie LIKE, Szukanie w bazie - ktorekolwiek ze słów
djgarsi
post 29.07.2010, 09:54:49
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
 
Start new topic
Odpowiedzi (1 - 9)
phpion
post 29.07.2010, 10:24:14
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 29.07.2010, 10:38:04
Post #3





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

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


mam rozumieć że tym się kierować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 29.07.2010, 10:58:47
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 29.07.2010, 11:30:33
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 29.07.2010, 12:21:30
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


--------------------
==============================================
Bo ja jestem Wróbelek Htmlek
==============================================
Go to the top of the page
+Quote Post
erix
post 29.07.2010, 12:21:57
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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
krispak
post 29.07.2010, 13:25:20
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


--------------------
* * * * * * * * * * * * * * * * * * * * * * * * *
PHP, Laravel, Docker, Docker Compose, Laradock, Redis, JS, React, Vue, CSS, SCSS, Gulp, GIT ... itd..
Go to the top of the page
+Quote Post
djgarsi
post 29.07.2010, 13:53:20
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.sad.gif


--------------------
Go to the top of the page
+Quote Post
krispak
post 29.07.2010, 14:11:22
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."");


--------------------
* * * * * * * * * * * * * * * * * * * * * * * * *
PHP, Laravel, Docker, Docker Compose, Laradock, Redis, JS, React, Vue, CSS, SCSS, Gulp, GIT ... itd..
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:50