我是php的初学者,我对复选框有疑问。
第一件事是,我不知道name = medID []是否专门用作数组。还是像medID这样的普通字符串都可以工作?以及使用数组到底有什么用?
当我更新查询中的值时,$ quan和$ medID值均未在查询中传递。
在浏览器中,它显示“已成功分配”,但数量的数据库值未更改。当我将$ quan和$ imp值替换为一些整数时,它可以正常工作。
<tbody>
<tr>
<form method="post" action="ytube.php?array=hospitalstock&hospitalID=<?php echo $opened['hospitalID']; ?>&id=allot" role="form">
<div class="form-group">
<td class="vcenter"><input type="checkbox" name="medID[]" id="check" value="<?php echo $list['medID']; ?>" /></td>
</div>
<td><?php echo $list['item'] ?> </td>
<td><?php echo $list['price'] ?> </td>
<td><?php echo $list['quantity'] ?> </td>
<td><?php echo $list['subtotal'] ?> </td>
<div class="form-group">
<td><input type="text" name="quantity" id="quantity" class="form-control" /> </td>
</div>
</tr>
<?php }} ?>
<div class="form-group">
<input class="submit" type="submit" value="Allot Medicine" name="submit" class="form-control" />
</div>
</form>
</tbody>
</table>
<?php
$id=$_POST['medID'];
$quan=$_POST['quantity'];
if(isset($_POST['submit'])){
if(empty($id) || $id==0){
echo 'Select medicines to allot ';
}else{
echo $quan;
$imp= implode(", ",$id);
$q="UPDATE hospitalstock SET quantity= (quantity - '.$quan.') WHERE medID IN('.$imp.')" ;
$r=mysqli_query($conn, $q);
if(isset($r)){
echo 'Alloted Succesfully';
}
}
}
?>
最佳答案
是的,像madID这样的普通字符串也可以正常工作。name="medID"
=> $_post['medID']
name="medID[]"
=> $_post['medID'][0]
最后[0]
将使您获得数组的第一个元素
当数组是动态创建的表单时,它可能真的很有帮助。未设置输入数量的表单,例如,您可以单击加号图标为多个电话号码添加另一个文本输入的联系表单。因为它的未知数,使得某人可以更轻松地将一个变量作为数组检索,然后在该数组上进行迭代,所以比较容易。
您不会收到类似以下的错误:
注意:未定义索引:...中的medID。
在您的代码中,您有name="medID[]"
和$_post['medID']
。因此,您的表单正在发送一个数组,但是您检索了一个普通变量。只需从[]
删除name="medID[]"
因此,$ id始终为空,因此您甚至无法访问查询。