Это все виды неправильно.
- Вы не можете поместить тег
<script>
внутри атрибута HTML. Это действительно ужасно.
- У вас не может быть нескольких элементов HTML с одинаковым идентификатором. Когда в цикле, используйте счетчик для создания уникальных идентификаторов.
- Вы должны передать все строковые данные, выводимые в HTML, через
htmlspecialchars()
, чтобы не нарушать результат HTML и минимизировать риск уязвимостей XSS.
- Для переноса дополнительных данных в элемент можно использовать что-то отличное от нестандартных атрибутов (например,
state="…"
). Атрибуты HTML5 data-*
были бы хорошо подходят (data-state="…"
). Другой вариант - это, например, класс CSS. Это зависит от того, что вы намерены делать с информацией штата.
- JavaScript может обрабатывать номера просто отлично. При использовании в булевом контексте,
0
оценивается до false
, все остальные цифры оцениваются до true
. Возможно, вам захочется передать данные сервера, как есть, вместо того, чтобы переводить его.
Вот что я буду делать.
$index = 0;
while ($row = mysql_fetch_array($result)) {
$index++;
echo "<td>",
"<input type='checkbox' ",
"id='switch-state-$index' ",
"name='".htmlspecialchars($row['name'])."' ",
"data-state='".$row['state']}."'",
"></td>\n";
}
, который выводит:
<td><input type='checkbox' id='switch-state-1' name='foo' data-state='1'></td>
<td><input type='checkbox' id='switch-state-2' name='bar' data-state='0'></td>
Что такое предполагаемый выход? – Tomalak