我是php的初学者,在复选框方面遇到了问题。
首先,在形式中,我不知道name=medID[]是否专门用作数组。还是像medID这样的普通字符串可以工作?使用数组究竟有多有用。?
当我更新查询中的值时,$quan和$medID值都不会在查询中传递。在浏览器中,它显示"Allated Successfully",但数量的数据库值不变。当我将$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 in。。。。
在您的代码中,您有name="medID[]"
和$_post['medID']
。所以你的表单发送了一个数组,但你检索了一个普通变量。只需从name="medID[]"
中删除[]
因为if(empty($id)
$id将始终为空,所以您甚至无法访问您的查询。
没什么好说的;首先,当您使用post
作为提交值的method
时,我不理解为action
使用查询字符串的概念。其次,如果您也尝试使用查询字符串中的值;那么我在你的整个程序中找不到$_GET[]
。第三,当您不确定获取或发布集合时,建议使用$_REQUEST[]
。此外,name="medID[]"
不会为PHP创建任何数组。ytube.php
是否与您创建此表单的页面相同?