Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Warning: mysql_num_rows() expects parameter 1 to be resource
Forum PHP.pl > Forum > Przedszkole
seedo
Witam. Jestem poczatkujący więc wybaczcie opornosc. Problem polega na tym ze po wciasnieciu na dodaj do koszyka wyswietla sie blad Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in D:\xampp\xampp\htdocs\koszyk_zakupow\funkcje.php on line 42 oraz nie dodano nic do koszyka, ten sam blad wyskakuje przy nie zalogowanym uzytkowniku w line 52

  1. <?php
  2.  
  3. function pf_validate_number($value, $function, $redirect) {
  4. if(isset($value) == TRUE) {
  5. if(is_numeric($value) == FALSE) {
  6. $error = 1;
  7. }
  8.  
  9. if($error == 1) {
  10. header("Location: " . $redirect);
  11. }
  12. else {
  13. $final = $value;
  14. }
  15. }
  16. else {
  17. if($function == 'redirect') {
  18. header("Location: " . $redirect);
  19. }
  20.  
  21. if($function == "value") {
  22. $final = 0;
  23. }
  24. }
  25.  
  26. return $final;
  27. }
  28.  
  29. function showcart()
  30. {
  31.  
  32. if($_SESSION['SESS_ORDERNUM'])
  33. {
  34. if($_SESSION['SESS_LOGGEDIN'])
  35. {
  36. $custsql = "SELECT id, status from zamowienia WHERE id_klienta = " . $_SESSION['SESS_USERID'] . " AND status < 2;";
  37. $custres = mysql_query($custsql);
  38. $custrow = mysql_fetch_assoc($custres);
  39.  
  40. $itemssql = "SELECT produkty.*, pozycje_zamowienia.*, pozycje_zamowienia.id AS itemid FROM produkty, pozycje_zamowienia WHERE pozycje_zamowienia.id_produktu = produkty.id AND id_zamowienia = " . $custrow['id'];
  41. $itemsres = mysql_query($itemssql);
  42. $itemnumrows = mysql_num_rows($itemsres);
  43. }
  44. else
  45. {
  46. $custsql = "SELECT id, status from zamowienia WHERE sesja = '" . session_id() . "' AND status < 2;";
  47. $custres = mysql_query($custsql);
  48. $custrow = mysql_fetch_assoc($custres);
  49.  
  50. $itemssql = "SELECT produkty.*, pozycje_zamowienia.*, pozycje_zamowienia.id AS itemid FROM produkty, pozycje_zamowienia WHERE pozycje_zamowienia.id_produktu = produkty.id AND id_zamowienia = " . $custrow['id'];
  51. $itemsres = mysql_query($itemssql);
  52. $itemnumrows = mysql_num_rows($itemsres);
  53. }
  54. }
  55. else
  56. {
  57. $itemnumrows = 0;
  58. }
  59.  
  60. if($itemnumrows == 0)
  61. {
  62. echo "Nie dodano jeszcze niczego do koszyka.";
  63.  
  64. }
  65. else
  66. {
  67. echo "<table cellpadding='10'>";
  68. echo "<tr>";
  69. echo "<td></td>";
  70. echo "<td><strong>Pozycja</strong></td>";
  71. echo "<td><strong>Iloœć</strong></td>";
  72. echo "<td><strong>Cena jednostkowa</strong></td>";
  73. echo "<td><strong>Cena całkowita</strong></td>";
  74. echo "<td></td>";
  75. echo "</tr>";
  76.  
  77. while($itemsrow = mysql_fetch_assoc($itemsres))
  78. {
  79. $quantitytotal = $itemsrow['cena'] * $itemsrow['ilosc'];
  80. echo "<tr>";
  81.  
  82. if(empty($itemsrow['obraz'])) {
  83. echo "<td><img src='./obrazy/brak_obrazu.jpg' width='50' alt='" . $itemsrow['nazwa'] . "'></td>";
  84. }
  85. else {
  86. echo "<td><img src='./obrazy/" . $itemsrow['obraz'] . "' width='50' alt='" . $itemsrow['nazwa'] . "'></td>";
  87. }
  88.  
  89. // echo "<td><img src='./obrazy/" . $itemsrow['obraz'] . ".jpg' alt='" . $itemsrow['nazwa'] . "' width='50'></td>";
  90. echo "<td>" . $itemsrow['nazwa'] . "</td>";
  91. echo "<td>" . $itemsrow['ilosc'] . "</td>";
  92. echo "<td><strong>&pound;" . sprintf('%.2f', $itemsrow['cena']) . "</strong></td>";
  93. echo "<td><strong>&pound;" . sprintf('%.2f', $quantitytotal) . "</strong></td>";
  94. echo "<td>[<a href='" . $config_basedir . "usuwanie.php?id=" . $itemsrow['itemid'] . "'>X</a>]</td>";
  95. echo "</tr>";
  96.  
  97. $suma = $suma + $quantitytotal;
  98. $totalsql = "UPDATE zamowienia SET suma = " . $suma . " WHERE id = " . $_SESSION['SESS_ORDERNUM'];
  99. $totalres = mysql_query($totalsql);
  100. }
  101.  
  102. echo "<tr>";
  103. echo "<td></td>";
  104. echo "<td></td>";
  105. echo "<td></td>";
  106. echo "<td>SUMA</td>";
  107. echo "<td><strong>&pound;" . sprintf('%.2f', $suma) . "</strong></td>";
  108. echo "<td></td>";
  109. echo "</tr>";
  110.  
  111. echo "</table>";
  112.  
  113. }
  114. }
  115.  
  116.  
  117. ?>
