Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwarka
Forum PHP.pl > Forum > PHP
kbilski
Witam

Dlaczego mi ten kod nie przeszukuje tabeli i nie wyświetla wyników.
Mam bazę npt_select a w niej m.in. tablice 'kamery' i pola takie jak 'nazwa'

a na stronce: Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania! a po kliknięciu w szukaj:No input file specified.
Czemu nie zaciąga danych z bazy?

  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('','','','npt_select');
  16. mysql_select_db("npt_select",$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 nazwa From kamery Where nazwa 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['nazwa'];
  40. echo'<br />';
  41. }
  42. }
  43. // zamknięcie połączenia
  44. mysql_close($base);
  45. // koniec aplikacji
  46. ?>
plej
a pobranie wyników z bazy?

  1. #
  2. $query="Select nazwa From kamery Where nazwa Like '%{$_POST['phrase']}%'";
  3. $result = mysql_query($query);
  4. while ($row = mysql_fetch_assoc($result)) {
  5. $wynik = $row["nazwa_pola"];
  6.  
  7. // i wtedy dopiero wyświetla dane
  8. #
  9. echo'Znaleziono: '.$wynik.'<br /><br />';
  10. }
CuteOne
  1. <?php
  2. echo '<pre>';print_r($_POST); //zobacz co znajduje się w $_POST - może masz literówke, spacje w formularzu przy nazwie phrase
  3.  
  4. if(isset($_POST['phrase'])) {
  5.  
  6. die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
  7. }
  8. else {
  9. ?>
kbilski
plej tak też nie działa..chyba że cos skopałem po drodze..

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


A co do $_post to nie za bardzo wiem jak tego użyć, jeśli po prostu dokleję to pod kodem to wywala błąd w tej linii.
plej
Działa masz tu cały przykład ale mojej wyszukiwarki:) zapytania tylkoz mien i git:) :

  1. <?php
  2. function query_db($qstring) {
  3. include('db_login.php');
  4. require_once('DB.php');
  5. $connection DB::connect("mysq;://$db_username:$db_password@$db_host/$db_database");
  6.  
  7. if (DB::isError($connection)) {
  8. die("Nie można nawiązać połączenia z bazą danych: <br />". DB::errorMessage($connection));
  9. }
  10. $query = "SELECT * FROM ksiazki NATURAL JOIN autorzy WHERE ksiazki . tytul like '%$qstring%'";
  11. $result $connection-query($query);
  12. if (DB::isError($result)) {
  13. die("Nie można wykonać zapytania do bazy danych: <br />". $query." ".DB::errorMessage($result));
  14. }
  15. echo ('<table border="1">');
  16. echo "<tr><th>Tytuł</th><th>Autor</th><th>Stron</th></tr>";
  17. while ($result_row = $result->fetchRow()) {
  18. echo "<tr><td>";
  19. echo $result_row[1] . '</td><td>';
  20. echo $result_row[4] . '</td><td>';
  21. echo $result_row[2] . '</td></tr>';
  22. }
  23. echo ("</table>");
  24. $connection->disconnect();
  25. }
  26.  
  27. ?>
  28. <html>
  29. <head>
  30. <title>tatatatata</title>
  31. </head>
  32. <body>
  33. <?php
  34. $szukaj = $_GET["szukaj"];
  35. $self = $_SERVER['PHP_SELF'];
  36. if ($szukaj != NULL) {
  37. echo "Wyszukiwany ciąg to: <strong>$szukaj</strong>.";
  38. query_db($szukaj);
  39. }
  40. else {
  41. echo ('
  42. <form action"' .$self.'" method="get">
  43. <label>Znajdz:
  44. <input type="text" name="szukaj" id="szukaj" />
  45. </label>
  46. <input type="submit" value="Zatwierdz!" />
  47. </form>
  48. ');
  49.  
  50. ?>
  51. </body>
  52. </html>


Oczywiście musisz mieć pakiet PEAR DB albo zmień zapytania itd.smile.gif
kbilski
Masakra.. już nie wiem gdzie robię błąd ..pomożesz mi dodać te zapytania.?
Może mam coś nie tak z bazą..
MWL
Przedewszystkim wyechuj sobie zapytanie.

Potem dodaj jeszcze na koniec echo mysql_error();
plej
masz:

  1. <?php
  2. function query_db($qstring) {
  3. //stałe bazy danych
  4. $mysql_host = 'localhost'; // zmień
  5. $mysql_login = 'test'; // zmień
  6. $mysql_haslo = 'test'; // zmień
  7. $mysql_baza = 'test'; // zmień
  8.  
  9. // połączenie z bazą danych
  10. $polaczenie = mysql_connect($mysql_host, $mysql_login, $mysql_haslo) or die("Błąd: nie udało się nawiązać połączenia z bazą danych.". mysql_error());
  11. // połączenie ze schematem bazy danych
  12. mysql_select_db($mysql_baza) or die("Błąd: nie udało się wybrać schematu bazy danych.". mysql_error());
  13. // Górne połączenie na twoim miejscu dał do osobnego pliku np. db.php bynajmiej nie trzeba tego pisac ciagle:)
  14.  
  15. $query = "SELECT * FROM ksiazki NATURAL JOIN autorzy WHERE ksiazki . tytul like '%$qstring%'";
  16. $result = mysql_query($query);
  17. if (!$result) {
  18. die("Nie można nawiącać połaczenia z bazą danych". mysql_error());
  19. }
  20. echo ('<table border="1">');
  21. echo "<tr><th>Tytuł</th><th>Autor</th><th>Stron</th></tr>";
  22. while ($result_row = mysql_fetch_assoc($result)) {
  23. echo "<tr><td>";
  24. echo $result_row[1] . '</td><td>';
  25. echo $result_row[4] . '</td><td>';
  26. echo $result_row[2] . '</td></tr>';
  27. }
  28. echo ("</table>");
  29. $connection->disconnect();
  30. }
  31.  
  32. ?>
  33. <html>
  34. <head>
  35. <title>tatatatata</title>
  36. </head>
  37. <body>
  38. <?php
  39. $szukaj = $_GET["szukaj"];
  40. $self = $_SERVER['PHP_SELF'];
  41. if ($szukaj != NULL) {
  42. echo "Wyszukiwany ciąg to: <strong>$szukaj</strong>.";
  43. query_db($szukaj);
  44. }
  45. else {
  46. echo ('
  47. <form action"' .$self.'" method="get">
  48. <label>Znajdz:
  49. <input type="text" name="szukaj" id="szukaj" />
  50. </label>
  51. <input type="submit" value="Zatwierdz!" />
  52. </form>
  53. ');
  54.  
  55. ?>
  56. </body>
  57. </html>


Do reszty raczej już dojdziesz sam:) zapytanie '$query' zmien sobie:) i html bo nie wiem jak chcesz zeby ci wyświetlało rekordy:)
kbilski
użyłem drugiego kodu i też nie zasysa danych:

  1. [php:1:563e42cf83]<?php
  2.  
  3. if (!$searchterm)
  4. {
  5. echo "Nie podałeś nazwy pozycji do szukania";
  6. }
  7.  
  8. $searchterm = addslashes($searchterm);
  9.  
  10. @ $db = mysql_connect("bazy5.vel.pl", "npt_select", "haslotest");
  11.  
  12. if (!$db)
  13. {
  14. echo "Nie można połączyć się z bazą. Spróbuj później.";
  15. }
  16.  
  17. mysql_select_db("npt_select");
  18. $query = "select * from kamery where ".nazwa." like '%".$searchterm."%'";
  19. $result = mysql_query($query);
  20.  
  21. $num_results = mysql_num_rows($result);
  22.  
  23. if($num_results==0)
  24. {
  25. echo "Wynik wyszukiwania dla: ".$searchterm."<br/>";
  26. echo "Nie znaleziono takiej pozycji";
  27.  
  28. }
  29. else {
  30. echo "<p>Wynik wyszukiwania dla: ".$searchterm."<br/>";
  31. echo "Ilość znalezionych pozycji: ".$num_results."</p>";
  32.  
  33. for ($i=0; $i <$num_results; $i++)
  34. {
  35. $row = mysql_fetch_array($result);
  36. echo "<p><strong>".($i+1).". &nbsp; ";
  37. echo stripslashes($row["nazwa"]);
  38. echo "</strong><br>ilość: ";
  39. echo stripslashes($row["ilosc"]);
  40. echo "<br>Producent: ";
  41. echo stripslashes($row["producent"]);
  42. echo "</p>";
  43. }
  44. }
  45.  
  46. ?>[/php:1:563e42cf83]


tu jest baza -> BAZA
plej
ehh użyj pętli while wgl ja nie ogarniam twojego kodu:) może ktos inny ogarnie:) ja zawsze robie podobnie jak ja ci napisałem ten kod i działa mi wszystko....
kbilski
ten twój ostatni kod wywala błąd w ostaniej lini kodu..

  1. <?php
  2. function query_db($qstring) {
  3. //stałe bazy danych
  4. $mysql_host = ''; // zmień
  5. $mysql_login = ''; // zmień
  6. $mysql_haslo = ''; // zmień
  7. $mysql_baza = 'npt_select'; // zmień
  8.  
  9. // połączenie z bazą danych
  10. $polaczenie = mysql_connect($mysql_host, $mysql_login, $mysql_haslo) or die('Błąd: nie udało się nawiązać połączenia z bazą danych.');
  11. // połączenie ze schematem bazy danych
  12. mysql_select_db($mysql_baza) or die('Błąd: nie udało się wybrać schematu bazy danych.');
  13. // Górne połączenie na twoim miejscu dał do osobnego pliku np. db.php bynajmiej nie trzeba tego pisac ciagle:)
  14.  
  15. $query = "SELECT * FROM kamery NATURAL JOIN nazwa WHERE nazwa . id like '%$qstring%'";
  16. $result = mysql_query($query);
  17. if (!$result) {
  18. die("Nie można nawiącać połaczenia z bazą danych");
  19. }
  20. echo ('<table border="1">');
  21. echo "<tr><th>Tytuł</th><th>Autor</th><th>Stron</th></tr>";
  22. while ($result_row = $result->fetchRow()) {
  23. echo "<tr><td>";
  24. echo $result_row[1] . '</td><td>';
  25. echo $result_row[4] . '</td><td>';
  26. echo $result_row[2] . '</td></tr>';
  27. }
  28. echo ("</table>");
  29. $connection->disconnect();
  30. }
  31.  
  32. ?>
  33. <html>
  34. <head>
  35. <title>tatatatata</title>
  36. </head>
  37. <body>
  38. <?php
  39. $szukaj = $_GET["szukaj"];
  40. $self = $_SERVER['PHP_SELF'];
  41. if ($szukaj != NULL) {
  42. echo "Wyszukiwany ciąg to: <strong>$szukaj</strong>.";
  43. query_db($szukaj);
  44. }
  45. else {
  46. echo ('
  47. <form action"' .$self.'" method="get">
  48. <label>Znajdz:
  49. <input type="text" name="szukaj" id="szukaj" />
  50. </label>
  51. <input type="submit" value="Zatwierdz!" />
  52. </form>
  53. ');
  54.  
  55. ?>
  56. </body>
  57. </html>


Dobrze zadane jest to query?
plej
Zapytanie wydaje się być dobre:) zalezy jak tam w baząsmile.gif linia 29 zmień na: mysql_close();

i jak masz błąd to wklej go może tu? smile.gif


echo $result_row[1] . '</td><td>';
echo $result_row[4] . '</td><td>';
echo $result_row[2] . '</td></tr>';


pobiera dane ? może tez to zmien?
$result_row['nazwa'];

pooglądaj sobie filmiki te:
http://www.uw-team.org/videoarty_kurs_php.html
kbilski
Właśnie wkleiłem link do bazy..jest wyżej jako BAZA.
Błąd wyrzuca..Parse error: syntax error, unexpected $end in /home2/dealer/main/pkg/npt/sklep/html/szukaj2.php on line 57

Potrzebuje tylko pomocy z tym zapytaniem..$query bo czuje że tu jest cos nie tak..zerknij w baz proszę czy to ma szanse zaskoczyć..
plej
linia 57 instrukcja else nie jest zamknięta:) dopisz na końcu tzn. przec znacznik '?>' nawiaz '}'

