Witam mam następujący problem:
do koszyka moge dodawać dowolną ilość produktów
lecz w tabeli produktyzamowienia zapisuje się tylko ostatnio dodany produkt może jest coś nie tak z pętlą while? Jeśli ktoś wie co w tym skrypcie jest nie tak to prosze o pomoc.

skrypt koszyka
  1. <?php
  2. function atb($id)
  3. {
  4. if(!isSet($_SESSION['koszyk'])){
  5. $_SESSION['koszyk'] = array();
  6. }
  7.  
  8. if(!makeDBConnection()){
  9. return false;
  10. }
  11.  
  12. $query = "SELECT COUNT(*) FROM produkty WHERE id=$id";
  13.  
  14. if(!$result = mysql_query($query)){
  15. //echo("Odrzucone zapytanie: funkcja showItem: $query");
  16. return false;
  17. }
  18. if($row = mysql_fetch_row($result)){
  19. if($row[0] <> 0){
  20. if(isSet($_SESSION['koszyk'][$id])){
  21. $_SESSION['koszyk'][$id]++;
  22. }
  23. else{
  24. $_SESSION['koszyk'][$id] = 1;
  25. }
  26. return true;
  27. }
  28. else{
  29. //echo("Brak produktu o id=$id");
  30. return false;
  31. }
  32. }
  33. else{
  34. return false;
  35. }
  36. }
  37.  
  38. function showBasket()
  39. {
  40. if(!makeDBConnection()){
  41. return false;
  42. }
  43.  
  44. if(!isSet($_SESSION['koszyk'])){
  45. $_SESSION['koszyk'] = array();
  46. }
  47.  
  48. if(count($_SESSION['koszyk']) < 1){
  49. echo("Koszyk jest pusty");
  50. return true;
  51. }
  52.  
  53. $ids = "";
  54. foreach($_SESSION['koszyk'] as $key => $val){
  55. if($ids == ''){
  56. $ids = $key;
  57. }
  58. else{
  59. $ids .= ", $key";
  60. }
  61. }
  62.  
  63. $query = "SELECT Id, `Nazwa`, Cena FROM produkty WHERE id IN($ids) ";
  64. $query .= "ORDER BY `Nazwa`";
  65.  
  66. if(!$result = mysql_query($query)){
  67. //echo("Odrzucone zapytanie: funkcja showItem: $query");
  68. return false;
  69. }
  70.  
  71. echo("<form action='main.php' method='post'>");
  72. echo("<input type='hidden' name='action' value='modifybasket'>");
  73. echo("<table border='1' bgcolor=#87CEFA align='center'>");
  74. echo("<tr><td colspan='4' bgcolor=#FF0000 align='center'>Zawartość koszyka</td></tr>");
  75. echo("<tr><td width='60%'>Produkt</td><td>Cena</td><td>Ilość</td>");
  76. echo("<td>Wartość</td></tr>");
  77.  
  78. $suma = 0;
  79. while($row = mysql_fetch_row($result)){
  80. echo("<tr>");
  81. echo("<td>$row[1]</td>");
  82. echo("<td>$row[2]</td>");
  83. $ile = $_SESSION['koszyk'][$row[0]];
  84. $wartosc = $_SESSION['koszyk'][$row[0]] * $row[2];
  85. $wartosc = sprintf("%01.2f", $wartosc);
  86. $suma += $wartosc;
  87. echo("<td><input type='text' name='$row[0]' value='$ile' size='2'/></td>");
  88. echo("<td align='right'>$wartosc</td>");
  89. echo("</tr>");
  90. }
  91. $suma = sprintf("%01.2f", $suma);
  92. echo("<tr><td align='left' colspan='3'>Całkowita wartość</td>");
  93. echo("<td align='right'>$suma</td></tr>");
  94.  
  95. echo("<tr><td align='right' colspan='4'><input type='submit'");
  96. echo("value='Zapisz zmiany'></td></tr>");
  97.  
  98. echo("<tr><td align='right' colspan='4'><a href='main.php?action=");
  99. echo("checkout'><h3>Do kasy</h3></td></tr>");
  100.  
  101. echo("</table>");
  102. echo("</form>");
  103. }
  104.  
  105. function modifyBasket()
  106. {
  107. foreach($_SESSION['koszyk'] as $key => $val){
  108. if(!isSet($_POST[$key])){
  109. unset($_SESSION['koszyk'][$key]);
  110. }
  111. else if($_POST[$key] < 1){
  112. unset($_SESSION['koszyk'][$key]);
  113. }
  114. else{
  115. $_SESSION['koszyk'][$key] = $_POST[$key];
  116. }
  117. }
  118. }
  119.  
  120. function checkout()
  121. {
  122. if(!isSet($_SESSION['UserId'])){
  123. echo("<h3 align='center'> Aby złożyć zamówienie muszisz być ");
  124. echo("<a href='main.php?action=slf'> zalogowany</a>.<br>");
  125. echo("Jeśli nie masz jeszcze konta w naszym serwisie, ");
  126. echo("<a href='main.php?action=srf'>załóż je teraz</a>.<h3>");
  127. return;
  128. }
  129.  
  130. if(!isSet($_SESSION['koszyk'])){
  131. $_SESSION['koszyk'] = array();
  132. }
  133.  
  134. if(count($_SESSION['koszyk']) < 1){
  135. echo("<p align='center'>Koszyk jest pusty</p>");
  136. return true;
  137. }
  138.  
  139. if(!makeDBConnection()){
  140. echo("<h3 align='center'>Wystąpił błąd serwera.</h3>");
  141. return;
  142. }
  143.  
  144. $ids = "";
  145. foreach($_SESSION['koszyk'] as $key => $val){
  146. if($ids == ''){
  147. $ids = $key;
  148. }
  149. else{
  150. $ids .= ", $key";
  151. }
  152. }
  153.  
  154. $query = "SELECT Id, `Nazwa`, Cena FROM produkty WHERE id IN($ids) ";
  155. $query .= "ORDER BY `Nazwa`";
  156.  
  157. if(!$result = mysql_query($query)){
  158. //echo("Odrzucone zapytanie: funkcja showItem: $query");
  159. echo("<h3 align='center'>Wystąpił błąd serwera.</h3>");
  160. return;
  161. }
  162.  
  163. echo("<table border='0'bgcolor=#F8F8FF align='center'>");
  164. echo("<tr><td colspan='4' align='center'>Podsumowanie zamówienia");
  165. echo("</td></tr>");
  166. echo("<tr><td width='60%'>Tytuł</td><td>Cena</td><td>Ilość</td>");
  167. echo("<td>Wartość</td></tr>");
  168.  
  169. $suma = 0;
  170. while($row = mysql_fetch_row($result)){
  171. echo("<tr>");
  172. echo("<td>$row[1]</td>");
  173. echo("<td>$row[2]</td>");
  174. $ile = $_SESSION['koszyk'][$row[0]];
  175. $wartosc = $_SESSION['koszyk'][$row[0]] * $row[2];
  176. $wartosc = sprintf("%01.2f", $wartosc);
  177. $suma += $wartosc;
  178. echo("<td align='right'>$ile</td>");
  179. echo("<td align='right'>$wartosc</td>");
  180. echo("</tr>");
  181. }
  182.  
  183. echo("<tr><td colspan='4' align='center'><hr></td></tr>");
  184.  
  185. $suma = sprintf("%01.2f", $suma);
  186. echo("<tr><td align='left' colspan='3'>Całkowita wartość</td>");
  187. echo("<td align='right'>$suma</td></tr>");
  188.  
  189. echo("<tr><td align='right' colspan='4'><a href='main.php?action=");
  190. echo("saveorder'><h3>Złóż zamówienie</h3></a></td></tr>");
  191.  
  192. echo("</table>");
  193. }
  194.  
  195. function saveorder()
  196. {
  197. if(!isSet($_SESSION['UserId'])){
  198. echo("<h3 align='center'> Aby złożyć zamówienie muszisz być ");
  199. echo("<a href='main.php?action=slf'> zalogowany</a>.<br>");
  200. echo("Jeśli nie masz jeszcze konta w naszym serwisie, ");
  201. echo("<a href='main.php?action=srf'>załóż je teraz</a>.<h3>");
  202. return;
  203. }
  204.  
  205. if(!isSet($_SESSION['koszyk'])){
  206. $_SESSION['koszyk'] = array();
  207. }
  208.  
  209. if(count($_SESSION['koszyk']) < 1){
  210. echo("<p align='center'>Koszyk jest pusty</p>");
  211. return;
  212. }
  213.  
  214. if(!makeDBConnection()){
  215. echo("<h3 align='center'>Wystąpił błąd serwera.</h3>");
  216. return;
  217. }
  218.  
  219. $ids = "";
  220. foreach($_SESSION['koszyk'] as $key => $val){
  221. if($ids == ''){
  222. $ids = $key;
  223. }
  224. else{
  225. $ids .= ", $key";
  226. }
  227. }
  228.  
  229. $userId = $_SESSION['UserId'];
  230. $query = "INSERT INTO Zamowienia VALUES(NULL, $userId, NOW(), NULL, 0)";
  231.  
  232. if(!@mysql_query($query)){
  233. echo("<h3 align='center'>Wystąpił błąd serwera.</h3>");
  234. return;
  235. }
  236.  
  237. if(!$orderId = @mysql_insert_id()){
  238. echo("<h3 align='center'>Wystąpił błąd serwera.</h3>");
  239. return;
  240. }
  241.  
  242. $query = "SELECT Id, Cena FROM produkty WHERE Id IN($ids) ";
  243.  
  244. if(!$result = @mysql_query($query)){
  245. //echo("Odrzucone zapytanie: funkcja saveOrder: $query");
  246. echo("<h3 align='center'>Wystąpił błąd serwera.</h3>");
  247. return;
  248. }
  249.  
  250. while($row = @mysql_fetch_row($result)){
  251. $id = $row[0];
  252. $cena = $row[1];
  253. $ile = $_SESSION['koszyk'][$row[0]];
  254. $query = "INSERT INTO produktyzamowienia VALUES($id, $orderId, ";
  255. $query .= "$ile, $cena)";
  256. @mysql_query($query);
  257. }
  258. unset($_SESSION['koszyk']);
  259. echo("<p align='center'>Zamówienie zostało zapisane w systemie.</p>");
  260. echo("<p align='center'>Idnetyfikator zamówienia: $orderId.</p>");
  261. }
  262.  
  263.  
  264.  
  265. ?>