重新填充页面上的复选框的方法?

时间:2014-02-06 18:18:57

标签: php checkbox populate

我有一些奇怪/独特的情况,我目前正在寻找一种在我的页面上“重新填充”复选框的方法。

首先介绍页面/应用的工作方式。

1。)state1:​​你得到简单的搜索表单。输入第一个或最后一个或州等,点击提交。 它查询数据库并回发到SAME页面(?mode = results)。

在MAIN容器DIV内部,我遍历返回的记录,并创建(回显)具有特定表格布局的TABLE,以解析每个记录/行(名称,日期,ID#等)的值。

如果我从DB返回5条记录,我会循环并相互创建5个表,并使用记录/行中的唯一数据填充每个表。

在我创建的每个表中,以及来自DB记录/行的数据。我还创建/添加了几个复选框。

使用一些jQuery和$(document).ready,我会为所有这些复选框监听onClick事件。因此,当点击时,我从复选框中获取一些数据,以及一些父信息,并执行以下操作:

a。)我在舞台上创建/添加另一个元素
b。)对外部.php脚本进行Ajax调用,以便我可以使用我构建的数组更新SESSION(收集所有用户检查/输入)

我在JS / jQuery中构建数组并使用Ajax调用将这些数据导入我的PHP会话(任何人都知道不使用这个外部.php脚本来更新SESSION var的方法,请告诉我!)< / p>

所以到目前为止重新上限:没有“FORM”(标签),只是复选多个表格中的框。实际上没有一个按钮(提交)事件可以同时在任何地方发送所有复选框数据。每次单击(或单击)复选框时,我都会更新我的SESSION数组。如果/当用户准备'结账'(缺少更好的术语)(离开页面并转到另一页)时,SESSION数据/数组是'当前'并且数据已准备好在任何用户上使用以下几页。

到目前为止,上面发布的所有内容都可以正常使用。

我的问题是:如果用户想要使用所有复选框返回到此主页,那么我需要重新填充所有这些复选框的好,简单/优雅的解决方案?

我认为我唯一的方法是检查并查看主页加载时是否存在此SESSION数组(意味着它是重新访问,而不是第一次),并尝试循环遍历此数组并以某种方式进行目标在我的舞台上找到正确的表格,然后是复选框ID?

通常使用jQuery来管理DOM - 而不是PHP? 那么用PHP切换复选框呢?

有一个很好的方法吗?

2 个答案:

答案 0 :(得分:1)

我真的没有看到你的问题。我概括了一下:

  • 您有一个包含多个<table>的网页来自您的数据库(1行= 1 <table>
  • 在这些表格中,您有复选框
  • 当您单击复选框时,您执行ajax调用以保存会话
  • 中单击的复选框
  • 您的问题是:当页面再次使用时,我如何重新填充复选框

我认为你已经有了答案:只使用你在会话中存储的内容。在构建<table>和您的复选框时,请测试它们是否在会话中:

<input type="checkbox" <?php if (!empty($_SESSION['blabla'][$myCurrentCheckboxID])) echo 'checked'; ?> />

如果你想要更优雅的东西,只需创建一个漂亮的PHP类或函数列表来生成你的复选框。

答案 1 :(得分:0)

感谢您的建议..这最终对我有用(到目前为止)

function sessionCheck($recordID, $checkBoxID){
    for($r = 0; $r< count($_SESSION['userPicks']); $r++){
        if($_SESSION['userPicks'][$r]['recordid'] == $recordID){
            for($z=0; $z < count($_SESSION['userPicks'][$r]['itemsordered']); $z++){
                if($_SESSION['userPicks'][$r]['itemsordered'][$z]['name'] == $checkBoxID){
                    return 'checked="checked"';
                }else{
                    return "";
                }
            }
        }else{
            return "";
        }
    }
}
MY项目的用法是这样的:

 <?=sessionCheck($row["id"] ."-A","Testimonial History") ?>