Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Koszyk na zakupy zmiana ilości artykułów
Forum PHP.pl > Forum > PHP
Basia555
Witam
Zrobiłam koszyk na zakupy i mi ogólnie już działa ale nie działa mi w koszyku zrobienie pola przy cenie artykułu w które będę wpisywała ilość m^2 i zapisywała ale tylko dla danego artykułu, nie masowo dla wszystkich artykułów w koszyka.

  1. <?php
  2.  
  3. /* inicjuje zmienna */
  4. if(empty($_SESSION['powierzchnia'])){
  5. $_SESSION['powierzchnia'] = 0;
  6. }
  7. if(isset($_GET['zapiszPowierzchnie'])){
  8. /* przetwarza dane formularza powierzchni */
  9. $_SESSION['powierzchnia'] = floatVal($_POST['powierzchnia']);
  10. }
  11.  
  12.  
  13. if (!isset($_SESSION['koszyk'])) {
  14. $_SESSION['koszyk'] = array();
  15. }
  16.  
  17. if (isset($_GET['reset'])) //chcemy wyczyścić koszyk
  18. {
  19. unset($_SESSION['koszyk']);
  20. header('location: '. $_SERVER['PHP_SELF']. '?'. SID);
  21. exit();
  22. }
  23. ?>
  24.  
  25. <!DOCTYPE html>
  26. <html>
  27. <head>
  28. <meta charset="UTF-8">
  29. <title>Firma budowlana </title>
  30. </head>
  31. <body>
  32. <h1>Twoj koszyk z zakupami</h1>
  33.  
  34.  
  35.  
  36.  
  37. <?php
  38.  
  39. // definicja tablic z towarami oraz cenami
  40.  
  41.  
  42. $i= isset($_GET['i']) ? (int)$_GET['i'] : 0;
  43.  
  44.  
  45. $q = mysql_connect('localhost','root','123') or
  46. die('Padl serwer');
  47. $q = mysql_select_db('stronaphp') or die('Padla baza');
  48.  
  49.  
  50. $wynik = mysql_query("SELECT ID, Nazwa_uslugi, Cena_za_metr FROM cennik_uslug")
  51. or die('Błąd zapytania');
  52.  
  53.  
  54.  
  55. $towary = array();
  56. $ceny = array();
  57. while ($row = mysql_fetch_array($wynik))
  58. {
  59. $towary[$row['ID']]=$row['Nazwa_uslugi'];
  60. $ceny[$row['ID']]=$row['Cena_za_metr'];
  61. }
  62. ?>
  63.  
  64. <table border="1">
  65. </thead>
  66. <tr>
  67.  
  68. <th>Nazwa usługi</th>
  69. <th>Cena za metr</th>
  70. </tr>
  71. </thead>
  72. <tbody>
  73.  
  74.  
  75.  
  76. <?php
  77. $suma = 0;
  78. $powierzchnia = 1;
  79. if($_SESSION['powierzchnia']>0){
  80. $powierzchnia = $_SESSION['powierzchnia'];
  81. }
  82. for ($i=0;$i < count($_SESSION['koszyk']); $i++)
  83. {
  84. echo '<tr>';
  85. echo '<td>'.$towary[$_SESSION['koszyk'][$i]].'</td>';
  86. echo '<td align="right">';
  87. echo number_format ($ceny[$_SESSION['koszyk'][$i]],2);
  88. echo ' zlotych</td></tr>';
  89.  
  90.  
  91.  
  92. <form method=\"get\" action=\"".$_SERVER['PHP_SELF']."\">
  93. <input type=\"text\" name=\"powierzchnia\" value="htmlspecialchars($_SESSION['powierzchnia']); ">
  94. <input type=\"submit\" value=\"zapisz\">
  95. </form>
  96.  
  97.  
  98.  
  99. $suma = $suma + ($ceny[$_SESSION['koszyk'][$i]]);
  100. }
  101. ?>
  102.  
  103.  
  104. </tbody>
  105. <tfoot>
  106. <tr>
  107. <th align="right">Naleznosc: </th><br>
  108. <th align="right"><?php echo number_format($suma,2); ?> zlotych.</th>
  109. </tr>
  110. </tfoot>
  111. </table>
  112.  
  113. <p><a href="towary.php">Kupuj dalej</a> lub też: <a href="<?php echo $_SERVER['PHP_SELF']; ?>?reset=1">Wyczysc swoj koszyk</a></p>
  114. </body>
  115. </html>
  116.  


