В настоящее время я создаю корзину покупок, которая использует структуру в массиве для хранения информации о корзине. Если товар уже добавлен в корзину и снова нажата кнопка «Добавить в корзину», мне нужно обновить количество структуры, а не добавлять другой элемент в корзину. Когда нажата кнопка «Добавить в корзину», я сначала проверяю, является ли массив пустым, если нет, я перебираю массив, ища идентификатор продукта, представленный в форме, и, если он найден, я просто обновляю поле количества, связанное с идентификатором продукта. Затем я устанавливаю переменную addNew = no. Я использовал cfelse, если продукт не найден, установите переменную addNew = yes. Я понимаю, в чем заключается моя проблема: если в корзине более одного товара, цикл продолжается, и, очевидно, в какой-то момент он не находит идентификатор товара и устанавливает переменную addNew = new, которая затем также обновит количество, также добавьте продукт в новую структуру, получая в результате продукт кол-во 2 и продукт кол-во 1.
Это первый раз, когда используются массивы и структуры таким образом, и я просто пробираюсь сквозь них, поэтому, если мой код неэффективен, я прошу прощения. Любые указатели очень ценятся;
<cfif arrayLen(session.mycart) GT 0>
<cfloop index="i" from="1" to="#arrayLen(session.mycart)#">
<!---check for existance of the id submitted--->
<cfif session.mycart[i].itemID eq form.itemID>
<!---if the id is matched update the quantity--->
<cfset session.mycart[i].quantity = form.quantity+session.mycart[i].quantity>
<cfset myTotal = form.itemCost*session.mycart[i].quantity>
<cfset session.mycart[i].totalPrice = myTotal>
<!---this will tell the add to cart function not add a new item--->
<cfset addNew = "no">
<cfelse>
<!---as this is a new item tell the add to cart function to add it--->
<cfset addNew ="yes">
</cfif>
</cfloop>
<cfelse>
<!---as the array is empty tel the add to cart function insert the product--->
<cfset addNew ="yes">
</cfif>