【问题标题】:Update a value in a table using checkbox in PHP使用 PHP 中的复选框更新表中的值
【发布时间】:2015-06-29 03:11:00
【问题描述】:

我是 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';
                    }

                }
            }
        ?>

【问题讨论】:

标签: php mysql


【解决方案1】:

是的,像 madID 这样的普通字符串也可以正常工作。

  • name="medID" => $_post['medID']
  • name="medID[]" => $_post['medID'][0] de last [0] 将为您提供数组的第一个元素

当数组是动态创建的表单时,它会非常有用。未设置输入数量的表单,例如联系人表单,您可以单击加号图标为多个电话号码添加另一个文本输入。因为它不知道某人有多少电话号码,所以更容易将一个变量检索为一个数组并在之后迭代这个数组。

您不会收到如下错误:

注意:未定义的索引:medID in ....

在您的代码中有name="medID[]"$_post['medID']。因此,您的表单正在发送一个数组,但您检索的是一个普通变量。只需从name="medID[]" 中删除[]

因为if(empty($id) $id 将始终为空,所以您甚至无法到达您的查询。

【讨论】:

  • 我没有收到任何此类错误。我也按照你说的做了改变。但我仍然没有得到任何结果。当我将 $imp 替换为 $id 时,我只能对表中的最后一行进行更改。也许问题在于存储值。但我仍然没有得到任何结果来更新其他行。
【解决方案2】:

没什么可说的;首先,当您使用post 作为method 提交值时,我不明白使用action 的查询字符串的概念。其次,如果您也尝试使用查询字符串中的值;那么我在你的整个程序中找不到$_GET[]。第三是当您不确定获取或发布集合时使用$_REQUEST[] 的建议。此外,name="medID[]" 不会为 PHP 创建任何数组。 ytube.php 是您创建此表单的同一页面吗?

【讨论】:

  • name="medID []" 检索时会创建一个数组$_GET['medID']
  • 嗯...我的意思是说,如果当时需要一个值,则无需创建这样的数组。而且,我在代码中只能看到$_POST
  • @RaviGauravPandey 这不是完整的代码。我使用 $_GET 进入这个特定的表单页面。是的,需要使用数组来传递每个值,
  • @PHPeter 现在我可以获得所有的 medID 值。但现在我面临获取数量值的问题。我不知道如何在查询中获取特定选中行的值。
  • @Abhishek Kumar 现在可以使用 medID。但是您是否想通过使用此查询来更新所有 medID 值的单个数量值:$q="UPDATE hospitalstock SET quantity= (quantity - '.$quan.') WHERE medID IN('.$imp.')" ; 因为对于查询,这将只为每个 medID 输入一个输入数量的单个值作为 $quan
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 2012-05-03
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
  • 2014-11-27
  • 1970-01-01
相关资源
最近更新 更多