W jaki sposób to zrobić? Prawie wszystko mam tylko tego mi brakuje

Dodałam coś takiego ale z tym mi nie działa:
  1. <form method=\"get\" action=\"".$_SERVER['PHP_SELF']."\">
  2. <input type=\"text\" name=\"powierzchnia\" value="htmlspecialchars($_SESSION['powierzchnia']); ">
  3. <input type=\"submit\" value=\"zapisz\">
  4. </form>
maniek74
tutaj masz działający koszyk:

plik basketAdd.php
  1. <?php
  2. $_POST['productSize'] = isset($_POST['productSize']) ? $_POST['productSize'] : false;
  3. $_POST["productQuantity"] = isset($_POST["productQuantity"]) ? $_POST["productQuantity"] : 1;
  4.  
  5.  
  6. // Sprawdzenie czy dodawany jest przez formularz
  7. if($_POST['basketID'] == true){
  8. $id = receive($_POST["basketID"]);
  9.  
  10. if($id<>""){
  11. $_POST['productSize'] = $id;
  12.  
  13. // Sprawdzenie czy jest produkt w bazie
  14. $DB->productAdd = $mysql->recordOne("SELECT * FROM `".DB_PREFIX."product` LEFT JOIN `".DB_PREFIX."product_name` ON `product_id`=`product_id_poduct` WHERE `product_id`='".$id."';");
  15.  
  16. // Ilość sztuk produktu
  17. $quantity = isset($_POST["productQuantity"]) ? number_format($_POST["productQuantity"], 0, ".", "") : "";
  18.  
  19.  
  20. if($DB->productAdd['product_id'] == true) {
  21. $_SESSION['basketAdd'][$id][$_POST['productSize']]['name'] = $DB->productAdd['product_name'];
  22. $_SESSION['basketAdd'][$id][$_POST['productSize']]['priceNetto'] = $DB->productAdd['product_price_netto'];
  23. $_SESSION['basketAdd'][$id][$_POST['productSize']]['priceBrutto'] = number_format($DB->productAdd['product_price_brutto'], 2, ".", "");
  24. $_SESSION['basketAdd'][$id][$_POST['productSize']]['vat'] = $DB->productAdd['product_vat'];
  25. $_SESSION['basketAdd'][$id][$_POST['productSize']]['currencyProduct'] = $DB->productAdd['product_code_currency'];
  26.  
  27.  
  28. // Sprawdzenie czy stan nie jest większy przy dodaniu do koszyka produktu
  29. if($DB->productAdd['product_confirm_basket'] == 1 && $DB->productAdd['product_warehouse_count'] <= $quantity && $_SESSION['basketAdd'][$id][$_POST['productSize']]['how'] == false){
  30. $quantity = $DB->productAdd['product_warehouse_count']; $_SESSION['basketAlert'] = $DB->productAdd['product_warehouse_count'];
  31.  
  32. // Sprawdzenie przy powiększaniu stanu
  33. } elseif($_SESSION['basketAdd'][$id][$_POST['productSize']]['how'] >= $DB->productAdd['product_warehouse_count'] && $DB->productAdd['product_confirm_basket'] == 1) {
  34. $quantity = $DB->productAdd['product_warehouse_count']; $_SESSION['basketAlert'] = $DB->productAdd['product_warehouse_count'];
  35. }
  36.  
  37. if($quantity=="") $_SESSION['basketAdd'][$id][$_POST['productSize']]['how']++;
  38. elseif($quantity >= 1) $_SESSION['basketAdd'][$id][$_POST['productSize']]['how'] = $quantity;
  39. elseif($quantity <= 0) unset($_SESSION['basketAdd'][$id][$_POST['productSize']]);
  40. }
  41. }
  42. }
  43.  
  44. Header("Location: ".DB_DOMAIN_ALL."/koszyk");
  45.  
  46. function receive($txt) {
  47. if (get_magic_quotes_gpc()) $txt = stripslashes($txt);
  48. return str_replace(array('\\',"'"), array('\\\\',"\'"), trim($txt));
  49. }
  50. ?>
  51.  

  1.  
  2. <form id="jqtransform" action="http://domena.pl/koszyk_dodaj" method="post" style="margin: 0px; padding: 0px;">
  3. <input name="basketAdd" value="true" type="hidden">
  4. <input name="basketID" value="105" type="hidden">
  5. <input name="basketPATCH" value="http://domena.pl/" type="hidden">
  6. <input class="inputShortButton" name="basketAdd" value="" title="Dodaj do koszyka" alt="Dodaj do koszyka" type="submit">
  7. </form>
  8.  

