Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwarka w php
Forum PHP.pl > Forum > PHP
Zosiek
Mam problem z wyszukiwarką. Jak zrobić abym po wpisaniu frazy np. " Strona kontaktowa firmy" wyświetlał mi się wynik do Strony głównej i to strony z kontaktami (niżej widać gdzie są poszczególne słowa). BO normalnie po takim wpisaniu wyświetla mi się, że nie odnaleziono frazy. Przypuszczam, że trzeba tu użyć polecenia
Kod
explode
tylko nie wiem jak i gdzie. Tam także kod formularza do wyszukiwania jakby ktoś chciał skorzystać. biggrin.gif I co trzeba dopisać, żeby po wciśnięciu "szukaj" z pustym polem wyświetliło się (nie jako alert w Javascripcie tylko na stronei z wynikami), że nie wpisano żadnej frazy

  1. <?php
  2.  //Otrzymujemy dane
  3.  $sortowanie = $_POST['sort'];
  4.  $phrase = $_POST['phrase'];
  5.  
  6.  
  7.  //Baza
  8.  $database = array(
  9.  'firma, o, nas' => '<a href="about.php">O nas</a> - zobacz kim jesteśmy',
  10.  'Strona główna firmy, ' => '<a href="index.php">Strona główna</a> - Główny opis',
  11.  
  12.  'kontakt,formularz,kontaktowa,mapa,mapka,dojazdu,dojazd' => '<a href="contact.php">Kontakt</a> - skontaktuj się z nami',
  13.  );
  14.  
  15.  //Sortowanie
  16.  if (isSet($phrase) && $phrase != ""){
  17.  if ($sort == 1){
  18.      natsort($database);
  19.      $sorts = "rosnąco";
  20.  }else{
  21.      arsort($database);
  22.      $sorts = "malejąco";
  23.  }
  24.  
  25.  //Wynik
  26.  echo "Poszukiwane słowo:<span>".$phrase.".</span> Wybrano sortowanie:<span> ".$sorts.".\n</span><ol>\n";
  27.  
  28.  //Wyświetlamy wynik wyszukiwania - linki oraz opis
  29.  foreach ($database as $word => $adres){
  30.  if (@eregi(quotemeta($phrase), $word)){
  31.      echo "<li>".$adres."</li>\n";
  32.      $bl = true;
  33.  }}
  34.  
  35.  //Brak
  36.  if (!$bl){
  37.      echo '<li class="lack"><b>Nie znaleziono</b></li><li class="lack">Niestety nie udało nam się odnaleźć wyniku, który mógłby spełnić Twoje kryteria wyszukiwania. Spróbuj ponownie.</li>';
  38.  }}
  39.  
  40.  ?>

  1. <form method="post" action="search.php">
  2. <p><input type="text" value="" name="phrase" size="22"/>
  3. &nbsp;<select name="sort">
  4. <option value="1"'; if($sort==1){echo ' selected="selected"'; } echo '>Sortuj: rosnąco </option>
  5. <option value="0"'; if($sort==0){echo ' selected="selected"'; } echo '>Sortuj: malejąco </option>
  6. &nbsp;<input type="submit" value="Szukaj"/></p>
  7. </form>


Z góry dziękuje za pomoc
Matte
Co do szukania, masz rację, explode" title="Zobacz w manualu PHP" target="_manual pomoże Ci podzielić słowa, a do przeszukiwania tablic użyj array_key_exists" title="Zobacz w manualu PHP" target="_manual

Cytat
I co trzeba dopisać, żeby po wciśnięciu "szukaj" z pustym polem wyświetliło się (nie jako alert w Javascripcie tylko na stronei z wynikami), że nie wpisano żadnej frazy

  1. <?php
  2. if(count($phrase) == 0)){
  3. $error = true;
  4. }
  5. ?>
Zosiek
Gdzie umieścić ten explode? (proszę jeśłi możecie to wstawcie już to do kodu wyszukiwarki)
Gdzie umieścić tę funkcję?? (Chyba jest o 1 ")" za dużo)
Cytat
  1. <?php
  2. if(count($phrase) == 0)){
  3. $error = true;
  4. }
  5. ?>


Problem rozwiązany. Temat do zamknięcia.

  1. <?php
  2. //Otrzymujemy dane
  3. $sortowanie = $_POST['sort'];
  4. $phrase1 = $_POST['phrase1'];
  5. $phrase2 = explode(" ",$phrase1);
  6.  
  7.  
  8. //Formularz
  9. echo '<form method="post" name="search" action="search.php">'
  10. .'<p><input type="text" value="'.$phrase1.'" name="phrase1" size="22" />'
  11. .' &nbsp;<select name="sort">'
  12. .'<option value="1"'; if($sort==1){echo ' selected="selected"'; } echo '>Sortuj: rosnąco </option>'
  13. .'<option value="0"'; if($sort==0){echo ' selected="selected"'; } echo '>Sortuj: malejąco </option>'
  14. .'</select>'
  15. .' &nbsp;<input type="submit" value="Szukaj"/></p>'
  16. .'</form>';
  17.  
  18. //Baza
  19. $i=0;
  20. while($i<count($phrase2)) {
  21. $phrase = $phrase2[$i];
  22. $database = array(
  23. 'firma, o, nas, zajmowanie' => '<a href="about.php">O nas</a> - zobacz kim jesteśmy',
  24. 'Witamy' => '<a href="index.php">Strona główna</a> - Główny opis',
  25.  
  26. 'kontakt,formularz,kontaktowy,mapa,mapka,dojazdu,dojazd' => '<a href="contact.php">Kontakt</a> - skontaktuj się z nami',
  27.  
  28. 'cennik,cenniki,zapłata,koszty,ceny' => '<a href="order.php">Wynajmij</a>-Kup/wynajmij ',
  29. );
  30.  
  31. //Sortowanie
  32. if (isSet($phrase) && $phrase != ""){
  33. if ($sort == 1){
  34. natsort($database);
  35. $sorts = "rosnąco";
  36. }else{
  37. arsort($database);
  38. $sorts = "malejąco";
  39. }
  40.  
  41. //Wynik
  42. echo "Poszukiwane słowo:<span>".$phrase.".</span> Wybrano sortowanie:<span> ".$sorts.".\n</span><ol>\n";
  43.  
  44. //Wyświetlamy wynik wyszukiwania - linki oraz opis
  45. foreach ($database as $word => $adres){
  46. if (@eregi(quotemeta($phrase), $word)){
  47. echo "<li>".$adres."</li>\n";
  48. $bl = true;
  49. }}
  50.  
  51. //Brak
  52. if (!$bl){
  53. echo '<li class="lack"><b>Nie znaleziono</b></li><li class="lack">Niestety nie udało nam się odnaleźć wyniku, który mógłby spełnić Twoje kryteria wyszukiwania. Spróbuj ponownie.</li>';
  54. }}
  55. $i++;
  56. $bl = false;
  57. }
  58. ?>

  1. <form method="post" action="search.php">
  2. <p><input type="text" value="" name="phrase1" size="22"/>
  3. &nbsp;<select name="sort">
  4. <option value="1"'; if($sort==1){echo ' selected="selected"'; } echo '>Sortuj: rosnąco </option>
  5. <option value="0"'; if($sort==0){echo ' selected="selected"'; } echo '>Sortuj: malejąco </option>
  6. &nbsp;<input type="submit" value="Szukaj"/></p>
  7. </form>
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.