Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyszukiwarka i wyświetlenie całego rekordu
Forum PHP.pl > Forum > Przedszkole
murgal
Witam,


Mam skrypt wyszukiwarki:

  1. <?php //na katalogu 2
  2. // program wyszukiwarki - search.php
  3. // wyświetlenie nagłówka
  4. echo'<h2>Wyniki wyszukiwania</h2>';
  5. // usunięcie niepotrzebnych białych znaków
  6. $_POST['phrase']=trim($_POST['phrase']);
  7. // sprawdzenie, czy użytkownik wpisał dane
  8. if(empty($_POST['phrase']))
  9. // jeśli nie, to wyświetl komunikat i zakończ działanie skryptu
  10. die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
  11. // jeśli jednak dane są wpisane poprawnie
  12. else
  13. {
  14. // połączenie z bazą danych, NIE ZAPOMINJ USTAWIĆ WŁASNYCH DANYCH!
  15. $base=mysql_connect('localhost','fodsadasdrupy','Mdasdasda1','fasdasdaupy');
  16. mysql_select_db("forumocb_grupy",$base);
  17. // skonstruowanie zapytania
  18. // zwróć uwagę na operator Like - to on jest sercem całej aplikacji. Pozwala wyszukać dany ciąg w bazie danych
  19. // jak zapewne zauważyłeś, przed frazą i po niej umieszczam znaki procenta %
  20. // ten znak symbolizuje dowolny inny ciąg znaków, więc jest niezbędny do skutecznego wyszukiwania
  21. // połaczenie operatorem Or pozwala na wyszukiwanie danego ciągu zarówno w nazwie, jak i opisie produktu
  22. // UWAGA! Tutaj też nie zapomnij ustawić swoich danych!
  23. $query="Select imie From test Where imie Like '%{$_POST['phrase']}%'";
  24. // wysłanie zapytania do bazy danych
  25. $result=mysql_query($query,$base) or die(mysql_error());
  26. // ustalenie ilości wyszukanych obiektów
  27. $obAmount=mysql_num_rows($result);
  28. // wyswietlenie ilości wyszukanych obiektów
  29. echo'Znaleziono: '.$obAmount.'<br /><br />';
  30. // wyświetlenie wyników w pętli
  31. for($x=0;$x<$obAmount;$x++)
  32. {
  33. // przekształcenie danych na tablicę
  34. $row=mysql_fetch_assoc($result);
  35. // wyświetlenie numeru identyfikacyjnego
  36. echo $x+1;
  37. echo '. ';
  38. // wyświetlenie nazwy produktu
  39. echo $row['imie'];
  40.  
  41. echo'<br />';
  42. }
  43. }
  44. // zamknięcie połączenia
  45. mysql_close($base);
  46. // koniec aplikacji
  47. ?>



Wyszukije on w tabeli TEST imienia, wszystko działa, ale skrypt robi coś takiego, wpisuje w formularzu imie, np: Piotr, skrypt wywala stronę że znaleziono 1 i wypisuje Piotr

Chciałbym, że jak znajdzie coś, wyświetli cały rekord, tzn Imie, nazwisko itd.

Dodatkowo, jak zrobić aby można było wyszukiwać nie tylko po imieniu, ale i po nazwisku?

