PHP 复选框缓存数据


PHP Tickbox caching data

我目前正在开发一个混合应用程序CMS,我的CMS中的一个元素是在选择用例时使用复选框。(这只发生在铬中)我单击几个复选框以选择一堆用例,然后当我转到另一个页面甚至过滤搜索结果并取消过滤搜索结果时,我选择的勾号不再存在。我希望缓存数据,以便我选择的案例保留在页面上。我正在用PHP编写整个CMS。

这是一段与复选框相关的代码

输出每个事件(除非过滤)并跟踪行

  $row_count = 0;
  foreach( $this->usecases as $usecase ) {
    if ( $this->apply_filters($usecase) ) {
      $row_count += 1;
      if ( $usecase["USECASE_ACTIVE"] ) {
        $active_class    = " class='event-active'";
        $active_checkbox = <<<EOF
          <span class="glyphicon glyphicon-play" aria-hidden="true"></span>

EOF;

      } else {
        $active_class    = "";
        $active_checkbox = sprintf( $checkbox_template, $usecase["USECASE_ID"] );
      }
      echo sprintf(
        $row_template,
        $active_class, $active_checkbox,
        $usecase["USECASE_NAME"], $usecase["USECASE_CATEGORIES"], $usecase["USECASE_ID"]
      );
    }
  }

我是忠实粉丝。尝试类似的东西...

<?php
require 'vendor/autoload.php';
$cache = new 'Doctrine'Common'Cache'ApcCache(); //use APC as the driver
$fruits = $cache->fetch('fruits'); //fetch the data from the cache
if($fruits == null){
  $fruits = array('apple', 'orange', 'grapes', 'coconut', 'papaya');
  $cache->save('fruits', $fruits); //save data into the cache
}
//do something with $fruits
?>

抱歉,只是在线。没有真正理解你的代码,但根据我对你的问题的理解来扩展我的想法。请查看下面的示例进行测试.php

<?php
session_start();
if(isset($_POST['action'])&&$_POST['action']=='checkBox')
{
    $_SESSION['number']=$_POST['checkedVal'];
    exit;
}
?>
<form>
<fieldset>
    <?php
        $vals=['1','2','3'];
        foreach($vals as $val)
        {
            $checked="";
            if(isset($_SESSION['number'])&&in_array($val,$_SESSION['number']))
            {
                $checked="checked";
            }
            echo "<input type='"checkbox'" name='"number[]'" value='"$val'" $checked />$val";
        }
    ?>
</fieldset>
</form>
<a href="test.php">Go another page</a>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
$(function(){
    $("input[name='number[]']").change(function() {
        var checked=new Array();
        $.each($("input[name='number[]']:checked"), function() {
            checked.push($(this).val());
        });
        $.post("test.php", { action: "checkBox", checkedVal: checked } );
    });
});
</script>