Najpierw przedstawię kod, a dopiero na końcu powiem na czym polega problem

Zrzut tabel:
DROP TABLE IF EXISTS `parametrs`; CREATE TABLE `parametrs` ( `par_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `par_name` varchar(255) COLLATE utf8_polish_ci NOT NULL, PRIMARY KEY (`par_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci; INSERT INTO `parametrs` (`par_id`, `par_name`) VALUES (1, 'Rozmiary'), (2, 'Kolory'); DROP TABLE IF EXISTS `parametrs_products`; CREATE TABLE `parametrs_products` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `product` int(11) NOT NULL, `param` int(11) NOT NULL, `value` varchar(255) COLLATE utf8_polish_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci; INSERT INTO `parametrs_products` (`id`, `product`, `param`, `value`) VALUES (1, 20, 1, 'S'), (2, 20, 1, 'XL'), (3, 20, 2, 'test'); DROP TABLE IF EXISTS `products`; CREATE TABLE `products` ( `pd_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `cat_id` int(10) UNSIGNED NOT NULL DEFAULT '0', `pd_name` varchar(100) COLLATE utf8_polish_ci NOT NULL DEFAULT '', `pd_description` text COLLATE utf8_polish_ci NOT NULL, `pd_price` decimal(9,2) NOT NULL DEFAULT '0.00', `pd_qty` smallint(5) UNSIGNED NOT NULL DEFAULT '0', `pd_date` int(11) NOT NULL, `pd_last_update` int(11) DEFAULT NULL, `pd_index` int(11) NOT NULL DEFAULT '0', `pd_watch` int(11) UNSIGNED NOT NULL DEFAULT '0', `pd_producent` int(11) UNSIGNED NOT NULL, PRIMARY KEY (`pd_id`), KEY `cat_id` (`cat_id`), KEY `pd_name` (`pd_name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci; INSERT INTO `products` (`pd_id`, `cat_id`, `pd_name`, `pd_description`, `pd_price`, `pd_qty`, `pd_date`, `pd_last_update`, `pd_index`, `pd_watch`, `pd_producent`) VALUES (21, 6, 'jółlgłdjjjj', 'dasdasdas', 12.00, 2, 1343822477, NULL, 0, 0, 1), (20, 6, 'aóhjhkasd', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent aliquam massa sit amet ante iaculis mollis. Mauris eget diam arcu, dapibus mollis turpis. In tincidunt magna id metus mollis volutpat. Nam malesuada, augue egestas egestas facilisis, massa est sodales mi, eget tempus libero justo et mi. Praesent elementum eros non lacus gravida sit amet commodo est hendrerit. Donec ac elit id arcu varius adipiscing. Sed ullamcorper eros eu turpis egestas consequat eget ullamcorper ante. Vestibulum in risus mi, vel cursus ipsum. Morbi convallis, nunc vitae euismod lacinia, neque orci lacinia odio, in imperdiet felis lorem sit amet odio. Maecenas varius, enim sed pretium convallis, eros nunc volutpat sem, id tempus nisl diam volutpat eros. Donec eros sapien, vehicula id semper nec, scelerisque eget purus. Sed odio odio, tempor vel cursus vel, commodo vitae ipsum. Ut feugiat diam sed velit pulvinar at feugiat leo facilisis. ', 14.20, 2, 1343822213, NULL, 0, 0, 2);
Plik sprawdzający czy produkty w koszyku nadal istnieją:
else { $sql_add = ''; $i = 0; foreach ( $_SESSION['cart'] as $cart ) { { foreach ( $cart['options'] as $option ) { $sql = 'SELECT pp.*, par.par_id, par.par_name FROM '.PARAMETRS_PRODUCT.' pp LEFT JOIN '.PARAMETRS.' par ON par.par_id = pp.param WHERE pp.product = "'.$cart['product_id'].'" AND pp.id = "'.$option['option_id'].'" LIMIT 1'; $result = $db->query($sql, __LINE__, __FILE__); if ( $db->rows($result) ) { while( $row = $db->fetch($result) ) { $options[] = $row; } } } $sql = 'SELECT * FROM '.PRODUCTS.' WHERE pd_id = "'.$cart['product_id'].'" LIMIT 1'; $result = $db->query($sql, __LINE__, __FILE__); if ( $db->rows($result) ) { $row = $db->fetch($result); $row['options'] = $options; $cart_product[] = $row; } } else { $sql = 'SELECT * FROM '.PRODUCTS.' WHERE pd_id = "'.$cart['product_id'].'" LIMIT 1'; $result = $db->query($sql, __LINE__, __FILE__); if ( $db->rows($result) ) { $row = $db->fetch($result); $cart_product[] = $row; } } } }
Tablica z session:
( ( ( [product_id] => 20 [title] => Nike - a�hjhkasd [price] => 14.20 [seo] => nike_-_ahjhkasd ( ( [param_name] => Rozmiary [param_id] => 1 [option_id] => 1 [option_name] => S ) ( [param_name] => Kolory [param_id] => 2 [option_id] => 3 [option_name] => test ) ) ) ( [product_id] => 20 [title] => Nike - a�hjhkasd [price] => 14.20 [seo] => nike_-_ahjhkasd ( ( [param_name] => Rozmiary [param_id] => 1 [option_id] => 2 [option_name] => XL ) ( [param_name] => Kolory [param_id] => 2 [option_id] => 3 [option_name] => test ) ) ) ( [product_id] => 21 [title] => Adidas - j�lg�djjjj [price] => 12.00 [seo] => adidas_-_jlgdjjjj [options] => ) ) )
Problem polega na tym że nie mogę skonstruować zapytania w pętli tak aby poprawnie dodawało opcje do produktu. Póki co opcje nie działają poprawnie
Może da się to jakoś załatwić jednym zapytaniem żeby nie obciążać serwera ?
Pozdrawiam