Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] wyszukiwarka
Forum PHP.pl > Forum > Przedszkole
ten_typ
Witam, straciłem cały dzień dzisiaj na tym, co nieco mi wyszło, ale nie do końca.

  1. </head>
  2. <h1>Szukaj w bazie</h1>
  3. <form method="post" action="szukaj1.php">
  4. <table width=90% align=center>
  5. <tr><td>Szukaj:</td><td><input type=text name='phrase' size=60 maxlength=255></td></tr>
  6. <td></td><td><input type=submit value=Szukaj></td></tr>
  7. </table>
  8. </form>
  9. </body>
  10. </html>

  1. <?php
  2. $_POST['phrase']=trim($_POST['phrase']);
  3. if(empty($_POST['phrase']))
  4. die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
  5. else
  6. {
  7. $dbc=mysql_connect('host','123','123');
  8.  mysql_select_db("db");
  9. $zapytanie="select * from wykladowca where imie like '%{$_POST['phrase']}%' or nazwisko like '%{$_POST['phrase']}%' or
  10. data_ur like '%{$_POST['phrase']}%' or ulica like '%{$_POST['phrase']}%' or numer_d like '%{$_POST['phrase']}%' or
  11. numer_m like '%{$_POST['phrase']}%' or kod like '%{$_POST['phrase']}%' or miasto like '%{$_POST['phrase']}%' or
  12. telefon like '%{$_POST['phrase']}%' or email like '%{$_POST['phrase']}%'";
  13. $wynik=mysql_query($zapytanie,$dbc) or die(mysql_error());
  14. $ilosc=mysql_num_rows($wynik);
  15. echo'Znaleziono: '.$ilosc.'<br /><br />';
  16. for($x=0;$x<$ilosc;$x++)
  17. {
  18.  
  19. $row=mysql_fetch_assoc($wynik);
  20. echo $x+1;
  21. echo '. ';
  22. echo $row['imie'], ' ', $row['nazwisko'], '   ', $row['data_ur'], '   ', $row['ulica'], ' ', $row['numer_d'], '/', $row['numer_m'],
  23. ' ', $row['miasto'], '   ', $row['kod'], '    ', $row['telefon'], ' ', $row['email'];
  24. echo'<br />';
  25. }
  26. }
  27. ?>


Pytanie: Teraz mam to w formie takiej, że jest 1 okienko - tam wpisujemy ciąg znaków i szuka w każdej kolumnie w każdym rekordzie. Wpiszemy a - pokaże wszystko co w tabeli zawiera "a". Chciałbym zrobić taką formę formularza gdzie będą wszystkie kolumny ( w moim przypadku 10: imię, nazwisko, .. ,email) i po wpisaniu w polu "imię" ciągu znaków (a w pozostałych nic nie wpisując), wyszukało w kolumnie "imię" dany ciąg. Czy mogę prosić o jakieś nakierowanie ?
Axexis
Hm. Przy wysłaniu formularza sprawdzasz czy w pole jest dłuższe niż 0 znaków (if(strlen($_POST['imie']>0)) [...]).
ten_typ
Niestety - nie do końca rozumiem.
mecenas
Prosta sprawa - musisz dodać do formularza te 10 pól (najprostsze, chociaż niekoniecznie najlepsze rozwiązanie). Następnie po przesłaniu formularza do skryptu sprawdzasz które pola zostały wypełnione i na podstawie tych informacji budujesz odpowiednie zapytanie sql smile.gif

Cóż jest w tym niejasnego? smile.gif
ten_typ
Poszukałem na forum i znalazłem pewny skrypt. Działa poprawnie, chciałbym nanieść na niego małą poprawkę:

  1. <?php
  2. $wh = array();
  3. if (!empty($_POST['imie']))
  4.   $wh[] = "imie like '%$imie%'";
  5.  
  6. if (!empty($_POST['nazwisko']))
  7.   $wh[] = "Nazwisko = '$_POST[nazwisko]' ";
  8.  
  9. if (!empty($_POST['data_ur']))
  10.   $wh[] = "Data_ur = '$_POST[data_ur]'";
  11.  
  12. if (!empty($_POST['ulica']))
  13.   $wh[] = "Ulica = '$_POST[ulica]'";
  14.  
  15. if (!empty($_POST['numer_d']))
  16.   $wh[] = "Numer_d = '$_POST[numer_d]'";
  17.  
  18. if (!empty($_POST['numer_m']))
  19.   $wh[] = "Numer_m = '$_POST[numer_m]'";
  20.  
  21. if (!empty($_POST['miasto']))
  22.   $wh[] = "Miasto = '$_POST[miasto]'";
  23.  
  24. if (!empty($_POST['kod']))
  25.   $wh[] = "Kod = '$_POST[kod]'";
  26.  
  27. if (!empty($_POST['telefon']))
  28.   $wh[] = "Telefon = '$_POST[telefon]'";
  29.  
  30. if (!empty($_POST['email']))
  31.   $wh[] = "Email = '$_POST[email]'";
  32.  
  33. if (!empty($wh))
  34.   $where = 'where '.implode(' and ', $wh);
  35. else
  36.   $where = '';
  37.  
  38.    $connection = @mysql_connect('host', 'login', 'pass')
  39.    or die('Brak połączenia z serwerem MySQL');
  40.    $db = @mysql_select_db('db_login', $connection)
  41.    or die('Nie mogę połączyć się z bazą danych');
  42.    
  43. $zapytanie = 'select * from wykladowca '.$where;
  44. $wynik=mysql_query($zapytanie) or die(mysql_error());
  45. $ilosc=mysql_num_rows($wynik);
  46. echo'Znaleziono: '.$ilosc.'<br /><br />';
  47. for($x=0;$x<$ilosc;$x++)
  48. {
  49.  
  50. $row=mysql_fetch_assoc($wynik);
  51. echo $x+1;
  52. echo '. ';
  53. echo $row['imie'], ' ', $row['nazwisko'], '   ', $row['data_ur'], '   ', $row['ulica'], ' ', $row['numer_d'], '/', $row['numer_m'],
  54. ' ', $row['miasto'], '   ', $row['kod'], '    ', $row['telefon'], ' ', $row['email'];
  55. echo'<br />';
  56. }
  57.  
  58. mysql_close($connection);
  59.  
  60. ?>


Wyszukiwarka działa na zasadzie: wpiszę poprawne nazwisko - pokaże mi listę osób z tym nazwiskiem, wpiszę nazwisko i ulicę - pokaże listę osób o danym nazwisku mieszkających na danej ulicy. W momencie gdy wpisuje część nazwiska - 2 litery, nie wyświetla mi żadnych osób. Próbowałem to zrobić (początek kodu - imię) ale w momencie wpisania jakiejkolwiek litery pokazuje mi wszystkie osoby które znajdują się w tabeli mysql. Może ktoś mi podpowiedzieć jak to zrobić ?
melkorm
no jeżeli wpiszesz do imienia jedną litere to wyrzuci wszystkich z tą literą w imieniu ... może poprostu dawałeś złe dane do imienia? Spróbuj dać jakieś istniejące I powinno zadziałać ... nie widze żadnego błędu ~~ .

btw. już widze błąd (chyba):

nie :

  1. <?php
  2. $wh[] = "imie like '%$imie%'";
  3. ?>


tylko :
  1. <?php
  2. $wh[] = "imie like '%{$_POST['imie']}%'";
  3. ?>


chyba że wcześniej dałeś tą zmienną $imie ...
ten_typ
Wielkie dzięki za pomoc, o to mi chodziło ;-)
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.