各位大大,最近遇到一個(gè)商品顏色尺寸屬性的問(wèn)題,例如一個(gè)商品有兩個(gè)顏色和三個(gè)尺碼,
商品A 顏色有設(shè)計(jì)【黑色,白色】,尺寸有設(shè)計(jì)【 S,M,L】
想透過(guò)點(diǎn)擊商品清單來(lái)到商品詳情頁(yè)面輸入訂購(gòu)的每個(gè)sku的數(shù)量,然後儲(chǔ)存提交到資料庫(kù)。如下圖的效果,大家能給點(diǎn)思路嗎?其中每個(gè)商品的顏色和尺寸不固定,顏色、尺寸資訊都是透過(guò)資料庫(kù)取出後展示未表格的抬頭。
<table> <thead> <tr> <th>商品名稱</th> <?php //?從數(shù)據(jù)庫(kù)中獲取顏色信息 $colors?=?['黑色',?'白色']; //?從數(shù)據(jù)庫(kù)中獲取尺碼信息 $sizes?=?['S',?'M',?'L']; //?動(dòng)態(tài)生成表頭 foreach?($colors?as?$color)?{ foreach?($sizes?as?$size)?{ echo?"<th>{$color}?-?{$size}</th>"; } } ?> </tr> </thead> <tbody> <!--?商品列表數(shù)據(jù)?--> </tbody> </table>
用`<input>`標(biāo)籤來(lái)建立輸入框,並使用`name`屬性來(lái)識(shí)別不同的SKU。例如
<tbody> <?php //?從數(shù)據(jù)庫(kù)中獲取商品列表數(shù)據(jù) $products?=?[ ['name'?=>?'商品A',?'sku'?=>?'A001'], ['name'?=>?'商品B',?'sku'?=>?'B001'], //?其他商品數(shù)據(jù)... ]; //?遍歷商品列表 foreach?($products?as?$product)?{ echo?"<tr>"; echo?"<td>{$product['name']}</td>"; //?為每個(gè)SKU創(chuàng)建輸入框 foreach?($colors?as?$color)?{ foreach?($sizes?as?$size)?{ $sku?=?"{$product['sku']}_{$color}_{$size}"; echo?"<td><input?type='number'?name='{$sku}'></td>"; } } echo?"</tr>"; } ?> </tbody>
用PHP來(lái)處理表單數(shù)據(jù),並將其儲(chǔ)存到資料庫(kù)中。你可以使用`$_POST`超全域變數(shù)來(lái)取得表單數(shù)據(jù),並使用SQL語(yǔ)句將其插入資料庫(kù)例如
<?php //?處理表單提交 if?($_SERVER['REQUEST_METHOD']?===?'POST')?{ //?連接數(shù)據(jù)庫(kù) $conn?=?new?mysqli('localhost',?'username',?'password',?'database'); //?檢查連接是否成功 if?($conn->connect_error)?{ die('數(shù)據(jù)庫(kù)連接失?。??.?$conn->connect_error); } //?遍歷表單數(shù)據(jù) foreach?($_POST?as?$sku?=>?$quantity)?{ //?將SKU拆分為顏色和尺碼 $parts?=?explode('_',?$sku); $color?=?$parts[1]; $size?=?$parts[2]; //?使用SQL語(yǔ)句將數(shù)據(jù)插入數(shù)據(jù)庫(kù) $sql?=?"INSERT?INTO?orders?(sku,?color,?size,?quantity)?VALUES?('$sku',?'$color',?'$size',?'$quantity')"; $result?=?$conn->query($sql); //?檢查插入是否成功 if?(!$result)?{ echo?"插入數(shù)據(jù)失敗:{$conn->error}"; } } //?關(guān)閉數(shù)據(jù)庫(kù)連接 $conn->close(); } ?>#