PHPのmysqlからデータを取得します。チェックボックスと数量(rqty)を持つすべてのアイテムを入力値としてリストし、ユーザーが数量を入力できるようにします。しかし、配列内の対応する入力値(rqty)とチェックボックスを関連付けることはできません。最初のチェックボックスを選択して数量を入力するとうまくいきますが、他のチェックボックスを選択して数量を入力すると、データベースで更新されません。私のコードは以下の通りです:対応する入力値を持つチェックボックス配列
<?php
If (isset($_REQUEST['submit1'])!='') {
foreach($_POST['itm'] as $key=>$itm) {
$odate=date("Y-m-d H:i:s");
$rqty=$_POST['rqty'][$key];
$itm=$_POST['itm'][$key];
$sql1="insert into table (itemtype,itemname,qty ,retdate,reason) select itemtype, itemname, '$rqty', '$odate', 'Return' from stock where itemname='$itm';
mysql_query($sql1);
}
}
?>
<p>
<form action="" method="post" name="form1">
<?php
$query3 = "SELECT id, category, itemtype, itemname, qty, status FROM stock where location='godown'";
$comments3 = mysql_query($query3);
$qty = mysql_num_rows($comments3);
echo "Consumable Items: " . $qty;
print "<table class='blue'>
<thead>
<tr>
<td width=100>Return</td>
<td width=100>Category</td>
<td width=100>Item Type</td>
<td width=100>Item Name</td>
<td width=100>Available Qty.</td>
<td width=100>Return Qty.</td>
<td width=100>Status</td>
</tr>
</thead>";
while($row1 = mysql_fetch_assoc($comments3))
{
$it=$row1['itemname'];
print "<tbody>";
print "<tr>";
print "<td><input type='checkbox' name='itm[]' value='$it'></td>";
print "<td>" . $row1['category'] . "</td>";
print "<td>" . $row1['itemtype'] . "</td>";
print "<td>" . $row1['itemname'] . "</td>";
print "<td>" . $row1['qty'] . "</td>";
print "<td><input type='text' name='rqty[]' placeholder='Enter Qty' /></td>";
print "<td>" . $row1['status'] . "</td>";
print "</tr>";
print "</tbody>";
}
print "</table>";
?>
<input type='submit' name='submit1' value='Return' />
すべてのrqty []が空白のデータでポストされているのがわかります。しかしitmの場合、選択されているものだけが正しいものになっています。
ためにあなたのループのだ
非難され、安全でない** mysql *関数**を使用しないでください。 PHP 5.5(2013年)以降** **非推奨となり、PHP 7(2015年)では完全に削除されました。代わりにMySQLiまたはPDOを使用してください。 2.あなたは** [SQL Injections](http://php.net/manual/en/security.database.sql-injection.php)**を広く読んでおり、実際には[Prepared Statements](http: /php.net/manual/en/mysqli.quickstart.prepared-statements.php)を使用してください。これは上記のMySQLiまたはPDOを使用する場合に使用できます。 –