zaraz zobacze tą baze danych smile.gif

  1. $query = "SELECT * FROM kamery WHERE nazwa LIKE '%$qstring%'";


wtedy pobierz dane:)
kbilski
coś się pojawiło smile.gif ale po wpisaniu modelu z pola 'nazwa' np ica-107 wywala

Wyszukiwany ciąg to: ica-107.
Fatal error: Call to a member function fetchRow() on a non-object in /home2/dealer/main/pkg/npt/sklep/html/szukaj2.php on line 22
plej
Zmień linie na:
  1. while ($result_row = mysql_fetch_assoc($result)) {


i powinno działaćsmile.gif
plej
Pisałem wcześniej zmień na mysql_close();

czyli zmień #
$connection->disconnect();

na mysql_close($polaczenie);

smile.gif bo po pierwsze jak ma zamknąć połączenie $connection? skoro taka zmienna nawet nei istnieje:) troche się kod nam pokrecił ale teraz powinno być wszystko okey:)
kbilski
no teraz tak jakby działa ale nie powinno wyrzucic zawartości kolumny 'nazwa'?

Zobacz tu http://portalsieciowy.pl/szukaj2.php?szukaj=ica-107
plej
Usuń linie 20, 21 i 28 smile.gif

i wklej mi kod od lini 22 do 27:)
kbilski
while ($result_row = mysql_fetch_assoc($result)) {
echo "<tr><td>";
echo $result_row[1] . '</td><td>';
echo $result_row[4] . '</td><td>';
echo $result_row[2] . '</td></tr>';
}

