В настоящее время я создаю корзину для покупок, которая использует структуру в массиве для хранения информации о корзине. Если продукт уже добавлен в корзину и снова нажата кнопка добавления в корзину, мне нужно обновить количество структуры и не добавлять еще один товар в корзину. Когда нажата кнопка добавления в корзину, я сначала проверяю, пуст ли массив, если нет, я просматриваю массив в поисках идентификатора продукта, отправленного формой, если он обнаружен, я просто обновляю поле количества, связанное с идентификатором продукта. , Затем я устанавливаю переменную 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>