seedo
3.03.2010, 20:15:40
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
<?php
function pf_validate_number($value, $function, $redirect) {
if(isset($value) == TRUE) { $error = 1;
}
if($error == 1) {
header("Location: " . $redirect); }
else {
$final = $value;
}
}
else {
if($function == 'redirect') {
header("Location: " . $redirect); }
if($function == "value") {
$final = 0;
}
}
return $final;
}
function showcart()
{
if($_SESSION['SESS_ORDERNUM'])
{
if($_SESSION['SESS_LOGGEDIN'])
{
$custsql = "SELECT id, status from zamowienia WHERE id_klienta = " . $_SESSION['SESS_USERID'] . " AND status < 2;";
$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'];
}
else
{
$custsql = "SELECT id, status from zamowienia WHERE sesja = '" . session_id() . "' AND status < 2;";
$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'];
}
}
else
{
$itemnumrows = 0;
}
if($itemnumrows == 0)
{
echo "Nie dodano jeszcze niczego do koszyka.";
}
else
{
echo "<table cellpadding='10'>"; echo "<td><strong>Pozycja</strong></td>"; echo "<td><strong>Iloć</strong></td>"; echo "<td><strong>Cena jednostkowa</strong></td>"; echo "<td><strong>Cena całkowita</strong></td>";
{
$quantitytotal = $itemsrow['cena'] * $itemsrow['ilosc'];
if(empty($itemsrow['obraz'])) { echo "<td><img src='./obrazy/brak_obrazu.jpg' width='50' alt='" . $itemsrow['nazwa'] . "'></td>"; }
else {
echo "<td><img src='./obrazy/" . $itemsrow['obraz'] . "' width='50' alt='" . $itemsrow['nazwa'] . "'></td>"; }
// echo "<td><img src='./obrazy/" . $itemsrow['obraz'] . ".jpg' alt='" . $itemsrow['nazwa'] . "' width='50'></td>";
echo "<td>" . $itemsrow['nazwa'] . "</td>"; echo "<td>" . $itemsrow['ilosc'] . "</td>"; echo "<td><strong>£" . sprintf('%.2f', $itemsrow['cena']) . "</strong></td>"; echo "<td><strong>£" . sprintf('%.2f', $quantitytotal) . "</strong></td>"; echo "<td>[<a href='" . $config_basedir . "usuwanie.php?id=" . $itemsrow['itemid'] . "'>X</a>]</td>";
$suma = $suma + $quantitytotal;
$totalsql = "UPDATE zamowienia SET suma = " . $suma . " WHERE id = " . $_SESSION['SESS_ORDERNUM'];
}
echo "<td><strong>£" . sprintf('%.2f', $suma) . "</strong></td>";
}
}
?>
Fifi209
3.03.2010, 20:16:33
Wrzuć to w tagi php bo się czytać nie da...
mortus
3.03.2010, 20:39:20
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
$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
3.03.2010, 20:49:29
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
3.03.2010, 21:00:24
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
3.03.2010, 21:02:55
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
seedo
3.03.2010, 21:07:28
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
3.03.2010, 21:09:14
wyraźnie masz napisane że masz błąd w zapytaniu SQL. wspominał już o tym ~nospor. popatrz dokładnie na cudzysłowy.
nospor
3.03.2010, 21:11:47
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
3.03.2010, 21:32:12
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
3.03.2010, 21:36:10
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
3.03.2010, 21:59:10
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
3.03.2010, 22:35:50
--
-- 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
3.03.2010, 22:40:07
to jeszcze napisz co chcesz otrzymać?
seedo
3.03.2010, 22:49:18
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
3.03.2010, 22:50:40
pokaż zapytanie. a masz wogóle tabele zamowienie w FROM?
mortus
3.03.2010, 22:51:44
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
3.03.2010, 22:54:54
Rzeczywiscie nie bylo zamowienia w FROM, wielkie dzieki
shadow_g
27.12.2010, 09:52:08
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