Wazniak96
Wystarczy edytować parę linijek. Przy okazji poprawiam parę błędów. Noo i wywal te komentarze bo kod jest nie czytelny. wink.gif

  1. <?php //na katalogu 2
  2. // program wyszukiwarki - search.php
  3. // wywietlenie nagłówka
  4. echo'<h2>Wyniki wyszukiwania</h2>';
  5. // usunięcie niepotrzebnych białych znaków
  6. $_POST['phrase']=trim($_POST['phrase']);
  7. // sprawdzenie, czy użytkownik wpisał dane
  8. if(empty($_POST['phrase']))
  9. // jeli nie, to wywietl komunikat i zakończ działanie skryptu
  10. die('Formularz wypełniony niepoprawnie! Nie można wywietlić wyników wyszukiwania!');
  11. // jeli jednak dane s? wpisane poprawnie
  12. else
  13. {
  14. // poł?czenie z baz? danych, NIE ZAPOMINJ USTAWIĆ WŁASNYCH DANYCH!
  15. $base=mysql_connect('localhost','xxx','xxx','xxx');
  16. mysql_select_db("forumocb_grupy",$base);
  17. // skonstruowanie zapytania
  18. // zwróć uwagę na operator Like - to on jest sercem całej aplikacji. Pozwala wyszukać dany ci?g w bazie danych
  19. // jak zapewne zauważyłe, przed fraz? i po niej umieszczam znaki procenta %
  20. // ten znak symbolizuje dowolny inny ci?g znaków, więc jest niezbędny do skutecznego wyszukiwania
  21. // połaczenie operatorem Or pozwala na wyszukiwanie danego ci?gu zarówno w nazwie, jak i opisie produktu
  22. // UWAGA! Tutaj też nie zapomnij ustawić swoich danych!
  23. $query="SELECT * FROM test WHERE imie LIKE '%{$_POST['phrase']}%' OR nazwisko LIKE '%{$_POST['phrase']}%'";
  24. // wysłanie zapytania do bazy danych
  25. $result=mysql_query($query,$base) or die(mysql_error());
  26. // ustalenie iloci wyszukanych obiektów
  27. $obAmount=mysql_num_rows($result);
  28. // wyswietlenie iloci wyszukanych obiektów
  29. echo'Znaleziono: '.$obAmount.'<br /><br />';
  30. // wywietlenie wyników w pętli
  31. x = 0;
  32. while($row = mysql_fetch_assoc($result))
  33. {
  34. // przekształcenie danych na tablicę
  35. $row=mysql_fetch_assoc($result);
  36. // wywietlenie numeru identyfikacyjnego
  37. $x++;
  38. echo $x . '. ';
  39. // wywietlenie nazwy produktu
  40. echo $row['imie'] . " - ".$row['nazwisko']; //dodajesz co tam potrzebujesz..
  41.  
  42. echo'<br />';
  43. }
  44. }
  45. // zamknięcie poł?czenia
  46. mysql_close($base);
  47. // koniec aplikacji
  48. ?>

1. Dodaj wcięcia.
2. Nie podawaj danych do mysql
murgal
O co chodzi z "wcięciami" ?

Wywala błąd :

  1. Parse error: syntax error, unexpected '=' in /home/forumocb/domains/drimsy.pl/public_html/test/szukaj.php on line 31
Turson
Nie filtrujesz danych. Podatne na SQL Injection
murgal
To jest kolego prosty, wewnętrzny skrypt, dostępny dla max 50 osób wink.gif

Chodzi mi głównie o to, żeby szukać po zawartości całej tabeli "test", ale żeby wyświetlało wyniki tylko w 3 polach, tzn : Imie, nazwisko, grupa1. Nic więcej, aktualnie wyświetla tylko imię.
Wazniak96
Ehh... naprawdę nie zauważyłeś, że wystarczy zamienić x na $x .? baaasmiley.gif
murgal
tongue.gif


Dobra, niby działa, niby "Znaleziono: 1", ale nic nie wyświetla, tylko:

Wyniki wyszukiwania
Znaleziono: 1

1. -

kod:

  1. <?php
  2. echo'<h2>Wyniki wyszukiwania</h2>';
  3.  
  4. $_POST['phrase']=trim($_POST['phrase']);
  5.  
  6. if(empty($_POST['phrase']))
  7.  
  8. die('Formularz wypełniony niepoprawnie! Nie można wywietlić wyników wyszukiwania!');
  9.  
  10. else
  11. {
  12.  
  13. $base=mysql_connect('localhost','foru_grupy','','forum');
  14. mysql_select_db("forumocb_grupy",$base);
  15.  
  16. $query="SELECT * FROM test WHERE imie LIKE '%{$_POST['phrase']}%' OR nazwisko LIKE '%{$_POST['phrase']}%'";
  17.  
  18. $result=mysql_query($query,$base) or die(mysql_error());
  19.  
  20. $obAmount=mysql_num_rows($result);
  21.  
  22. echo'Znaleziono: '.$obAmount.'<br /><br />';
  23.  
  24. $x = 0;
  25. while($row = mysql_fetch_assoc($result))
  26. {
  27.  
  28. $row=mysql_fetch_assoc($result);
  29.  
  30. $x++;
  31. echo $x . '. ';
  32.  
  33. echo $row['imie'] . " - ".$row['nazwisko'];
  34.  
  35. echo'<br />';
  36. }
  37. }
  38.  
  39. mysql_close($base);
  40.  
  41. ?>
  42.  
Wazniak96
Późno już... wink.gif

Skasuj linijkę 28.
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.