【问题标题】:php checkboxes from database issue来自数据库问题的 php 复选框
【发布时间】:2013-11-01 23:32:00
【问题描述】:

我有一个包含 8 个不同应用程序名称的数组。如果用户在上次登录时选择了该选项,我会遍历它并选中一个复选框。

foreach($appsArray as $app){ 
    $query = " SELECT UK, SPAIN, FRANCE, BENELUX, GERMANY, SWEEDEN 
    FROM ".$app." 
    WHERE userid = ".$_SESSION['user']['id']; 

    $stmt = $db->prepare($query); 
    $result = $stmt->execute(); 
    $result = $stmt->fetchAll(); 

    echo("<td>".$app."</td> <td><center>
    <input type = 'checkbox' name=\"".$app."[]\"". 
    "value =\"".$app."UK\" checked=\"".$result[0]['UK']."\"/> ");

    $result=""; 
} 

这在一定程度上可行,但是 - 我为第一个应用程序选择的选项会反映在所有选项中。这一定与php中foreach循环的方式有关,但是我不确定如何。

任何建议都将不胜感激。

编辑:澄清一下,我为一个应用程序选择的选项反映在所有应用程序复选框中。我希望他们独立。

【问题讨论】:

  • 我建议使用正确的代码格式开始
  • 我已经修复了太多这样的帖子。请修复代码格式
  • 肯定 - 复制和粘贴搞砸了。道歉。
  • @Programatt:您可能想阅读this question -- 这次我已经为您解决了。 :)
  • 您希望这段代码能做什么?

标签: php html sql checkbox


【解决方案1】:

我认为问题可能更多在于您如何使用复选框的值。我遇到了一些问题,如果您不使用checked="checked",则“已检查”属性不喜欢工作。试试这样的。

$checked = $result[0]['UK'] ? ' checked="checked"' : '';

echo '<td>'.$app.'</td><td><center><input type="checkbox" name="'.$app.'[]"'. 
    ' value="'.$app.'UK"'.$checked.' /> ';

如果这仍然不起作用,请确保在$result 上执行var_dump 或类似操作,以确保您的查询正常工作。

一旦你完成了这项工作,我可能会看到将这些查询合并为一个。我可以帮助 8 个子查询访问数据库,而不是 8 个单独的数据库调用。

【讨论】:

  • 谢谢,我检查了,我的查询运行正常。我正在使用checked =“on”..这还能用吗?
  • 对于 HTML4,它应该是 checked,对于 XHTML,它应该是 checked="checked"checked="on" 不应该是有效的。
  • 所以即使它们被选中“on”,它仍然可能是错误的?
  • 如果您使用的是 XHTML,可以。我认为 HTML4 更宽松。检查页面的源代码(来自浏览器)以查看生成的内容。如果它们都仍然添加了属性,请仔细检查 $result[0] 是您期望的正确数据。
  • 你是对的,谢谢!选中所有框的原因是因为看起来 checked="off" 仍然勾选了一个框。甚至选中的 =“” 也会选中该框。有什么建议可以作为不检查的值吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-24
相关资源
最近更新 更多