【问题标题】:PHP Auto-Check checkbox not workingPHP自动检查复选框不起作用
【发布时间】:2014-10-21 18:35:21
【问题描述】:

我有一个无法正常工作的自动检查系统

while($linha = mysql_fetch_array($tabela))
{
    $nome = $linha['TABLE_NAME'];

    ?>

        <input type="checkbox" name="<?php echo $nome ?>" id="<?php echo $nome ?>" value="<?php echo $nome ?>" <?php if(isset($_POST[$nome]))  echo "checked='checked'";?>/> <?php echo $nome ?><br />

    <?php
}

问题是 $nome 变量,它有空格,如“A B”或“106 South”,系统无法正常工作......我不知道如何解决它,欢迎任何帮助!

【问题讨论】:

  • Var_dump($nome) 请..
  • var_dump($nome) 返回它 > string(7) "106 Sul"

标签: php checkbox space


【解决方案1】:

问题在于您在input 标记的name 属性中使用了空格。见this reference

ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 (" _")、冒号 (":") 和句点 (".")。

This has also been addressed in other SO questions

空格不允许,当您使用POSTGET 方法提交它们时,它们将无法正常工作。因此,您应该使用空格重命名任何值或使用str_replace 函数将空格替换为下划线或类似内容。另请注意“必须以字母开头”的部分......这也意味着106 Sul 的值无效,即使您将其更改为106Sul

【讨论】:

    【解决方案2】:

    如果空格是问题,你不能用另一个字符替换它吗,像这样:

    str_replace(' ','|',$nome);
    

    然后在读取结果时,只需替换 |使用空间并将其保存到数据库中

    【讨论】:

    • 谢谢朋友,第一次看到这个功能
    【解决方案3】:

    您只能使用标签中的“checked”值检查输入:

    <input type="checkbox" checked />
    

    尝试在 php 的 html 中写单词而不是“checked='checked'”。

    【讨论】:

    • -1 因为checked="checked" 仍然是有效的 HTML 标记,即使它在 HTML5 中并不常见,但它对于 XHTML 标准来说是活跃的。无论哪种方式,它都可以在任何现代浏览器中运行。
    • 我没说你不能用。
    • 但是它不能解决问题,因此不是答案,而应该是评论。
    猜你喜欢
    • 1970-01-01
    • 2016-03-13
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2016-12-11
    • 2011-07-30
    相关资源
    最近更新 更多