Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyszukiwanie danych
Forum PHP.pl > Forum > Przedszkole
salva
kod strony z pobraniem danych z tabeli i wyswietleniem ich w tabelce
  1. <?php
  2.  
  3. mysql_connect("","","");
  4.  
  5. $wynik = mysql_query("SELECT id,nazwa,opis,obrazek,cena FROM koszulki ")
  6. or die('Błąd zapytania');
  7. /*
  8. wyświetlamy wyniki, sprawdzamy,
  9. czy zapytanie zwróciło wartość większą od 0
  10. */
  11. if(mysql_num_rows($wynik) > 0) {
  12. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  13. echo "<table cellpadding=5 border=2>";
  14. while($r = mysql_fetch_assoc($wynik)) {
  15. echo "<tr>";
  16. echo "<td width=100>".$r['id']."</td>";
  17. echo "<td width=200>".$r['nazwa']."</td>";
  18. echo "<td width=200>".$r['opis']."</td>";
  19. echo "<td width=200><img src='".$r['id'].".jpg' alt='ffff'></td>";
  20. echo "<td width=100>".$r['cena']."</td>";
  21. echo '<td><a href="dodajkoszyk.php">Dodaj</a></td>';
  22.  
  23. echo "</tr>";
  24. }
  25. echo "</table>";
  26. }
  27.  
  28. ?>




chce zrobic wyszukiwarke, ze jak wpisze nazwe to mi ja znadzie i wyswietli caly produkt w postaci tabeli tak jak jest na powyzszej stronie a jak nie znajdzie, to pisze ze nie ma danego produktu

  1. <?php
  2. echo'<form action="szuk2.php" method="post">
  3. Wpisz wyszukiwany produkt: <input type="text" name="phrase" />
  4. <input type="submit" value="Szukaj!" />
  5. </form>'
  6. ?>


  1. <?php
  2.  
  3. $baza=mysql_connect("","","");
  4.  
  5. $wysz = $_POST['phrase'];
  6. $query="Select nazwa From koszulki Where nazwa Like '%".$wysz."%'";
  7. echo $query;
  8. $wyszk = mysql_query($query);
  9.  
  10. while($r = mysql_fetch_row($wyszk)) {
  11. echo "<table cellpadding=5 border=2>";
  12. echo "<tr>";
  13. echo "<td width=100>".$r['id']."</td>";
  14. echo "<td width=200>".$r['nazwa']."</td>";
  15. echo "<td width=200>".$r['opis']."</td>";
  16. echo "<td width=100>".$r['cena']."</td>";
  17. echo "</tr>";
  18. echo "</table>";
  19. }
  20.  
  21.  
  22. ?>


nie działa mi to, jak wpisze slowo adidas , bo mam produkt o takiej nazwie to wyswietla mi taka linijke
Cytat
Select nazwa From koszulki Where nazwa Like '%adidas%'
a pod nia pusta tabelke

a jesli wpisze nazwe ktorej nie ma to wyswietla tylko taka linijke
Cytat
Select nazwa From koszulki Where nazwa Like '%ggs%'



ziqzaq
Manual mysql_fetch_row() i przeczytaj co ta funkcja zwraca.
Dodatkowo dobrze by było żebyś sobie obsłużył w swoim kodzie ewentualne błędy mysql (w manualu masz przykłady).

Edit: Acha i jeśli nie dostajesz żadnych komunikatów na temat nieistniejących indeksów w tablicy to radzę jeszcze włączyć w php raportowanie błędów (przykład).
salva
jestem poczatkujacy i mam problemy z tym, niebardzo wiem jak to poprawic
ziqzaq
1. W manualu masz i opis tego jak działa funkcja, co zwraca i nawet przykład użycia. Zerknij sobie na niego i porównaj z tym co masz u siebie.
2. Dopisz sobie w pętli while taki kod
  1. echo '<pre>'.print_r($r, TRUE).'</pre>';

i zobacz sobie co zawiera zmienna $r.
3. Jak nadal nie będziesz kojarzył to zobacz w manualu, google czy co tam wolisz czym różni się tablica numeryczna od asocjacyjnej.
salva
wpisalem co mowiles w 2 puknice i wyskakuje cos takiego

