我正在尝试创建一个电子商务网站。我的产品具有不同的属性(例如颜色),并且每个产品都需要有自己的型号和价格等。
我已生成一个表单来收集此信息并保存。但是,我希望能够在用户添加产品时将此信息保存为$_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
中从其他位置的其他信息生成的。但是,对此有任何帮助或建议将不胜感激。
/ ---------- ---------- EDIT \
在另一个循环中如何生成表单的基础知识如下:
$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
}
}
}