У меня есть следующая таблица в моей базе данных:
CREATE TABLE subjects (
subject_id int(11) NOT NULL AUTO_INCREMENT,
subject text,
PRIMARY KEY (subject_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
В таблицу я уже ввел некоторые данные (имена субъектов).
Что я пытаюсь сделать, так это то, что для каждого предмета в таблице создается флажок с именем предмета рядом с ним.
До сих пор мне удалось создать флажки для каждой темы в таблице, но я не могу получить имя темы, отображаемое рядом с флажком. Кто-нибудь знает как это делать?
Я делаю это так:
<?php
$sql = "SELECT subject FROM subjects"; /*Select from table name: subjects*/
$result = $conn->query($sql); /*Check connection*/
if ($result)
{
foreach($result as $row)
{
echo "<input type='checkbox' name='data[]' value='" . htmlspecialchars($row['subject']) . "' /> <label>Here goes the subject name</label>";
}
}
?>
Вот так выглядит моя таблица:
И это то, что я получаю в PHP:
попробуйте отладить объект $row и посмотреть, что он содержит, используя var_dump() или print_r() - вы можете получить объект или массив обратно из вашего запроса, а не ассоциативный массив. вам может понадобиться только $row[0]
Как он хранится в базе данных?
Вы просто ищете echo "<input type='checkbox' name='data[]' value='" . htmlspecialchars($row['subject']) . "' /> <label>" . htmlspecialchars($row['subject']) . "</label>";
Почему вы установили атрибут имени на data[]
Ваш запрос выбирает только subject; это имя? Возможно, вы должны сделать SELECT * и получить доступ $row["subject_id"] в value и просто вывести $row["subject"] после?
@ChrisWhite Да!! Это Крис, спасибо! :D






На самом деле довольно просто, просто соедините переменную $row['subject'] между тегами label:
foreach($result as $row)
{
echo "<input type='checkbox' name='data[]' value='" . htmlspecialchars($row['subject']) . "' /> <label>" .$row['subject'] . "</label>";
}
Вы можете использовать переменные более одного раза в любом выводе.
Да, это работает! Спасибо. Он также работает с <label>" . htmlspecialchars($row['subject']) . "</label>
Не уверен, почему вы оборачиваете значения в эту функцию - вещи, поступающие из базы данных, уже должны быть в безопасности.
Нет, вы всегда экранируете для вывода HTML, никогда не экранируете значения перед помещением их в базу данных.
@JayBlanchard Я всегда слышал, что большую часть времени вещи должны храниться в базах данных в необработанном виде и экранироваться при выводе.
escape на выходе достаточно.
Можешь фото выложить...