У меня есть система автоматической проверки, которая не работает должным образом
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’, из-за которых система работает неправильно … Я не знаю, как ее решить, любая помощь будет приветствоваться!
Проблема заключается в том, что вы используете пробелы в name
атрибут input
тег. Увидеть эта ссылка:
Токены ID и NAME должны начинаться с буквы ([A-Za-z]) и могут сопровождаться любым количеством букв, цифр ([0-9]), дефисов («-«), подчеркиваний («_») , двоеточия («:») и точки («.»).
Это также было рассмотрено в других вопросах SO
Пробелы не положено и не будет работать должным образом, когда вы отправляете их, используя либо POST
или же GET
методы. Поэтому вы должны переименовать любые значения с пробелами или использовать str_replace
функция для замены пробелов подчеркиванием или чем-то подобным. Также обратите внимание на часть, которая говорит «должен начинаться с буквы» … это также означает, что значение 106 Sul
является недействительным даже если вы изменили его на 106Sul
,
если проблема в пробеле, вы не можете просто заменить его другим символом, например так:
str_replace(' ','|',$nome);
Затем, читая результаты, вы просто заменяете | с пространством и сохранить его в БД
Вы можете проверить вход только с помеченным значением в теге:
<input type="checkbox" checked />
Попробуйте написать слово вместо «check = ‘checked’» в вашем HTML от php.