Как получить несколько значений флажка из переменной сеанса - PullRequest
0 голосов
/ 19 декабря 2018

В моем случае я получаю только последнее значение флажка, не показывая все проверенные значения флажка.есть три страницы, в 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']); } ?>

1 Ответ

0 голосов
/ 19 декабря 2018

Вы на самом деле не сохраняете все значения флажков в сеансе, вы сохраняете только последнее, так как эта строка

$_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 будет отправляться толькоПроверенные значения флажка.

...