Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML][MYSQL]Wyszukiwarka
Forum PHP.pl > Forum > Przedszkole
frykar
Witam, już kiedyś poruszyłem ten temat. Stworzyłem bazę w mysql. Baza to serwis komputerowy. Mam tablice dodaj_serwis. Problem polega na tym, ze chcem z tej bazy wyszukać jakiś rekord wprowadzając np. dane-klienta albo nazwe_serwisu. Oto skrypt:
  1. <TITLE>Wyszukiwanie</TITLE>
  2. </HEAD>
  3. <H1>Wyszukaj dane</H1>
  4. <P><strong></strong></P>
  5.  
  6. <ul>
  7. <li><a href="szukaj.php">Wedlug Nazwa_serwisu</a>
  8. </ul>
  9. </BODY>
  10. </HTML>


szukaj.php
  1. <?php
  2. $db_name = "rma";
  3. $table_name = "dodaj_serwis";
  4.  
  5. $connection = @mysql_connect("localhost", "root", "")
  6. or die("Brak polaczenia");
  7.  
  8. $db = @mysql_select_db($db_name, $connection)
  9. or die("Wybor nieudany");
  10.  
  11. $sql = "SELECT * FROM 'dodaj_serwis' ORDER BY 'Nazwa_serwisu';";
  12.  
  13. $result = @mysql_query($sql, $connection)
  14. or die("Zapytanie nieudane");
  15.  
  16. while ($row = mysql_fetch_array($result))
  17. {
  18.  $Nazwa_serwisu = $row['nazwa_serwisu'];
  19.  $Telefon = $row['telefon'];
  20.  $Nr_seryjny = $row['nr_seryjny'];
  21.  $Data_zakupu = $row['data_zakupu'];
  22.  $Dlugosc_gwarancji = $row['dlugosc_gwarancji'];
  23.  $Rodzaj_serwisu = $row['rodzaj_serwisu'];
  24.  $Data_realizacji = $row['data_realizacji'];
  25.  $Dane_klienta = $row['dane_klienta'];
  26.  $Opis_problemu = $row['opis_problemu'];
  27.  
  28.  $display_block .= " <P><strong>$Nazwa_serwisu</strong> - $Telefon<br>
  29.                      <em>Nr_seryjny: $Nr_seryjny</em> Dane_klienta: $Dane_klienta</P>
  30.                    ";
  31.  
  32. }
  33. ?>


  1. <TITLE>Wyszukiwanie</TITLE>
  2. </HEAD>
  3. <H1>Wyszukano</H1>
  4.  
  5. <?php echo "$display_block"; ?>
  6.  
  7. <P><a href="menu.html">Powrot do menu</a></P>
  8. </BODY>
  9. </HTML>


Jestem prawie pewny ze problem jest tutaj:
  1. <?php
  2. $display_block .= " <P><strong>$Nazwa_serwisu</strong> - $Telefon<br>
  3.                      <em>Nr_seryjny: $Nr_seryjny</em> Dane_klienta: $Dane_klienta</P>
  4.                    ";
  5. ?>


Jak to rozwiazac. PHP nie jest moja mocna strona (dopiero zaczynam). Jak ewentualnie poprawic ten kawałek kodu. Dzieki.
erix
Cytat
Jestem prawie pewny ze problem jest tutaj:

Prawie oznacza wielką różnicę. winksmiley.jpg

A wyszukiwanie powinieneś zrealizować tu:
  1. <?php
  2. $sql = "SELECT * FROM 'dodaj_serwis' ORDER BY 'Nazwa_serwisu';";
  3. ?>

Poczytaj o słówku WHERE, formularzach PHP i liźnij ciut podstaw, bo będzie nam się ciężko dogadać.
frykar
Podstawy znam bo bym kodu nie napisałsmile.gif. Co do zapytania to jest dobre bo tak chcem żeby szukało. (jak cos zmienie to napisze) Problem jest tylko z tym wyswietleniem danych czyli jak pisałem z poleceniem display_block
erix
Cytat
Co do zapytania to jest dobre bo tak chcem żeby szukało. (jak cos zmienie to napisze) Problem jest tylko z tym wyswietleniem danych czyli jak pisałem z poleceniem display_block

:
Cytat
tym, ze chcem z tej bazy wyszukać jakiś rekord wprowadzając np. dane-klienta albo nazwe_serwisu. Oto skrypt:


Wybacz, ale nie czytam w myślach. winksmiley.jpg
frykar
To dobrze że nie czytasz w myslach:).Oki napisze jeszcze raz o co mi chodzi. Jak piasalem mam baze o nazwie rma. Tam jest tabela dodaj_serwis z kilkoma kolumnami( m.in. nazwa_serwisu i dane_klienta). Chcem zrobic wyszukiwarke, która bedzie wyszukiwala mi z tej bazy wszyskie rekordy, gdy np. na stronie wyszukujacej wpisze nazwe_serwisu (dla przykladu: wpisuje Geforce 7600GT i wyswietlaja mi sie wszyskie rekordy gdzie jest to 'haslo' czyli Geforce 7600GT). Czy teraz jest to jasniejsze??
wolguy
W tym pierwszym pliku musi być jakiś formularz. Gdzie użytkownik ma podać dane, których szuka? Wysyłasz formularz np. przez POST, odczytujesz te dane z tablicy $_POST i do zapytania SELECT * FROM 'dodaj_serwis' dodajesz WHERE costam = cosinnego.
erix
Cytat
Chcem

