我有一个自动检查系统,工作不正常
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",导致系统无法正常工作。。。我不知道该怎么解决,欢迎任何帮助!
问题在于您在input
标记的name
属性中使用了空格。参见此参考:
ID和NAME标记必须以字母([a-Za-z])开头,后面可以跟任意数量的字母、数字([0-9])、连字符("-")、下划线("_")、冒号(":")和句点(".")。
在其他SO问题中也提到了这一点
不允许使用空格,当您使用POST
或GET
方法提交空格时,空格将无法正常工作。因此,您应该用空格重命名任何值,或者使用str_replace
函数用下划线或类似的东西替换空格。还要注意"必须以字母开头"的部分。。。这也意味着106 Sul
的值无效,即使您将其更改为106Sul
也是如此。
如果空间有问题,你不能用另一个字符来代替它吗,比如:
str_replace(' ','|',$nome);
然后在读取结果时,只需将|替换为空格,并将其保存到DB
您只能使用标签中的"checked"值检查输入:
<input type="checkbox" checked />
试着在php的html中写单词,而不是"checked='checked'"。