Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wyszukiwarka
Forum PHP.pl > Forum > Przedszkole
Sadu2
Witam,

  1. <?php
  2. $keyword=$_REQUEST["keyword"];
  3. $strpass.="&amp;keyword=".$_REQUEST["keyword"];
  4. {
  5. $searchkeyword=str_replace('$', '$',addslashes($_REQUEST["keyword"]));
  6. }
  7. else
  8. {
  9. $searchkeyword=str_replace('$', '$',$_REQUEST["keyword"]);
  10. }
  11. $searchkeyword=trim($searchkeyword);
  12.  
  13. $keyword_arr=explode(" ",$searchkeyword);
  14. foreach($keyword_arr as $key)
  15. {
  16. if($temp_str=="")
  17. {
  18. $temp_str="(title like '%$key%' or description like '%$key%' or keywords like '%$key%') ";
  19. $temp_str1="(companyname like '%$key%' or companyprofile like '%$key%') ";
  20. }
  21. else
  22. {
  23. $temp_str.=" $log_operator (title like '%$key%' or description like '%$key%' or keywords like '%$key%') ";
  24. $temp_str1.=" $log_operator (companyname like '%$key%' or companyprofile like '%$key%' ) ";
  25. }
  26. }
  27. $keyword_str=" and ($temp_str)";
  28. $keyword_str_profile=" and ($temp_str1)";
  29. }
  30. ?>


W dodawaniu wpisu jest miejsce na słowa kluczowe, więc jak wpisze w te miejsce: 'miasto, warszawa' lub 'miasto warszawa' i zapisze, a potem wpisuje w wyszukiwarkę: miasto warszawa to mi nic nie wyskakuje. Jedynie jak wpisze pojedyncze słowa: miasto albo warszawa to działa

Coś chyba tu jest źle sad.gif Pomocy sad.gif
marcio
to
  1. <?php
  2. $keyword_arr=explode(" ",$searchkeyword);
  3. ?>

Rozbijac rozbija slowa ale po spacji a nie po przecinku i bierze to jako jeden wyraz

  1. <?php
  2. if($temp_str=="")
  3. ?>

Skad ta zmienna $temp_str nie widze jej nigdzie jesli nie dowidzialem to sorki
Sadu2
Aha, czyli jak dodać to po przecinku, żeby działało?

  1. <?php
  2. $keyword_arr=explode(" ",$searchkeyword);
  3. $keyword_arr2=explode(", ",$keyword_arr[0]);
  4. foreach($keyword_arr2 as $key)
  5. {
  6. ...
  7. ?>


Tak powinno działać?
marcio
Cytat(Sadu2 @ 29.04.2008, 22:52:07 ) *
Aha, czyli jak dodać to po przecinku, żeby działało?

  1. <?php
  2. $keyword_arr=explode("", $searchkeyword);
  3. $keyword_arr2=explode(&#092;", \",$keyword_arr[0]);
  4. foreach($keyword_arr2 as $key)
  5. {
  6. ...
  7. ?>


Tak powinno działać?

Nom nie wiem nie znam az tak dobrze tablic ani tych zeczy ale ja bym to tak zrobil
  1. <?php
  2. $keyword_arr=explode(&#092;" \",$searchkeyword);
  3. $ile = count($keyword_arr);
  4. for($i = 0; $i < $ile; $i++) $keyword_arr2=explode(",", $keyword_arr[$i]); // skoro ma rozbic wszystkie wyrazy ale watpie ze to to
  5. foreach($keyword_arr2 as $key) {
  6.  
  7. //i tu reszta
  8.  
  9. }
  10.  
  11. ?>


Mam nadzieje ze nie napisalem zadnych glupot

Albo poprostu sprawdzaj za pomoca strstr()/strpos() czy w ciagiu jest , i jesli jest to rozbijaj za pomoca separatora , a jak nie to spacji
merk
Witam, ja bym napisał mniej wiecej tak:

  1. <?php
  2. $keyword = $_REQUEST["keyword"];
  3. $search_keywords = preg_split("/[ ,]/", $keyword, -1, PREG_SPLIT_NO_EMPTY); // rozbijamy string po przecinku oraz po spacji
  4.  
  5. $array1 = array();
  6. $array2 = array();
  7. $temp_str1 = "";
  8. $temp_str2 = "";
  9.  
  10. foreach ($search_keywords as $key) {
  11. $array1[] = "(title like '%$key%' or description like '%$key%' or keywords like '%$key%') ";
  12. $array2[] = "(companyname like '%$key%' or companyprofile like '%$key%') ";
  13. }
  14.  
  15. if (!empty($array1)) {
  16.  $temp_str1 = join ( " AND ", $array1 ); // laczymy tablice - zawsze mozna dac OR
  17. }
  18.  
  19. if (!empty($array2)) {
  20.  $temp_str2 = join ( " AND ", $array2 );
  21. }
  22. ?>
Sadu2
A dokładnie funkcja split(). Dzięki wielkie.
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.