Cytat
Array
(
[0] => Adidas


jesli wpisze poprawne slowo

a funkcja mysql_fetch_row() zwraca wiersz, dalej nie wiem na czym polega blad
ziqzaq
Wyjaśnienie:
Użyłeś funkcji mysql_fetch_row() która zwraca tablice numeryczną a ty korzystasz z niej jak z tablicy asocjacyjnej. Zobacz sobie co ci zwróci mysql_fetch_assoc(). Nawiasem nie wiem po cholere używasz funkcji której w ogóle nie rozumiesz skoro wcześniej użyłeś mysql_fetch_assoc().

Zanim dalej zaczniesz myśleć nad tym skryptem zdecydowanie polecam przeczytać dokładanie to: php arrays.
salva
ppo zmianie na ta druga fukncje wyskakuje tabeli tylko z ta nazwa co wpisuje a nie cala
mortus
Cytat(salva @ 5.04.2010, 17:42:09 ) *
ppo zmianie na ta druga fukncje wyskakuje tabeli tylko z ta nazwa co wpisuje a nie cala
A mógłbyś jaśniej. Skoro chodziło o wyszukiwanie, to chyba dobrze, że wyskakują koszulki z tą nazwą, którą wpisałeś. Czyż nie?
salva
tak wyskakuje tabela ale tylko z ta nazwa ktora szukam np jak wpisze Adidas to wyskakuje tylko z slowem Adidas a reszta tabeli jest pusta , a ja chce zeby mi wyswietlalo cala tabele z ta nazwa razem z opisem, cena itp
mortus
No to czemu w zapytaniu wybierasz tylko nazwę?
Cytat
  1. $query="Select nazwa From koszulki Where nazwa Like '%".$wysz."%'";
Użyj zapytania z pierwszego postu z linii 7 w listingu.
EDIT:
Poza tym znaczniki <table> i </table> chyba poza pętlą while powinieneś wyświetlić (tak jak w pierwszym poscie).

Nie wiem, czy dobrze mnie zrozumiałeś. Tak naprawdę, zrobienie wyszukiwarki, która będzie działała tak, jak chcesz wymaga delikatnej edycji kodu odpowiedzialnego za wyświetlanie wszystkich koszulek
  1. <?php
  2. mysql_connect("","","");
  3.  
  4. $wysz = $_POST['phrase'];
  5. $wynik = mysql_query("SELECT id, nazwa, opis, obrazek, cena FROM koszulki WHERE nazwa LIKE '%$wysz%'") or die('Błąd zapytania');
  6. /*
  7. wyświetlamy wyniki, sprawdzamy,
  8. czy zapytanie zwróciło wartość większą od 0
  9. */
  10. if(mysql_num_rows($wynik) > 0) {
  11. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  12. echo "<table cellpadding=5 border=2>";
  13. while($r = mysql_fetch_assoc($wynik)) {
  14. echo "<tr>";
  15. echo "<td width=100>".$r['id']."</td>";
  16. echo "<td width=200>".$r['nazwa']."</td>";
  17. echo "<td width=200>".$r['opis']."</td>";
  18. echo "<td width=200><img src='".$r['id'].".jpg' alt='ffff'></td>";
  19. echo "<td width=100>".$r['cena']."</td>";
  20. echo "</tr>";
  21. }
  22. echo "</table>";
  23. }
  24. ?>
salva
teraz mam kod taki
  1. <?php
  2.  
  3. $baza=mysql_connect("","","");
  4.  
  5. $wysz = $_POST['phrase'];
  6. $query=mysql_query("SELECT id,nazwa,opis,obrazek,cena FROM koszulki Where nazwa Like '%".$wysz."%'");
  7. echo $query;
  8. $wyszk = mysql_query($query);
  9. echo "<table cellpadding=5 border=2>";
  10. while($r = mysql_fetch_assoc($wyszk)) {
  11.  
  12. echo "<tr>";
  13. echo "<td width=100>".$r['id']."</td>";
  14. echo "<td width=200>".$r['nazwa']."</td>";
  15. echo "<td width=200>".$r['opis']."</td>";
  16. echo "<td width=100>".$r['cena']."</td>";
  17. echo "</tr>";
  18.  
  19. }
  20. echo "</table>";
  21.  
  22. ?>



co nie wpisze wyskakuje mi takie cos:
Cytat
Resource id #2
mortus
W linii 8 wyświetlasz wartość zmiennej $query, a wartością tą jest właśnie identyfikator zasobu zwróconego w linii 7 przez zapytanie wysłane do bazy danych. Rozwiązanie: usuń linię 8.
salva
dzieki poprawilem na to ten kod co ty wszystko dziala tylko jak nie znajduje to nic nie wyswietla
mortus
No bo nie ma wyświetlać. Jeśli chcesz to obsłużyć, to zrób
  1. if(mysql_num_rows() > 0) {
  2. // wyświetlanie znalezionych
  3. } else {
  4. echo 'Nie znaleziono produktów o określonej nazwie \'' . $wysz . '\'';
  5. }
salva
ok wszystko wiem tylko ostatnia rzecz
  1. #
  2. $wynik = mysql_query("SELECT id, nazwa, opis, obrazek, cena FROM koszulki WHERE nazwa LIKE '%$wysz%'") or die('Błąd zapytania');


jest blad zapytanie jesli cos sie stanie
mortus
Nie wiem, o co Ci chodzi, ale jeszcze powinieneś obsłużyć odczytywanie tablicy $_POST
  1. if(!empty($_POST['phrase'])) {
  2. $wysz = $_POST['phrase'];
  3. } else {
  4. echo 'Nie podałeś nazwy!';
  5. }


Całość:
  1. <?php
  2. mysql_connect("","","");
  3.  
  4. if(!empty($_POST['phrase'])) {
  5. $wysz = $_POST['phrase'];
  6. $wynik = mysql_query("SELECT id, nazwa, opis, obrazek, cena FROM koszulki WHERE nazwa LIKE '%$wysz%'") or die('Błąd zapytania');
  7. /*
  8.   wyświetlamy wyniki, sprawdzamy,
  9.   czy zapytanie zwróciło wartość większą od 0
  10.   */
  11. if(mysql_num_rows($wynik) > 0) {
  12. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  13. echo "<table cellpadding=5 border=2>";
  14. while($r = mysql_fetch_assoc($wynik)) {
  15. echo "<tr>";
  16. echo "<td width=100>".$r['id']."</td>";
  17. echo "<td width=200>".$r['nazwa']."</td>";
  18. echo "<td width=200>".$r['opis']."</td>";
  19. echo "<td width=200><img src='".$r['id'].".jpg' alt='ffff'></td>";
  20. echo "<td width=100>".$r['cena']."</td>";
  21. echo "</tr>";
  22. }
  23. echo "</table>";
  24. } else {
  25. echo 'Produkt o nazwie ' . $wysz . ' nie istnieje!';
  26. }
  27. } else {
  28. echo 'Czego szukasz?';
  29. }
  30. ?>
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.