Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem ze skryptem
Mori
post 5.01.2005, 20:27:28
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 5.01.2005
Skąd: Kraków

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


Napisałem sobie taki skrypt:
  1. <?php
  2.  
  3. $dbh=mysql_connect (&#092;"localhost\", \"sylvia_produkty\", \"*Wybaczcie, tym razem nie zapodam passa*\") or die ('I cannot connect to the database because: ' . mysql_error());
  4. mysql_select_db (&#092;"sylvia_produkty\");
  5.  
  6. if (isset($_GET['cat'])): //jeśli jakaś wartość
  7. switch ($_GET['cat']) 
  8. {
  9. case zik:
  10. $tytul = &#092;"Zmywacze i korektory\";
  11. break;
  12. case tipsy:
  13. $tytul = &#092;"Tipsy\";
  14. break;
  15. case pilniki:
  16. $tytul = &#092;"Pilniki\";
  17. break;
  18. case gel:
  19. $tytul = &#092;"Żele\";
  20. break;
  21. case lampy:
  22. $tytul = &#092;"Lampy\";
  23. break;
  24. case hid:
  25. $tytul = &#092;"Higiena i dezynfekcja\";
  26. break;
  27. case inne:
  28. $tytul = &#092;"Inne akcesoria\";
  29. break;
  30. default: 
  31. } 
  32.  
  33. echo &#092;"<h1>$tytul</h1><br>\";
  34. echo &#092;"<table><tr><td>Nazwa produktu</td><td>Gramatura</td><td>Cena</td></tr>\";
  35.  
  36. $wynik = @mysql_query ('SELECT * FROM sylvia_produkty WHERE rodzaj2=$cat ORDER BY id DESC');
  37.  
  38. while ($rekord = mysql_fetch_array($wynik)) {
  39. echo &#092;"<tr><td><a href=\"index.php?co=produkty&get=$rekord[0]\">$rekord[1]</a></td><td>$rekord[2]</td><td>$rekord[3]</td></tr>\";
  40.  }
  41. echo &#092;"</table>\";
  42.  
  43. else: //jeśli nie ma kategorii
  44.  
  45. if (isset($_GET['get'])): //jeśli konkretny produkt, jego id
  46.  
  47. $wynik = @mysql_query ('SELECT * FROM sylvia_produkty WHERE id=$get LIMIT 0,1');
  48. $rekord = mysql_fetch_array($wynik);
  49. echo &#092;"<h1>$rekord[1]</h1><br>
  50. Rodzaj: $rekord[7]<br>
  51. Gramatura: $rekord[2]<br>
  52. Cena: $rekord[3]<br>
  53. Opis: $rekord[4]<br>
  54. Uwagi: $rekord[5]<br>
  55. Inne: $rekord[6]<br>&#092;";
  56.  
  57. else: //Nie ma produktu i kategorii - leci wszystko
  58. echo &#092;"Wszystkie produkty w naszej bazie:<br>\";
  59. echo &#092;"<table>
  60. <tr><td>Nazwa produktu</td><td>Gramatura</td><td>Cena</td><td>Rodzaj</td></tr>
  61. &#092;";
  62.  
  63. $wynik = @mysql_query ('SELECT * FROM sylvia_produkty ORDER BY id DESC');
  64.  
  65. while ($rekord = mysql_fetch_array($wynik)) {
  66. echo &#092;"<tr><td><a href=\"index.php?co=produkty&get=$rekord[0]\">$rekord[1]</a></td><td>$rekord[2]</td><td>$rekord[3]</td><td>$rekord[7]</td></tr>\";
  67.  }
  68. echo &#092;"</table>\";
  69. endif;
  70. endif;
  71. ?>


I wywala mi taki błąd:
Cytat
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/sylvia/public_html/produkty.php on line 65


Co jest źle?


--------------------
No i co się gapisz? Sygnaturki nie widzałeś?
Go to the top of the page
+Quote Post
crash
post 5.01.2005, 20:34:12
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Po pierwsze ustaw warunki w switch na ciągi (np. case 'zik': ), nie możesz odwoływać sie do zmiennej wewnatrz ciągu zawartego w pojedynczym cudzysłowiu (masz tak w zapytaniach SQL, ale to chyba widać na pokolorowanej składni...), poprawnie będzie:
  1. <?php
  2. $wynik = @mysql_query ('SELECT * FROM sylvia_produkty WHERE rodzaj2=\"'.$cat.'\" ORDER BY id DESC');
  3. ?>

No i żeby było w ogóle coś takiego jak $cat użyj wcześniej:
  1. <?php
  2. $cat = $_GET['cat'];
  3. ?>


Ten post edytował crashu 5.01.2005, 20:35:32


--------------------
Go to the top of the page
+Quote Post
Mori
post 5.01.2005, 20:40:46
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 5.01.2005
Skąd: Kraków

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


Nie wiem czemu akurat 'zik' w case, a nie po prostu zik (na głównej w ten sposób include'uję podstrony i jest bez '' i all ok :/)

Z poj. cudz. w SQL poprawiłem, ciągle błąd.

Nowy kod:
  1. <?php
  2.  
  3. $dbh=mysql_connect (&#092;"localhost\", \"sylvia_produkty\", \"pass_here_LoL\") or die ('I cannot connect to the database because: ' . mysql_error());
  4. mysql_select_db (&#092;"sylvia_produkty\");
  5.  
  6. $cat = $_GET['cat'];
  7. $get = $_GET['get'];
  8.  
  9. if (isset($_GET['cat'])): //jeśli jakaś wartość
  10. switch ($_GET['cat']) 
  11. {
  12. case 'zik':
  13. $tytul = &#092;"Zmywacze i korektory\";
  14. break;
  15. case 'tipsy':
  16. $tytul = &#092;"Tipsy\";
  17. break;
  18. case 'pilniki':
  19. $tytul = &#092;"Pilniki\";
  20. break;
  21. case 'gel':
  22. $tytul = &#092;"Żele\";
  23. break;
  24. case 'lampy':
  25. $tytul = &#092;"Lampy\";
  26. break;
  27. case 'hid':
  28. $tytul = &#092;"Higiena i dezynfekcja\";
  29. break;
  30. case 'inne':
  31. $tytul = &#092;"Inne akcesoria\";
  32. break;
  33. default: 
  34. } 
  35.  
  36. echo &#092;"<h1>$tytul</h1><br>\";
  37. echo &#092;"<table><tr><td>Nazwa produktu</td><td>Gramatura</td><td>Cena</td></tr>\";
  38.  
  39. $wynik = @mysql_query ('SELECT * FROM sylvia_produkty WHERE rodzaj2='.$cat.' ORDER BY id DESC');
  40.  
  41. while ($rekord = mysql_fetch_array($wynik)) {
  42. echo &#092;"<tr><td><a href=\"index.php?co=produkty&get=$rekord[0]\">$rekord[1]</a></td><td>$rekord[2]</td><td>$rekord[3]</td></tr>\";
  43.  }
  44. echo &#092;"</table>\";
  45.  
  46. else: //jeśli nie ma kategorii
  47.  
  48. if (isset($_GET['get'])): //jeśli konkretny produkt, jego id
  49.  
  50. $wynik = @mysql_query ('SELECT * FROM sylvia_produkty WHERE id='.$get.' LIMIT 0,1');
  51. $rekord = mysql_fetch_array($wynik);
  52. echo &#092;"<h1>$rekord[1]</h1><br>
  53. Rodzaj: $rekord[7]<br>
  54. Gramatura: $rekord[2]<br>
  55. Cena: $rekord[3]<br>
  56. Opis: $rekord[4]<br>
  57. Uwagi: $rekord[5]<br>
  58. Inne: $rekord[6]<br>&#092;";
  59.  
  60. else: //Nie ma produktu i kategorii - leci wszystko
  61. echo &#092;"Wszystkie produkty w naszej bazie:<br>\";
  62. echo &#092;"<table>
  63. <tr><td>Nazwa produktu</td><td>Gramatura</td><td>Cena</td><td>Rodzaj</td></tr>
  64. &#092;";
  65.  
  66. $wynik = @mysql_query ('SELECT * FROM sylvia_produkty ORDER BY id DESC');
  67.  
  68. while ($rekord = mysql_fetch_array($wynik)) {
  69. echo &#092;"<tr><td><a href=\"index.php?co=produkty&get=$rekord[0]\">$rekord[1]</a></td><td>$rekord[2]</td><td>$rekord[3]</td><td>$rekord[7]</td></tr>\";
  70.  }
  71. echo &#092;"</table>\";
  72. endif;
  73. endif;
  74. ?>


Test it here: http://www.sq-academy.pl/produkty.php (w bazie 3 wpisy dla żeli ($cat = 'gel')).

EDIT: Poprawiłem, o czym pisałeś, dalej nic sad.gif

Ten post edytował Mori 5.01.2005, 20:43:42


--------------------
No i co się gapisz? Sygnaturki nie widzałeś?
Go to the top of the page
+Quote Post
Ar2r
post 5.01.2005, 20:43:27
Post #4





Grupa: Zarejestrowani
Postów: 140
Pomógł: 16
Dołączył: 12.06.2002
Skąd: Kielce

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


Po pierwsze wyświetl sobie zapytanie w php (print) i zobacz czy wygląda tak jak powinno (podstawione są wartości ze zmiennych). Jeśli jest ok to puść zapytanie np. w phpMyAdminie i zobacz czy zwraca jakieś rekordy.
Go to the top of the page
+Quote Post
Mori
post 5.01.2005, 20:46:14
Post #5





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 5.01.2005
Skąd: Kraków

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


Cytat(Ar2r @ 2005-01-05 19:43:27)
Po pierwsze wyświetl sobie zapytanie w php (print) i zobacz czy wygląda tak jak powinno (podstawione są wartości ze zmiennych). Jeśli jest ok to puść zapytanie np. w phpMyAdminie i zobacz czy zwraca jakieś rekordy.

Można jakoś prościej, ew. co dokłądnie mam wpisać? Jestem poczatkującym, proszę o wybaczenie...


--------------------
No i co się gapisz? Sygnaturki nie widzałeś?
Go to the top of the page
+Quote Post
crash
post 5.01.2005, 20:48:21
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Usuń @ sprzed tego zapytania, utaw wyższy poziom zgłaszania błędów (error_reporting" title="Zobacz w manualu PHP" target="_manual(E_ALL); )

Ten post edytował crashu 5.01.2005, 20:48:51


--------------------
Go to the top of the page
+Quote Post
Mori
post 5.01.2005, 20:56:00
Post #7





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 5.01.2005
Skąd: Kraków

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


Kolejny rewrite skryptu, ciagle nic sad.gif
  1. <?php
  2.  
  3. $dbh=mysql_connect (&#092;"localhost\", \"sylvia_produkty\", \"to moje tajne hasło\") or die ('I cannot connect to the database because: ' . mysql_error());
  4. mysql_select_db (&#092;"sylvia_produkty\");
  5.  
  6. if (isset($_GET['cat'])) {
  7. $cat = $_GET['cat'];
  8. switch ($_GET['cat']) 
  9. {
  10. case 'zik':
  11. $tytul = &#092;"Zmywacze i korektory\";
  12. break;
  13. case 'tipsy':
  14. $tytul = &#092;"Tipsy\";
  15. break;
  16. case 'pilniki':
  17. $tytul = &#092;"Pilniki\";
  18. break;
  19. case 'gel':
  20. $tytul = &#092;"Żele\";
  21. break;
  22. case 'lampy':
  23. $tytul = &#092;"Lampy\";
  24. break;
  25. case 'hid':
  26. $tytul = &#092;"Higiena i dezynfekcja\";
  27. break;
  28. case 'inne':
  29. $tytul = &#092;"Inne akcesoria\";
  30. break;
  31. default: 
  32. } 
  33.  
  34. echo &#092;"<h1>$tytul</h1><br>\";
  35. echo &#092;"<table><tr><td>Nazwa produktu</td><td>Gramatura</td><td>Cena</td></tr>\";
  36.  
  37. $wynik = mysql_query ('SELECT * FROM sylvia_produkty WHERE rodzaj2='.$cat.' ORDER BY id DESC');
  38.  
  39. while ($rekord = mysql_fetch_array($wynik)) {
  40. echo &#092;"<tr><td><a href=\"index.php?co=produkty&get=$rekord[0]\">$rekord[1]</a></td><td>$rekord[2]</td><td>$rekord[3]</td></tr>\";
  41.  }
  42. echo &#092;"</table>\";
  43.  
  44. }
  45. elseif (isset($_GET['get'])) {
  46. $get = $_GET['get'];
  47.  
  48. $wynik = mysql_query ('SELECT * FROM sylvia_produkty WHERE id='.$get.' LIMIT 0,1');
  49. $rekord = mysql_fetch_array($wynik);
  50. echo &#092;"<h1>$rekord[1]</h1><br>
  51. Rodzaj: $rekord[7]<br>
  52. Gramatura: $rekord[2]<br>
  53. Cena: $rekord[3]<br>
  54. Opis: $rekord[4]<br>
  55. Uwagi: $rekord[5]<br>
  56. Inne: $rekord[6]<br>&#092;";
  57.  }
  58. else { //Nie ma produktu i kategorii - leci wszystko
  59. echo &#092;"Wszystkie produkty w naszej bazie:<br>\";
  60. echo &#092;"<table>
  61. <tr><td>Nazwa produktu</td><td>Gramatura</td><td>Cena</td><td>Rodzaj</td></tr>
  62. &#092;";
  63.  
  64. $wynik = mysql_query ('SELECT * FROM sylvia_produkty WHERE 1 ORDER BY id DESC');
  65.  
  66. while ($rekord = mysql_fetch_array($wynik)) {
  67. echo &#092;"<tr><td><a href=\"index.php?co=produkty&get=$rekord[0]\">$rekord[1]</a></td><td>$rekord[2]</td><td>$rekord[3]</td><td>$rekord[7]</td></tr>\";
  68.  }
  69. echo &#092;"</table>\";
  70. }
  71. ?>


Bluzga ciągle tym:
Cytat
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/sylvia/public_html/produkty.php on line 67

(przy odwoływaniu się do produkty.php bez żadnych parametrów)


--------------------
No i co się gapisz? Sygnaturki nie widzałeś?
Go to the top of the page
+Quote Post
Ar2r
post 5.01.2005, 20:58:08
Post #8





Grupa: Zarejestrowani
Postów: 140
Pomógł: 16
Dołączył: 12.06.2002
Skąd: Kielce

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


Dodaj przed zmienną $wynik linię (wybierz to zapytanie, z którym jest problem, ja wybrałem dla przykładu pierwsze z brzegu):
  1. <?php
  2.  
  3. print(&#092;"SELECT * FROM sylvia_produkty WHERE id=$get LIMIT 0,1\");
  4.  
  5. ?>

i zobacz czy wszystko jest z nim ok.
Go to the top of the page
+Quote Post
Mori
post 5.01.2005, 21:03:32
Post #9





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 5.01.2005
Skąd: Kraków

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


Głupi jestem... U mnie table sam nazywa się produkty, nie sylvia_produkty, jak baza... Dzięki wszystkim za pomoc, już działa biggrin.gif


--------------------
No i co się gapisz? Sygnaturki nie widzałeś?
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: 24.06.2025 - 09:32