Witam
Najpierw przedstawię kod, a dopiero na końcu powiem na czym polega problem smile.gif

Zrzut tabel:
  1. DROP TABLE IF EXISTS `parametrs`;
  2. CREATE TABLE `parametrs` (
  3. `par_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  4. `par_name` varchar(255) COLLATE utf8_polish_ci NOT NULL,
  5. PRIMARY KEY (`par_id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  7.  
  8. INSERT INTO `parametrs` (`par_id`, `par_name`) VALUES
  9. (1, 'Rozmiary'),
  10. (2, 'Kolory');
  11.  
  12. DROP TABLE IF EXISTS `parametrs_products`;
  13. CREATE TABLE `parametrs_products` (
  14. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  15. `product` int(11) NOT NULL,
  16. `param` int(11) NOT NULL,
  17. `value` varchar(255) COLLATE utf8_polish_ci NOT NULL,
  18. PRIMARY KEY (`id`)
  19. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  20.  
  21. INSERT INTO `parametrs_products` (`id`, `product`, `param`, `value`) VALUES
  22. (1, 20, 1, 'S'),
  23. (2, 20, 1, 'XL'),
  24. (3, 20, 2, 'test');
  25.  
  26. DROP TABLE IF EXISTS `products`;
  27. CREATE TABLE `products` (
  28. `pd_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  29. `cat_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
  30. `pd_name` varchar(100) COLLATE utf8_polish_ci NOT NULL DEFAULT '',
  31. `pd_description` text COLLATE utf8_polish_ci NOT NULL,
  32. `pd_price` decimal(9,2) NOT NULL DEFAULT '0.00',
  33. `pd_qty` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
  34. `pd_date` int(11) NOT NULL,
  35. `pd_last_update` int(11) DEFAULT NULL,
  36. `pd_index` int(11) NOT NULL DEFAULT '0',
  37. `pd_watch` int(11) UNSIGNED NOT NULL DEFAULT '0',
  38. `pd_producent` int(11) UNSIGNED NOT NULL,
  39. PRIMARY KEY (`pd_id`),
  40. KEY `cat_id` (`cat_id`),
  41. KEY `pd_name` (`pd_name`)
  42. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  43.  
  44. 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
  45. (21, 6, 'jółlgłdjjjj', 'dasdasdas', 12.00, 2, 1343822477, NULL, 0, 0, 1),
  46. (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ą:
  1. if ( !isset($_SESSION['cart']) ) message_die('Brak produktów w koszyku');
  2. else
  3. {
  4. $cart_product = array();
  5. $options = array();
  6. $sql_add = '';
  7. $i = 0;
  8. foreach ( $_SESSION['cart'] as $cart )
  9. {
  10. if ( !empty($cart['options']) )
  11. {
  12. foreach ( $cart['options'] as $option )
  13. {
  14. $sql = 'SELECT pp.*, par.par_id, par.par_name
  15. FROM '.PARAMETRS_PRODUCT.' pp
  16. LEFT JOIN '.PARAMETRS.' par ON par.par_id = pp.param
  17. WHERE pp.product = "'.$cart['product_id'].'"
  18. AND pp.id = "'.$option['option_id'].'"
  19. LIMIT 1';
  20. $result = $db->query($sql, __LINE__, __FILE__);
  21. if ( $db->rows($result) )
  22. {
  23. while( $row = $db->fetch($result) )
  24. {
  25. $options[] = $row;
  26. }
  27. }
  28. }
  29.  
  30. $sql = 'SELECT * FROM
  31. '.PRODUCTS.'
  32. WHERE pd_id = "'.$cart['product_id'].'"
  33. LIMIT 1';
  34. $result = $db->query($sql, __LINE__, __FILE__);
  35. if ( $db->rows($result) )
  36. {
  37. $row = $db->fetch($result);
  38. $row['options'] = $options;
  39. $cart_product[] = $row;
  40. }
  41. }
  42. else
  43. {
  44. $sql = 'SELECT * FROM
  45. '.PRODUCTS.'
  46. WHERE pd_id = "'.$cart['product_id'].'"
  47. LIMIT 1';
  48. $result = $db->query($sql, __LINE__, __FILE__);
  49. if ( $db->rows($result) )
  50. {
  51. $row = $db->fetch($result);
  52. $cart_product[] = $row;
  53. }
  54. }
  55. }
  56. }


Tablica z session:
  1. (
  2. [cart] => Array
  3. (
  4. [0] => Array
  5. (
  6. [product_id] => 20
  7. [title] => Nike - a�hjhkasd
  8. [price] => 14.20
  9. [screen] => static/uploads/product/20/85068/small.jpg
  10. [seo] => nike_-_ahjhkasd
  11. [options] => Array
  12. (
  13. [0] => Array
  14. (
  15. [param_name] => Rozmiary
  16. [param_id] => 1
  17. [option_id] => 1
  18. [option_name] => S
  19. )
  20.  
  21. [1] => Array
  22. (
  23. [param_name] => Kolory
  24. [param_id] => 2
  25. [option_id] => 3
  26. [option_name] => test
  27. )
  28.  
  29. )
  30.  
  31. )
  32.  
  33. [1] => Array
  34. (
  35. [product_id] => 20
  36. [title] => Nike - a�hjhkasd
  37. [price] => 14.20
  38. [screen] => static/uploads/product/20/85068/small.jpg
  39. [seo] => nike_-_ahjhkasd
  40. [options] => Array
  41. (
  42. [0] => Array
  43. (
  44. [param_name] => Rozmiary
  45. [param_id] => 1
  46. [option_id] => 2
  47. [option_name] => XL
  48. )
  49.  
  50. [1] => Array
  51. (
  52. [param_name] => Kolory
  53. [param_id] => 2
  54. [option_id] => 3
  55. [option_name] => test
  56. )
  57.  
  58. )
  59.  
  60. )
  61.  
  62. [2] => Array
  63. (
  64. [product_id] => 21
  65. [title] => Adidas - j�lg�djjjj
  66. [price] => 12.00
  67. [screen] => static/uploads/product/21/adda3/small.jpg
  68. [seo] => adidas_-_jlgdjjjj
  69. [options] =>
  70. )
  71.  
  72. )
  73.  
  74. )



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