0

私は PHP でページネーションを行っており、次のページと前のページの SUBMIT ボタンを持っているため、ユーザーが 1 ページで 2 つの値をチェックすると、それをセッション変数に保存し、戻ってきたときに値を使用in_arrayしてエコーアウトします。しかし、ユーザーがチェックを外した場合、配列の値を設定解除するにはどうすればよいですか? ユーザーがチェックボックスをオフにした場合、セッション配列の値を設定解除できません。

私の説明は非常に明確だと思いますが、それでもここよりもコードが必要な場合は

if(!empty($_POST['rec_num'])) {
        if(empty($_SESSION['checks_selected_for_records'])) {
               //If session array is empty than directly add all record numbers in
               //this session
           $_SESSION['checks_selected_for_records'] = $_POST['rec_num'];
       }
        //If a new value is seen and is not in array than add it            
       foreach ($_POST['rec_num'] as $check_rec_num) {
        if(!in_array($check_rec_num, $_SESSION['checks_selected_for_records'])) {
           array_push($_SESSION['checks_selected_for_records'], $check_rec_num);
       }
   }
} 

//Handle Redirects For Pagination
if (isset($_POST['next_page']) || isset($_POST['last_page']) || isset($_POST['first_page']) || isset($_POST['previous_page'])) {
        if(isset($_POST['next_page_link'])) {
            redirect_to($_POST['next_page_link']);
        } elseif (isset($_POST['last_page'])) {
            redirect_to($_POST['last_page_link']);
        } elseif (isset($_POST['first_page'])) {
            redirect_to($_POST['first_page_link']);
        } elseif (isset($_POST['previous_page'])) {
            redirect_to($_POST['previous_page_link']);
        }
    }
4

2 に答える 2

1

array_search を使用して配列から値を削除する

if(($key = array_search($del_val,  $_SESSION['checks_selected_for_records'])) !== false) {
   unset($_SESSION['checks_selected_for_records'][$key]);
 }
于 2013-02-13T15:59:53.520 に答える
0

何かのようなもの:

<form action="" method="POST">
  <input type="checkbox" name="mycheckbox">
</form>

<?php
  $_SESSION['mycheckbox'] = isset($_POST['mycheckbox']);
// OR
  if( ! isset($_POST['mycheckbox']) ) {
    unset($_SESSION['mycheckbox']);
  } else {
    $_SESSION['mycheckbox'] = $_POST['mycheckbox'];
  }
于 2013-02-13T16:01:08.077 に答える