Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]wyszukiwarka, w momencie gdy pusty forularz ładuje sie pusta strona a nie komunikat
anka_skakanka
post 17.03.2011, 23:20:28
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 2.03.2011

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


Witam, zrobiłam wyszukiwarkę na bazie typu INNOdb a więc bez full-textu.. W momencie gdy kliknę w przycisk "szukaj" są opcje:
1. wprowadzono słowo, jest w bazie --> wyświetla je
2. wprowadzono słowo, nie ma w bazie --> komunikat
3. nic nie wprowadozno --> komunikat
No i w tym momencie 1wsze opcje działają a 3cia sie sypie tzn. zamisat komunikatu "w celu korzystania z wyszukiwarki treba coś wpisać" pojawia sie pusta strona ... wszytsko działa dobrze dopóki nie jest podpięte do diva ...
w pliku index. php mam formularz
  1. <div id="left">
  2. <h3> Wyszukiwarka </h3>
  3. <!--menu po lewej - wyszukiwarka-->
  4. <ul>
  5. <form name="form1" method="get" action="index.php?wyszukaj&">
  6. <input type="hidden" name="wyszukaj" value="TRUE" />
  7. <input type="text" name="wyszukaj" size="20">
  8. <input type="submit" name="Submit" value="Szukaj">
  9. (itd)
  10. if ($_GET["wyszukaj"])
  11. {include("szukaj.php"); }
  12. </form>
  13. </ul>
  14. <br>


w pliku szukaj php
  1. <body>
  2. <h2>Wyniki wyszukiwania</h2>
  3. <?php
  4. // program wyszukiwarki - SZUKAJ.php
  5. if (($_GET['wyszukaj'])) {
  6. $szukaj =$_GET['wyszukaj'];
  7. $szukaj=trim($_GET['wyszukaj']); // usunięcie niepotrzebnych spacji
  8. // sprawdzenie, czy użytkownik cokolwiek wpisał
  9. if ($szukaj!= &#8216;’{ // if ($szukaj!= ‘’) {
  10. include("config.php"); // połączenie z bazą danych
  11. /* Like - pozwala wyszukać dany ciąg w bazie danych % - symbolizuje dowolny inny ciąg znaków
  12. or pozwoli wyszukiwać usługę w nazwie */
  13. $pytanie_p = mysql_query("Select * From uslugi Where nazwa_uslugi Like '%".$szukaj."%'")
  14. or die ('błąd zapytania'); // zapytanie do bazy
  15. $liczba_rekordow = mysql_num_rows($pytanie_p);
  16. if ($liczba_rekordow==0) {
  17. echo "Brak wyników dla wyszukianej frazy ".$szukaj."";
  18. }
  19. else {
  20. echo "Wyszukiwanie znalazło ".$liczba_rekordow." pasujących wyników
  21. do szukanego wyrażenia <strong>".$szukaj." </strong><br><br>";
  22. echo "<table cellpadding=\"2\" border=1>";
  23. print ('<tr>');
  24. print ('<th>Nazwa usługi</th>'); print ('<th>Opis usługi</th>'); print('<th> Cena w zakładzie</th>');
  25. print ('</tr>');
  26. while($rekord_p = mysql_fetch_array($pytanie_p))
  27. {
  28. echo "<tr>";
  29. echo "<td>".$rekord_p['nazwa_uslugi']."</td>";
  30. echo "<td>".$rekord_p['opis_uslugi']."</td>";
  31. echo "<td>".$rekord_p['cena_w_zakladzie']."</td>";
  32. print ('</tr>');
  33. } //koniec while
  34. print ('</table>');
  35. } //koniec else wyszukiwanych fraz
  36. }
  37. } //konief if getwyszukaj
  38. else {
  39. echo "Należy coś wpisac by skorzystać z wyszukiwarki!";
  40. }
  41. ?>

Są jakieś pomysły na rozwiązanie ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sadistic_son
post 18.03.2011, 00:53:53
Post #2





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Linijke 10 z formularza zamień na to:
  1. if(isset($_GET['Submit']))

Linijke 5 z szukaj.php na to:
  1. if(isset($_GET['wyszukaj']))

Linijke 9 z szukaj.php na to:
  1. if($szukaj!='')


Generalnie to wyjaśnij co ta linijka 9 oznacza? Co TO:
  1. if ($szukaj!= &#8216;’{ // if ($szukaj!= ‘’) {
w ogóle jest? Zobacz już co sam forumowy parser zrobił z tym fragmentem.

Tłumaczę czemu Tobie to nie działało. W index.php w linijce 10 sprawdzasz czy wpisano tekst do pola wyszukaj. Przynajmniej zakładam, że taki był Twój zamiar. Jeśli wpisano to załączasz szukaj.php, jeśli nie to nie robisz nic. W szukaj.php znów sprawdzasz czy istnieje wartość pola wyszukaj, jeśli tak to 2 pierwsze przypadki Ci działają, natomiast 3 nie ma prawa działać bo w ogóle się plik szukaj.php nie wykona jeśli nie wpisano tekstu do tego pola (bo nie będzie include). Dlatego moje poprawki zmienią działanie kodu na taki: sprawdzamy czy kliknięto przycisk wysyłania forma, jeśli tak to includujemy szukaj.php. Następnie sprawdzamy czy jest ustawione pole wyszukaj, jeśli tak to zachodzą 2 pierwsze przypadki a jeśli jest puste to trzeci.

I na koniec... 1) Radziłbym użyć metody POST zamiast GET. 2) Skrypt masz zupełnie niezabezpieczony przed sql injection, użyj przynajmniej mysql_real_escape_string albo addslashes.

Ten post edytował sadistic_son 18.03.2011, 00:55:18


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post

Posty w temacie


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: 27.06.2025 - 16:10