【问题标题】:how get multiple checkbox value from session variable如何从会话变量中获取多个复选框值
【发布时间】:2018-12-19 20:24:50
【问题描述】:

在我的情况下,我只得到最后一个复选框值,没有显示所有选中的复选框值。 共有三页, 在 menu.php 中,我从用户那里获得了多个复选框值

<form method="POST" action="internal.php">

  <input type="checkbox" name="sides[]" value="Cheese" ><label>Cheese </label>

  <input type="checkbox" name="sides[]" value="Broccoli"><label>Broccoli </label>

  <input type="checkbox" name="sides[]" value="Carrots"><label>Carrots</label>
</form>

internal.php(这里我在会话中存储多个复选框值。)

<?php
  session_start();
    if(!empty($_POST['sides'])) {
       foreach($_POST['sides'] as $check) {

        $_SESSION['sides']=$check;
         echo $_SESSION['sides']; // if i don't use header location then here i get all checkbox value
         echo "<br>";

      }
  }
 header('location: show.php');
?>

最后一页,即 show.php 我试图显示多个复选框值

 <?php if(isset($_SESSION['sides'])){ ?>

  <div class="col-lg-4 col-md-4 col-sm-6">
    <p><?php echo $_SESSION['sides']; ?></p> // here i get only last checked checkbox value
  </div>

  <?php unset($_SESSION['sides']); } ?>

【问题讨论】:

    标签: php session session-cookies session-variables


    【解决方案1】:

    您实际上并没有保存会话中的所有复选框值,您只是将最后一个保存为这一行

    $_SESSION['sides']=$check;
    

    每次循环都会覆盖$_SESSION['sides']

    所以像这样连接值

    <?php
        session_start();
        if(!empty($_POST['sides'])) {
            foreach($_POST['sides'] as $check) {
                $_SESSION['sides'] .= $check;
            }
        }
        header('location: show.php');
    ?>
    

    你也可以像这样在里面添加一个分隔符

    <?php
        session_start();
        if(!empty($_POST['sides'])) {
            foreach($_POST['sides'] as $check) {
                $_SESSION['sides'] .= $check . ',';
            }
        }
        rtrim($_SESSION['sides'], ',');  // remove last comma seperator
        header('location: show.php');
    ?>
    

    附加说明:请记住,PHP 只会发送 Checked 复选框值。

    【讨论】:

    • 您也可以使用 array_push 代替连接字符串。 $_SESSION['sides'][] = $check or array_push(sesionarray, id);
    • 是的,我不想让它那么复杂。需要在最后一页代码中做更多的工作才能打印出来:)
    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 2023-03-22
    相关资源
    最近更新 更多