Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Изменение количества товара в корзине
|
|||
|---|---|---|---|
|
#18+
Всем привет. Недавно начал изучать ПХП и в учебных целях делаю интернет-магазин. В общем корзину сделал, но проблема с изменением количества товара, у меня получается так, что при изменении количества у одного товара, оно меняется у всех товаров в корзине и никак не разберусь где косяк. Буду благодарен за помощь. Ниже структура массива корзины и код. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. Вывод корзины Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 09:19 |
|
||
|
Изменение количества товара в корзине
|
|||
|---|---|---|---|
|
#18+
автор Код: php 1. 2. 3. 4. 5. 6. 7. 8. Если правильно понимаю, то в форме и не обозначено никаким образом, количество какого именно товара (айди элемента корзины) следует изменить. Вероятно, и в запросе UPDATE отсутствует условие WHERE. Предположу, что количество меняется во всех корзинах всех пользователей. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 09:26 |
|
||
|
Изменение количества товара в корзине
|
|||
|---|---|---|---|
|
#18+
а решение ?)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 10:00 |
|
||
|
Изменение количества товара в корзине
|
|||
|---|---|---|---|
|
#18+
donjohn, Очевидно, кроме количества, в форме следует указать ID элемента, для которого это количество будет изменено. Ну и в скрипте обработки изменить запрос соответствующим образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 10:34 |
|
||
|
Изменение количества товара в корзине
|
|||
|---|---|---|---|
|
#18+
в теории я понимаю как это сделать, а на практике не получается, был бы признателен за кусок правильного кода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 10:50 |
|
||
|
Изменение количества товара в корзине
|
|||
|---|---|---|---|
|
#18+
donjohnа на практике не получаетсяПоказывайте, как делали и что не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 11:06 |
|
||
|
Изменение количества товара в корзине
|
|||
|---|---|---|---|
|
#18+
Это файл basket.php Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. а это файл lib.inc.php Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. Как я понимаю логику, то нужно задать каждому инпуту идентефикатор, равный $items['id'], затем как-то указать, что именно у этого поля изменилось значение $item['quantity'] и поменять его в массиве. Думал что-то сделать с такой переменной $q = $goods['$i -1']['quantity'], и тут я теряюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 11:22 |
|
||
|
Изменение количества товара в корзине
|
|||
|---|---|---|---|
|
#18+
donjohnнужно задать каждому инпуту идентефикатор, равный $items['id']Да, именно так. Можно сделать имена вида "q_123". А можно проще - сформировать массив примерно таким образом: name="q_[{$order_item['order_item_id']}]" Второй способ проще при разборе, хотя и гораздо менее понятен поначалу. donjohnкак-то указать, что именно у этого поля изменилось значение $item['quantity']Зачем? Можно просто обновить существующее значение. Независимо от того, изменилось ли оно или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 14:43 |
|
||
|
Изменение количества товара в корзине
|
|||
|---|---|---|---|
|
#18+
так вот тут и проблема. каким образом обновить значение ? имена у инпутов такого формата "q + $item['id']", дальше я могу присвоить некой переменной значение, что-то типа $name = (int) _POST['q']; и получится переменная с айди, который можно сравнить с айди, но опять же проблема у меня в том, что как сопоставить нажатую кнопку с айдишником, а остальные товары пропустить, на которых кнопка не нажата ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 17:15 |
|
||
|
Изменение количества товара в корзине
|
|||
|---|---|---|---|
|
#18+
donjohnимена у инпутов такого формата "q + $item['id']", дальше я могу присвоить некой переменной значение, что-то типа $name = (int) _POST['q']; и получится переменная с айди, который можно сравнить с айди, но опять же проблемаИменно, проблема. Потому и предлагаю менее понятный, но на порядок более простой вариант - передавать массив значений. У позиций в корзине будут имена инпутов вида q[123], q[124], q[125] и так далее, где числовые индексы есть айдишники позиций в корзине. В скрипте обработки получаете ассоциативный массив $_POST['q'], где ключами будут эти самые айдишники, а значениями - количество по соответствующей позиции. Далее в цикле по массиву выполняете UPDATE. Всё просто! donjohnа остальные товары пропустить, на которых кнопка не нажатаОбъясните, ЗАЧЕМ это надо Вам на ДАННОМ этапе? Если очень не хочется делать UPDATE на неизменившихся полях, что хорошо, так как на какие-то 0,001% снизит нагрузку на сервер, то можно яваскриптом сделать такую фишку (один из множества вариантов). Делаете пустую форму, а сами инпуты оставляете вне формы. Инпуты, которые изменяются, яваскриптом копируте в форму как скрытые поля. Необходимо принять меры по защите от дубликатов на случай, если какое-то поле изменилось два или более раз. Впрочем, по хорошему, лучше вообще обойтись без перезагрузки страницы, отправляя асинхронный запрос всякий раз, когда поле меняется. Сам по себе способ довольно прост. Аяксом отправляете POST-запрос с двумя полями - айди позиции и количество. Таким же образом реализуются и кнопочки +/- для увеличения или уменьшения к-ва по позиции. В ответе сервер может прислать сообщение об ошибке или, при успехе, айди позиции и новое количество, которые можно использовать, например, для обновления значения в поле. Впрочем, тут возможна масса вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 19:12 |
|
||
|
Изменение количества товара в корзине
|
|||
|---|---|---|---|
|
#18+
vkle, Попробовал такой вариант, не получается разобраться почему в массив заносится только последний элемент, а не на каждую итерацию ? Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2016, 15:31 |
|
||
|
Изменение количества товара в корзине
|
|||
|---|---|---|---|
|
#18+
по идее эта конструкция c каждым выведенным элементом массива должен выполнять цикл for, который в свою очередь должен заносить значение value данной итерации, а в итоге получается, что заносится значение последнего элемента во все значения массива, где я не правильно мыслю ? Код: php 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2016, 16:03 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=44&tid=1461066]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
18ms |
get forum data: |
3ms |
get page messages: |
90ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 446ms |

| 0 / 0 |
