Флажок автоматической проверки PHP не работает

У меня есть система автоматической проверки, которая не работает должным образом

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’, из-за которых система работает неправильно … Я не знаю, как ее решить, любая помощь будет приветствоваться!

0

Решение

Проблема заключается в том, что вы используете пробелы в name атрибут input тег. Увидеть эта ссылка:

Токены ID и NAME должны начинаться с буквы ([A-Za-z]) и могут сопровождаться любым количеством букв, цифр ([0-9]), дефисов («-«), подчеркиваний («_») , двоеточия («:») и точки («.»).

Это также было рассмотрено в других вопросах SO

Пробелы не положено и не будет работать должным образом, когда вы отправляете их, используя либо POST или же GET методы. Поэтому вы должны переименовать любые значения с пробелами или использовать str_replace функция для замены пробелов подчеркиванием или чем-то подобным. Также обратите внимание на часть, которая говорит «должен начинаться с буквы» … это также означает, что значение 106 Sul является недействительным даже если вы изменили его на 106Sul,

2

Другие решения

если проблема в пробеле, вы не можете просто заменить его другим символом, например так:

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

Затем, читая результаты, вы просто заменяете | с пространством и сохранить его в БД

0

Вы можете проверить вход только с помеченным значением в теге:

<input type="checkbox" checked />

Попробуйте написать слово вместо «check = ‘checked’» в вашем HTML от php.

-1
По вопросам рекламы [email protected]