上記のフォームと同様に、js を追加しない場合、行ごとに 1 つのデータをデータベースに書き込む必要はありません。この配列の組み合わせ方が分かりません
私のフォームは以下のように設定しています:
<table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td> 品名:<input name="pinming[]" type="text" value=""> 型号:<input name="xinghao[]" type="text" value=""> 规格:<input name="guige[]" type="text" value=""> 数量:<input name="shuliang[]" type="text" value=""> 单价:<input name="danjia[]" type="text" value=""> 总价:<input name="zongjia[]" type="text" value=""> </td> </tr> <tr> <td> 品名:<input name="pinming[]" type="text" value=""> 型号:<input name="xinghao[]" type="text" value=""> 规格:<input name="guige[]" type="text" value=""> 数量:<input name="shuliang[]" type="text" value=""> 单价:<input name="danjia[]" type="text" value=""> 总价:<input name="zongjia[]" type="text" value=""> </td> </tr> </table>
array 'pinming' => array 0 => string '123' (length=3) 1 => string '123' (length=3) 'xinghao' => array 0 => string '123' (length=3) 1 => string '123' (length=3) 'guige' => array 0 => string '123' (length=3) 1 => string '123' (length=3) 'shuliang' => array 0 => string '123' (length=3) 1 => string '123' (length=3) 'danjia' => array 0 => string '123' (length=3) 1 => string '123' (length=3) 'zongjia' => array 0 => string '12312' (length=5) 1 => string '123' (length=3)
array( //第一条 array( 'pinming' => 'xxx' 'guige' => 'xxx' //....其他字段 ) //第二条 array( 'pingming' => 'xxx' 'guige' => 'xxx' //其他字段 ) //第N条 array())
ただの行と列の入れ替えではないでしょうか?
class squareArray{ public function swapRowCol($inArr) { $mit = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC); foreach($inArr as $key => $value) { $temArr = new ArrayIterator($value); $mit->attachIterator($temArr, $key); } $arr = array(); foreach($mit as $item) array_push($arr,$item); if (isset($inArr[0])) $arr = array_combine(array_keys($inArr[0]),$arr); return $arr; } public function swapRowColWithKey($inArr) { foreach($inArr as $k1=>$v1) foreach($v1 as $k2=>$v2) $arr[$k2][$k1] = $v2; return $arr; }...
本来、入力 Web ページは一連の変数名を含む 1 行 (1 つの TD) として設計されるべきですが、それは簡単ではないでしょうか。
foreach($_POST as $name=>$item) { if(is_array($item)) { foreach($item as $key=>$value) { $res[$kek][$name] = $value; } }}
$fields=array('pinming','guige','xinghao','shuliang','danjia','zongjia');$data=array();foreach($_POST['pinming'] as $key=>$vo){ foreach($fields as $item){ $data[$key][$item]=$_POST[$key][$item]; }}//$data is the result
foreach($_POST as $name=>$item) { if(is_array($item)) { foreach($item as $key=>$value) { $res[$kek][$name] = $value; } }}
最初に行と列の変換を完了してから、空の項目をすべて削除
foreach($res as $i=>$item) { if(trim(join('', $item)) == '') unset($res[$i]);}
この種の提出はそれほど複雑にする必要はありません
1 つのポイントを決めれば簡単にできますこれは、どの項目が必須であるか、つまり空にすることはできません
ここで私は製品名を空にすることができないと仮定すると、プログラムにはこれが必要です
foreach($pinming as $key=>$val) { $uparr=array(); if(trim($val)!='') { $uparr['pinming']=$val; $uparr['xinghao']=$pinming[$key]; $uparr['guige']=$guige[$key]; $uparr['shuliang']=$shuliang[$key]; $uparr['danjia']=$danjia[$key]; $uparr['zongjia']=$zongjia[$key]; //这里加插入数据库语句 }}
foreach($_POST as $name=>$item) { if(is_array($item)) { foreach($item as $key=>$value) { $res[$kek][$name] = $value; } }}
foreach($_POST as $name=>$item) { if(is_array($item)) { foreach($item as $key=>$value) { $res[$kek][$name] = $value; } }}
foreach($_POST as $name=>$item) { if(is_array($item)) { foreach($item as $key=>$value) { $res[$kek][$name] = $value; } }}
$newarr=array();foreach($pinming as $key=>$val) { $uparr=array(); if(trim($val)!='') { $uparr['pinming']=$val; $uparr['xinghao']=$pinming[$key]; $uparr['guige']=$guige[$key]; $uparr['shuliang']=$shuliang[$key]; $uparr['danjia']=$danjia[$key]; $uparr['zongjia']=$zongjia[$key]; $newarr[]=$uparr; }}
厳密ではなく柔軟になる方法を知っておく必要があります。考え中