Fifi209
Wrzuć to w tagi php bo się czytać nie da...
mortus
Takie ostrzeżenie oznacza, że zapytanie nie zwraca wyników. Przyczyny mogą być dwie:
1. zapytanie zostało źle skonstruowane,
2. zmienna przekazana do zapytania nie jest taka, jakiej byśmy się spodziewali.
Wrzuć print_r($custrow['id']) przed
  1. $itemssql = "SELECT produkty.*, pozycje_zamowienia.*, pozycje_zamowienia.id AS itemid FROM produkty, pozycje_zamowienia WHERE pozycje_zamowienia.id_produktu = produkty.id AND id_zamowienia = " . $custrow['id'];

a zobaczysz, czy id, jest prawidłowe.
seedo
Wyswietla Parse error: syntax error, unexpected T_VARIABLE in D:\xampp\xampp\htdocs\koszyk_zakupow\funkcje.php on line 40 domyslam sie ze to id nie istnieje?

Przegladanalem wlasnie tabele sql i nie mam tam w tabeli zamowienia id_zamowienia tylko samo id. Tylko jak dac zapytanie w sql zeby chodzilo o id z tab zamowienia
mortus
To wydrukuj tak: print_r($custrow); i zobaczysz, co zwróci. Spróbuj zarówno dla niezalogowanego, jak i zalogowanego użytkownika. Wyniki wklej tutaj.
nospor
Cytat
domyslam sie ze to id nie istnieje?
Nie, PARSE ERROR mowi, ze masz spapraną skladnie php. skrypt nie dochodzi nawet do analizy wartosci zmiennych bo wywala sie na analizie skladni smile.gif
seedo
dla zalogowanego
Array ( [id] => 6 [status] => 0 )
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in D:\xampp\xampp\htdocs\koszyk_zakupow\funkcje.php on line 42
Nie dodano jeszcze niczego do koszyka

dla nie zalogowanego
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in D:\xampp\xampp\htdocs\koszyk_zakupow\funkcje.php on line 52
Nie dodano jeszcze niczego do koszyka.
piotrooo89
wyraźnie masz napisane że masz błąd w zapytaniu SQL. wspominał już o tym ~nospor. popatrz dokładnie na cudzysłowy.
nospor
każde $cos = mysql_query($sql);
zamien na:
$cos = mysql_query($sql) or die('zapytanie :'.$sql.' blad:'.mysql_error());

i bedziesz mial wszystko jak na dloni.
seedo
zapytanie : blad:Unknown column 'id_zamowienia' in 'where clause'

