Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyszukiwanie danych, problem
salva
post 5.04.2010, 15:01:20
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 21.03.2010

Ostrzeżenie: (10%)
X----


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%'



Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
ziqzaq
post 5.04.2010, 15:16:15
Post #2





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


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).

Ten post edytował ziqzaq 5.04.2010, 15:19:33
Go to the top of the page
+Quote Post
salva
post 5.04.2010, 15:24:50
Post #3





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 21.03.2010

Ostrzeżenie: (10%)
X----


jestem poczatkujacy i mam problemy z tym, niebardzo wiem jak to poprawic

Ten post edytował salva 5.04.2010, 15:25:06
Go to the top of the page
+Quote Post
ziqzaq
post 5.04.2010, 15:35:42
Post #4





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
salva
post 5.04.2010, 15:52:14
Post #5





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 21.03.2010

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
ziqzaq
post 5.04.2010, 16:18:59
Post #6





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
salva
post 5.04.2010, 16:42:09
Post #7





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 21.03.2010

Ostrzeżenie: (10%)
X----


ppo zmianie na ta druga fukncje wyskakuje tabeli tylko z ta nazwa co wpisuje a nie cala
Go to the top of the page
+Quote Post
mortus
post 5.04.2010, 16:58:03
Post #8





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
salva
post 5.04.2010, 17:05:05
Post #9





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 21.03.2010

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
mortus
post 5.04.2010, 17:42:08
Post #10





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował mortus 5.04.2010, 17:43:19
Go to the top of the page
+Quote Post
salva
post 5.04.2010, 17:48:36
Post #11





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 21.03.2010

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
mortus
post 5.04.2010, 17:52:08
Post #12





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
salva
post 5.04.2010, 17:55:20
Post #13





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 21.03.2010

Ostrzeżenie: (10%)
X----


dzieki poprawilem na to ten kod co ty wszystko dziala tylko jak nie znajduje to nic nie wyswietla
Go to the top of the page
+Quote Post
mortus
post 5.04.2010, 18:03:04
Post #14





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post
salva
post 5.04.2010, 18:07:09
Post #15





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 21.03.2010

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
mortus
post 5.04.2010, 18:25:54
Post #16





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 15:34