tam w bazie jest pełno danych technicznych i chciałbym aby po wpisaniu modelu ica-107 wyswietlało przynalezne kolumny czyli nie tylko nazwe ale tez id, porty itd
CuteOne
to zabierz się w końcu za czytanie poradników... bo tak to my do końca świata, możemy tańczyć...
kbilski
Może daj się wypowiedzieć użytkownikowi plej który po prostu pomaga rozwiązać problem. I dla którego zapewne czeka nagroda jeśli tylko uda mu się rozwiązać problem..wink.gif
Inne porady są zbędne...

uporałem się z problemem, ale jak mam cały kod w osobnym pliku to pięknie działa.
Ale jak go wstawię w diva do mojego całego kodu to po kliknięciu szukaj wywala "no input file specyfied" - o co może chodzić?

Wyszukiwarkę umieściłem w pliku szukaj2.php - jak wywołuje ten plik to działa.
Obok znajduje się plik selector.php do którego dorzucam ten kod z szukaj2.php - i wtedy wywala ten brak pliku.

Dobra działa..

plej ale jak ta wyszukiwarka działa w praktyce..jak po wpisaniu i kliknięciu szukaj - znika okienko szukania i nie da się ponownie wprowadzać szukanych ciągów
rozwiązałeś to jakoś?
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.