zmianę wartości koszyka dajesz przez post $_POST["productQuantity"] nadpisze jesli jest większe niż 0, skasuje jesli równe 0


Basia555
Doszłam do takiej postaci i to mi bardzo fajnie działa, tylko że chciałabym miec możliwość zmiany ilości artykułów w koszyku dla każdej linii oddzielnie, na rysunku pokazałam co dokładnie chciałabym osiągnąć

http://zapodaj.net/272cf5901338d.jpg.html

a mój kod koszyka:
  1. <?php
  2.  
  3.  
  4. if (!isset($_SESSION['koszyk'])) {
  5. $_SESSION['koszyk'] = array();
  6. }
  7.  
  8. if (isset($_GET['reset'])) //chcemy wyczyścić koszyk
  9. {
  10. unset($_SESSION['koszyk']);
  11. header('location: '. $_SERVER['PHP_SELF']. '?'. SID);
  12. exit();
  13. }
  14. ?>
  15.  
  16. <!DOCTYPE html>
  17. <html>
  18. <head>
  19. <meta charset="UTF-8">
  20. <title>Firma budowlana </title>
  21. </head>
  22. <body>
  23. <h1>Twoj koszyk z zakupami</h1>
  24.  
  25.  
  26.  
  27. <?php
  28.  
  29. // definicja tablic z towarami oraz cenami
  30.  
  31.  
  32. $i= isset($_GET['i']) ? (int)$_GET['i'] : 0;
  33.  
  34.  
  35. $q = mysql_connect('localhost','root','444') or
  36. die('Padl serwer');
  37. $q = mysql_select_db('stronaphp') or die('Padla baza');
  38.  
  39.  
  40. $wynik = mysql_query("SELECT ID, Nazwa_uslugi, Cena_za_metr FROM cennik_uslug")
  41. or die('Błąd zapytania');
  42.  
  43.  
  44.  
  45. $towary = array();
  46. $ceny = array();
  47. while ($row = mysql_fetch_array($wynik))
  48. {
  49. $towary[$row['ID']]=$row['Nazwa_uslugi'];
  50. $ceny[$row['ID']]=$row['Cena_za_metr'];
  51. }
  52. ?>
  53.  
  54. <table border="1">
  55. </thead>
  56. <tr>
  57.  
  58. <th>Nazwa usługi</th>
  59. <th>Cena za metr</th>
  60. </tr>
  61. </thead>
  62. <tbody>
  63.  
  64.  
  65.  
  66. <?php
  67. $suma = 0;
  68.  
  69. for ($i=0;$i < count($_SESSION['koszyk']); $i++)
  70. {
  71. echo '<tr>';
  72. echo '<td>'.$towary[$_SESSION['koszyk'][$i]].'</td>';
  73. echo '<td align="right">';
  74. echo number_format ($ceny[$_SESSION['koszyk'][$i]],2);
  75. echo ' zlotych</td></tr>';
  76. $suma = $suma + ($ceny[$_SESSION['koszyk'][$i]] );
  77. }
  78. ?>
  79.  
  80.  
  81. </tbody>
  82. <tfoot>
  83. <tr>
  84. <th align="right">Naleznosc: </th><br>
  85. <th align="right"><?php echo number_format($suma,2); ?> zlotych.</th>
  86. </tr>
  87. </tfoot>
  88. </table>
  89.  
  90. <p><a href="towary.php">Kupuj dalej</a> lub też: <a href="<?php echo $_SERVER['PHP_SELF']; ?>?reset=1">Wyczysc swoj koszyk</a></p>
  91. </body>
  92. </html>


Da rade coś z tym zrobić?
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.