【问题标题】:PHP Form Selected getting all values选择PHP表单获取所有值
【发布时间】:2019-01-03 11:46:33
【问题描述】:

谁能帮助我理解当我 var_dump 产品 id 时,我得到了最后一个 id 的数组,而不是单独的所有?它会循环遍历所有选择的内容,因此应该返回每个选项的 id 值吗?

<?php
if(isset($_POST['feature'])){
    if(isset($_POST['test'])){
        foreach($_POST['test'] as $selected){
            $option = 'No';
            var_dump($row['product_id']);
        }
    }
}
?>

<form action="" method="POST">
    <?php
    $query = $products->findAll();
    foreach($query as $row){
        if($row['featured'] == 'Yes'){
            echo "<label for='featured'>" . $row['p_name'] . " </label> <input type='checkbox' name='test[]' value ='Yes'checked>
            <input type='hidden' name='product_id' value='" . $row['product_id'] . "'>";
        }
        else
        {
            echo "<label for='featured'>" . $row['p_name'] . " </label> <input type='checkbox' name='test[]' value ='No'>
            <input type='hidden' name='product_id' value='" . $row['product_id'] . "'>";
        }
    }
    ?>
    <input type="submit" name="feature" value="Feature">
</form>

【问题讨论】:

  • 您是否尝试将var_dump 置于循环之外?
  • @B001ᛦ 是的,仍然得到一个只有最后一个 id 的数组
  • 我认为你应该使用var_dump($selected['product_id']);
  • @shajji 收到非法字符串偏移的错误
  • 只做这个 var_dump($selected);

标签: php arrays forms checkbox


【解决方案1】:

不要在 foreach 中执行 var_dump,而是在 foreach 循环之外尝试!

 <?php
    if(isset($_POST['feature'])){
      if(isset($_POST['test'])){
        foreach($_POST['test'] as $selected){
        $option = 'No';
        $res = $selected['product_id'];
        }
        }
        var_dump($res);
      }
     ?>

【讨论】:

  • 第 6 行获取非法字符串偏移量
  • @JackS echo $selected['product_id']; 你看到了什么?
  • 非法字符串偏移 'product_id'
  • @JackS 回去一点,在你的foreach($query as $row){ 中做echo $row['product_id'];,你会得到什么?
  • 我得到了一组被选中的产品 ID,尽管 ID 是相同的,而不是每个选定项目的单独 ID。
猜你喜欢
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
相关资源
最近更新 更多