Я пытаюсь создать сайт электронной коммерции.У меня есть продукты, которые имеют разные атрибуты (например, цвет), и у каждого из них должен быть свой номер модели, цена и т. Д.
Я создал форму для сбора и сохранения этой информации.Однако я хочу сохранить эту информацию как переменную $_SESSION
, пока пользователи добавляют товары, чтобы они могли вернуться в раздел цен, и форма будет предварительно заполнена данными, введенными ранее, даже если они еще неНа самом деле продукт еще не сохранен в БД.
Для этого у меня есть строка, которую я воспринимаю как массив элементов, хранящихся как переменная $_SESSION
в PHP
в следующем формате:
'item-test,100,20,20,20,20,£,1,item-test,100,20,20,20,20,£,2'
Я разбираю это в фактический массив, с которым я могу иметь дело примерно так (когда дело доходит до фактического сохранения продукта, мой SQL-запрос находится внутри этого цикла foreach()
):
if(isset($_SESSION['price_array'])){
$price_array = $_SESSION['price_array'];
$result = explode("item-",$price_array);
foreach($result as $item){
if(isset($item) && $item!=""){
$itemValue = explode(",",$item);
$product_model_no = $itemValue[0];
$product_value = $itemValue[1];
$product_discount = $itemValue[2];
$product_margin = $itemValue[3];
$product_shipping_domestic = $itemValue[4];
$product_shipping_other = $itemValue[5];
$product_currency = $itemValue[6];
$product_attribute = $itemValue[7];
}
}
}
Поэтому для создания этой формы у меня есть еще один цикл, который проходит через все возможные атрибуты (не все продукты могут быть всех цветов, поэтому применяются только те, которые хранятся в $_SESSION
).Если я попытаюсь предварительно заполнить это, поскольку мои переменные выше имеют только значения для последнего элемента в массиве.
Однако, если я вложу это в другой цикл, он получит правильные данные, но сгенерирует форму несколько раз в зависимости от количества элементов в массиве, причем каждая итерация формы имеет значениядля этого элемента в массиве.
Я знаю, что это очень сложная попытка объяснить, и я не могу предоставить весь свой код, потому что он очень сложный, и большая часть его генерируется в PHP
из другой информациив других местах.Тем не менее, любая помощь или совет с этим будет принята с благодарностью.
/ ---------- РЕДАКТИРОВАТЬ ---------- \
Основыто, как форма генерируется внутри другого цикла, выглядит следующим образом:
$params = [$attribute];
$sql = "SELECT * FROM attributes WHERE id=?";
$attributeResult = DB::run($sql,$params);
foreach ($attributeResult as $value) {
for ($i = 1; $i <= 15; $i++) {
//generate form here
if($i == $product_attribute){
// pre-populate form here
}
}
}