Ja nie chcę, to czemu piszesz prawie "chcemy"? tongue.gif http://sjp.pwn.pl/lista.php?co=chc%EA

Cytat
gdy np. na stronie wyszukujacej wpisze nazwe_serwisu (dla przykladu: wpisuje Geforce 7600GT i wyswietlaja mi sie wszyskie rekordy gdzie jest to 'haslo' czyli Geforce 7600GT). Czy teraz jest to jasniejsze??

http://forum.php.pl/index.php?showtopic=11...st&p=566460 winksmiley.jpg
frykar
Erix nie chcesz to nie pomagaj. A te Twoje posty nic nie dają. Co zbierasz punkty?
erix
Nie zbieram punktów. A gdybyś odrobinę pogłówkował, to byś wpisał WHERE do wyszukiwarki i znalazł setki stron, które wyjaśniają użycie.
isso
Poza tym... polecam dowiedzieć się o tym jak używać instrukcji LIKE dla zapytań SQL, dlaczego? jak przeczytasz to się dowiesz... i na pewno kiedyś zrozumiesz, że to potrzebne smile.gif i przydatne
frykar
Troche poczytałem i powalczyłem. Napisałem cos takiego, ale dalej rezultat nie jest zadowalajacy.
  1. <?php
  2. // program wyszukiwarki - search.php
  3.  
  4. echo'<h2>Wyniki wyszukiwania</h2>';
  5.  
  6. $_POST['phrase']=trim($_POST['phrase']);
  7.  
  8. if(empty($_POST['phrase']))
  9.  
  10. die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
  11.  
  12.  
  13. else
  14. {
  15.  
  16. $base=mysqli_connect("localhost","root","krasnal","rma");
  17.  
  18. $query="Select  From dodaj_serwis Where Nazwa_serwisu Like '%{$_POST['phrase']}%' Or Dane_klienta Like '%{$_POST['phrase']}%'";
  19.  
  20. $result=mysqli_query($base,$query);
  21.  
  22. $obAmount=mysqli_num_rows($result);
  23.  
  24. echo'Znaleziono: '.$obAmount.'<br /><br />';
  25.  
  26. for($x=0;$x<$obAmount;$x++)
  27. {
  28.  
  29. $row=mysqli_fetch_assoc($result);
  30.  
  31. echo $x+1;
  32. echo '. ';
  33.  
  34. echo $row['Nazwa_serwisu'];
  35. echo'<br />';
  36. }
  37. }
  38.  
  39. mysqli_close($base);
  40.  
  41. ?>
erix
Cytat
ale dalej rezultat nie jest zadowalajacy.

To znaczy? Sory, ale szklana kula mi się właśnie roztrzaskała... ;/
isso
no tak, ale co sie dzieje? bo wlasciwie ciezko powiedziec co jest nie tak - powiedz gdzie blad w tym co teraz masz... tzn nie wypisuje sie? czy jak?
frykar
Teraz zobaczyłem, że mam
Kod
mysqli
zamiast
Kod
mysql


Oto poprawiony skrypt:
  1. <?php
  2.  
  3. echo'<h2>Wyniki wyszukiwania</h2>';
  4.  
  5. $_POST['phrase']=trim($_POST['phrase']);
  6.  
  7. if(empty($_POST['phrase']))
  8.  
  9. die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
  10.  
  11. else
  12. {
  13. $base=mysql_connect("localhost","root","krasnal","rma");
  14.  
  15. $query="Select  From dodaj_serwis Where Nazwa_serwisu Like '%{$_POST['phrase']}%' Or Dane_klienta Like '%{$_POST['phrase']}%'";
  16.  
  17. $result=mysql_query($base,$query);
  18.  
  19. $obAmount=mysql_num_rows($result);
  20.  
  21. echo'Znaleziono: '.$obAmount.'<br /><br />';
  22.  
  23. for($x=0;$x<$obAmount;$x++)
  24. {
  25.  
  26. $row=mysql_fetch_assoc($result);
  27.  
  28. echo $x+1;
  29. echo '. ';
  30. echo $row['nazwa_serwsiu'];
  31. echo'<br />';
  32. }
  33. }
  34. mysql_close($base);
  35. ?>


błędy, które pokazuje są w tym miejscu:
  1. <?php
  2. $result=mysql_query($base,$query);
  3.  
  4. $obAmount=mysql_num_rows($result);
  5. ?>


Nie pokazuje wyników wyszukiwania. PS erix świetne teksty, chociaż się pośmieje robiąc bazę.

Pojawiają się takie błędy:
Warning: mysql_query(): supplied argument is not a valid MySQL
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result
erix
A nie pomyliłeś przypadkiem parametrów? winksmiley.jpg Zobacz, co w manualu jest na ten temat.
frykar
Dzieki, ale juz zrobilem. Troche inaczej, ale najwazniejsze ze dziala.
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.