w tabeli zamowienia nie mam id_zamowienia tylko samo id ale jak sformulowac to w sql bo samo id albo zamowienia.id nic nie daje
piotrooo89
masz wyraźnie napisane co i jak... może musisz ustawić w WHERE pozycje_zamowienia.id=$custrow['id']? albo odwołanie do innej tabeli.
mortus
Wydaje mi się, że tabela pozycje_zamowienia ma łączyć tabele produkty z tabelą zamówienia. Jeżeli tak, to w tabeli pozycje_zamowienia powinna się znaleźć kolumna, w której odwołamy się do konkretnego zamówienia. Zrób dump-a tabeli i wklej tutaj, to zobaczymy, czy taka kolumna jest?
seedo

--
-- Struktura tabeli dla `zamowienia`
--

CREATE TABLE IF NOT EXISTS `zamowienia` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_klienta` int(11) NOT NULL,
`zarejestrowany` int(11) NOT NULL,
`id_adresu_przesylki` int(11) NOT NULL,
`metoda_platnosci` int(11) NOT NULL,
`data` datetime NOT NULL,
`status` tinyint(4) NOT NULL,
`sesja` varchar(50) NOT NULL,
`suma` float NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

--
-- Zrzut danych tabeli `zamowienia`
--

INSERT INTO `zamowienia` (`id`, `id_klienta`, `zarejestrowany`, `id_adresu_przesylki`, `metoda_platnosci`, `data`, `status`, `sesja`, `suma`) VALUES
(1, 0, 0, 0, 0, '2010-03-02 20:29:29', 0, 'ot39rk7q3c79cjks7kvr7u2d33', 0),
(2, 2, 1, 0, 2, '2010-03-02 20:32:52', 2, '', 0),
(3, 0, 0, 0, 0, '2010-03-02 21:12:31', 0, 'i2ffqpnsgksapl35pg7sqjk1s5', 0),
(4, 1, 1, 0, 2, '2010-03-03 12:29:48', 2, '', 0),
(5, 1, 1, 0, 0, '2010-03-03 14:49:50', 0, '', 0),
(6, 2, 1, 0, 0, '2010-03-03 19:38:13', 0, '', 0);



-- Struktura tabeli dla `pozycje_zamowienia`
--

CREATE TABLE IF NOT EXISTS `pozycje_zamowienia` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_klienta` int(11) NOT NULL,
`id_produktu` int(11) NOT NULL,
`ilosc` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Zrzut danych tabeli `pozycje_zamowienia`
--

INSERT INTO `pozycje_zamowienia` (`id`, `id_klienta`, `id_produktu`, `ilosc`) VALUES
(1, 1, 1, 20),
(2, 1, 1, 20);

piotrooo89
to jeszcze napisz co chcesz otrzymać?
seedo
id z tabeli zamowienia
piotrooo89
no to zamowienia.id.
seedo
f**k dalej ten shit wyrzuca
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in D:\xampp\xampp\htdocs\koszyk_zakupow\funkcje.php on line 42
zapytanie : blad:Unknown column 'zamowienia.id' in 'where clause'
piotrooo89
pokaż zapytanie. a masz wogóle tabele zamowienie w FROM?
mortus
Klient składa zamówienie (uzupełniane są dane w tabeli zamowienia) i w tym zamówieniu prosi o określony produkt w danej ilości (uzupełniane są dane w tabeli pozycje_zamowienia). Chodzi o to, że dane z tabeli pozycje_zamowienia powinny się w jakiś sposób odnosić nie do klienta, a do samego zamówienia. Po co zatem w tabeli pozycje_zamowienia pole id_klienta, no i gdzie jest pole łączące z tabelą zamowienia?
seedo
Rzeczywiscie nie bylo zamowienia w FROM, wielkie dzieki
shadow_g
Cytat(seedo @ 3.03.2010, 22:54:54 ) *
Rzeczywiscie nie bylo zamowienia w FROM, wielkie dzieki

Witam, mam pytanie czy mógł byś wrzucić jak sobie poradziłeś z tym problemem bo mam podobna sytuacje i już walcze ze 3 dni i jak narazie to doszedłem ze mam coś nie tak z apytaniem sql
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.