【问题标题】:How to get checkboxes remained checked after being checked in another device在另一台设备中检查后如何使复选框保持选中状态
【发布时间】:2016-01-10 08:45:06
【问题描述】:

我在尝试让复选框在另一台设备中保持选中状态时遇到了一些问题,我能够在浏览器中让复选框保持选中状态,因此在浏览器刷新后,复选框仍然处于选中状态,所以有什么想法吗?可以吗?

这是我的代码,首先我包含 dcConnect.php 以连接到数据库,然后我从数据库中检索数据以显示在网站上

<?php
include_once("dcConnect.php");

$dcData = "SELECT dcID, dcServerName, dcServerAge, dcServerGender, dcServerMarital FROM dcUsers";

$result = $link->query($dcData);

if($result->num_rows >0){
    echo"<table><tr><th></th><th>ID</th><th>Name</th><th>Age Group</th><th>Gender</th><th>Marital Status</th></tr>";
    while($row = $result->fetch_assoc()){
        echo"<tr><td><input type='checkbox' id='". $row["dcID"] ."' name='". $row["dcID"] ."' value='off' ></input></td><td>". $row["dcID"] ."</td><td>". $row["dcServerName"] ."</td><td>". $row["dcServerAge"] ."</td><td>". $row["dcServerGender"] ."</td><td>". $row["dcServerMarital"] ."</td></tr>";




    }
    echo "</table>";

    }else{
        echo"no results";

    }

$link->close();



?>

这是我的网站,刷新后复选框可以保持选中状态,但不能在其他设备上保持选中状态 http://forstoringdata.com/default.php

【问题讨论】:

  • “另一个设备”是什么意思?
  • 我看到您正在使用 Javascript 为他们保留 cookie(复选框)以保持选中状态。但是您希望他们在其他设备中也保持检查状态吗?是指计算机,电话,以及具有不同 UserAgent 的任何东西,甚至是同一设备中的另一个浏览器?在这种情况下,我会将值存储在每个用户的“数据库会话”中,而不是 cookie(仅当用户登录时),除非你想检查 IP
  • @David Lavieriyea 我可以知道这是怎么做的吗? @John Hascall 是的另一台设备,就像 David Lavieri 所说的那样在另一台电脑或手机中

标签: php checkbox


【解决方案1】:

目前您似乎正在使用 cookie 来保存复选框的状态。 Cookie 存储在客户端(即用户的计算机)而不是服务器端,这就是为什么您看不到跨设备保留的复选框状态的原因。

为了在数据库中保存和检索复选框状态,您需要在数据库表中添加一个附加列。按照上面的模式,这可能是一个名为“dcChecked”的布尔列。

然后当你打印你的输入时,你会想要做这样的事情:

<input type="checkbox" <?php if($row['dcChecked']) { print 'checked' } ?></input>

(为了清楚起见,这已被简化,您仍然需要包含 ID、名称等的其他属性)

【讨论】:

  • 嗨,感谢您的回复,我在输入您在 while 语句中向我建议的代码时遇到了一些问题,我想知道您是否可以向我展示正确的语法,我希望我也不要问非常抱歉。
【解决方案2】:
<?php

include_once("dcConnect.php");

$dcData = "SELECT dcID, dcServerName, dcServerAge, dcServerGender, dcServerMarital, dcChecked FROM dcUsers";

$result = $link->query($dcData);
?>

<?php if($result->num_rows > 0): ?>
<table>
  <tr>
    <th></th><th>ID</th>
    <th>Name</th>
    <th>Age Group</th>
    <th>Gender</th>
    <th>Marital Status</th>
  </tr>
<?php foreach($rows as $row): ?>
  <tr>
    <td><input type='checkbox' id="<?php print $row["dcID"]; ?> " name="<?php print $row["dcID"]?>" value='off' <?php if($row["dcChecked"]): ?>checked<?php endif;?>></input></td>
    <td><?php print $row["dcID"]; ?></td>
    <td><?php print $row["dcServerName"]; ?></td>
    <td><?php print $row["dcServerAge"]; ?></td>
    <td><?php print $row["dcServerGender"]; ?></td>
    <td><?php print $row["dcServerMarital"]; ?></td>
  </tr>
<?php endforeach; ?>
</table>

<?php else: ?>
  No results
<?php endif; ?>

这是语法在上下文中的样子。我还对其进行了一些重构,使其更具可读性。

【讨论】:

  • 嗨,Nathan,非常感谢您的回复,我已更改为这种语法。我只想确认此代码是否意味着有人必须更改数据库中的布尔值才能使复选框保持选中状态。实际上,我希望复选框在有人检查时保持选中状态,而不是通过编辑数据库,所以我正在考虑提交一个表单,所以如果选中了复选框,它会将布尔值更改为 true,如果布尔值为 true,则复选框将继续检查,我想知道这是否可能。再次感谢您的回复:)
  • 嗨 Nigel,是的,要使此代码正常工作,您需要更新数据库中的值。如果您还没有这样做,您将需要创建一个提交处理程序,该处理程序将捕获表单值并使用它们来更新数据库中的值。如何做到这一点的完整解释超出了我在评论中所能提供的范围,但是您可以在网上找到很多教程。这是我创建的一个视频教程,它应该能让你指出正确的方向:youtube.com/watch?v=wp6Ngpk5XiY
  • 澄清一下——您不需要有人直接手动编辑数据库。这将使用提交表单时调用的 PHP 代码来完成。上面链接的视频教程应该可以解释所有这些。
  • 嗨,Nathan,很抱歉回复得太晚了,很遗憾,我看到了建议的视频,这不是我想要的。我没有尝试将数据插入数据库,我尝试在选中特定复选框时将布尔值更新为 1,在提交表单后反之亦然,但我确实从教程中学到了一些东西:)
猜你喜欢
  • 1970-01-01
  • 2019-07-13
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
  • 2019-09-12
  • 2012-08-25
  • 2016-06-19
相关资源
最近更新 更多