Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Problem z wyszukiwarką
Forum PHP.pl > Forum > Przedszkole
-Majestiq-
Witam,

Mam wyszukiwarkę realizowaną za pomocą takiego formularza:
  1. <form action="szukaj.php?id=szukaj" method="post">
  2. <input class="searchbox" maxlength="255" value="" name="wykonawca" type="text"><input name="btnG" value="" type="submit" class="btn">
  3. </form>


Plik szukaj.php wygląda tak:
  1. <?php
  2. require_once('header.php');
  3. require_once('gora.php');
  4. require("szukarka.php");
  5. require_once('stopka.php');
  6. ?>
[html][/html]

No i najważniejszy plik szukarka.php:
  1. <?php
  2. if($_GET['id'] == 'szukaj') {
  3. echo '<div id="bg">
  4. <div id="page">
  5. <div id="content" style="overflow:hidden;">'; //style="border: 1px solid #000; height:2000px;"
  6.  
  7. $wykonawca=$_POST['wykonawca'];
  8. $dodaj = mysql_query("INSERT INTO `szukark` ( `id` , `nazwa` ) VALUES ( '', '$wykonawca' );");
  9.  
  10. $sql = 'SELECT id,tytul,rozmiar,licznik FROM `'.$tabelka.'` WHERE `tytul` LIKE '%'.$wykonawca.'%' ORDER by tytul ';
  11. $result123 = mysql_query($sql);
  12.  $rekordow = mysql_num_rows($result123); 
  13. echo ' <span style="float: left;">Szukana fraza: <b>'.$wykonawca.'</b> // znaleziono '.$rekordow.' rekordĂłw</span><br><br>';
  14.  
  15.  
  16. if(mysql_num_rows($result123) > 0) {
  17.  
  18. while($row123 = mysql_fetch_assoc($result123))
  19. {
  20. $rowaqwe = tytul($row123['tytul']);
  21. $zmexpl = $row123['rozmiar'];
  22. $expl = explode('|', $zmexpl);
  23.  
  24.  
  25. echo '
  26. <div class="result" >
  27. <br /><a title="'.$row123['tytul'].'" class="title" style="font-weight: bold;" href="mp3,'.$row123['id'].','.$rowaqwe.'.html">'.$row123['tytul'].'</a><br>
  28. <b>Rozmiar</b>: '.$row123['rozmiar'].' . <b>Czas</b>: '.$row123['dlugosc'].' . <b>Pobrano</b>: '.$row123['licznik'].
  29. </div> 
  30. '; 
  31.  
  32.  }
  33.  
  34.  
  35.  
  36. require_once('news4.php');
  37. } else { require_once('news4.php');
  38. }
  39.  
  40. //elseif( !isset($_GET['id']) OR $_GET['id'] !== $row12['id']) {
  41. //require_once('wyniki.php'); 
  42. }
  43. ?>



Przy każdym wyszukiwaniu w tabeli 'szukark' są zapisywane ostatnie wyszukiwane frazy
i są one widoczne na jednej z podstron serwisu.

Chciałbym, żeby po kliknięciu na jedną z tych ostatnio szukanych fraz pojawiły się wyniki wyszukiwania dla tej właśnie frazy, czyli jakby przekazać anchor tego w co klikam jako zmienną dla wyszukiwarki, ale za chiny mi to nie wychodzi.

Schemat pliku, który odpowiada za wyświetlanie ostatnio wyszukiwanych fraz wygląda tak:

  1. <?php
  2. require_once('header.php');
  3. require_once('gora.php');
  4. echo '<div id="bg">
  5. <div id="page">
  6. <div id="content" >
  7. <div id="about" class="post">';
  8. function xss($content) {
  9. $content = str_replace('<script>alert(', '', $content);
  10. $content = str_replace('<script>', '', $content);
  11. $content = str_replace('</script>', '', $content);
  12. $content = str_replace('<img src=', '', $content);
  13. $content = str_replace('<img', '', $content);
  14. $content = str_replace('<br>', '', $content);
  15. $content = str_replace('<a', '', $content);
  16. return $content;
  17. }
  18. $sql = 'SELECT * FROM `szukark` Order by id DESC limit 500';
  19. $result123 = mysql_query($sql);
  20. $rekordow = mysql_num_rows($result123); 
  21. echo '<span style="float: left;"><b>Ostatnio Szukane</b></span><br><br>';
  22.  
  23. if(mysql_num_rows($result123) > 0) {
  24. while($row123 = mysql_fetch_assoc($result123))
  25. {
  26.  
  27. $nazwa = xss($row123['nazwa']);
  28.  
  29. echo '<a class="title" style="font-weight: bold;" href="szukaj.php?szukaj='.$nazwa.'&stron=600">'.$nazwa.'</a> | ';
  30.  
  31.  }
  32. } else {
  33. echo 'nie szukano';
  34. }
  35.  
  36.  
  37. echo'<div style="margin-bottom:600px;"></div></div>';
  38.  
  39. require_once('news4.php');
  40.  
  41. require_once('stopka.php');
  42. ?>




Jaki powinien być schemat linka aby to zadziałało, bo w tej chwili jest coś w stylu: http://www.domena.pl/szukaj.php?szukaj=pia...y&stron=600 i nie działą :/
Bardzo proszę o pomoc.
krzmig
Według mnie link powinien mieć taką formę:

Kod
http://www.domena.pl/szukaj.php?id=szukaj&wykonawca=$nazwa&stron=600


choć nie wiem czy dobrze zrozumiałem kod ;]
-majestiq-
No właśnie tak też próbowałem, ale nie działa. Jak za $nazwa podstawie jakiś tytul to i tak mi w wynikach pojawiają się wszystkie rekordy z bazy :/
krzmig
W kodzie szukarka.php robisz coś takiego:
  1. <?php
  2. $wykonawca=$_POST['wykonawca'];
  3. ?>

zmienna przekazywana przez adres jest w tablicy $_GET
zamiast:
  1. <?php
  2. $wykonawca=$_POST['wykonawca'];
  3. ?>

spróbuj wstawić:
  1. <?php
  2. if( $_POST['wykonawca'] )
  3. $wykonawca=$_POST['wykonawca'];
  4. else if( $_GET['wykonawca'] )
  5. $wykonawca=$_GET['wykonawca'];
  6. ?>
-majestiq-
A no wałśnie.

Ja to zrobiłem w ten sposób, że stworzyłem szukaj.2php i szukarka2.php
w szukaj2.php było include szukarka2.php a tam zamiast zmiennej POST jak w wersji 1 to GET smile.gif

Takie obejście zrobiłem, ale przecież można łatwiej :-)
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.