使用PHP中的复选框更新表中的值


Update a value in a table using checkbox in PHP

我是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是否与您创建此表单的页面相同?