Построить флажки с PHP из mysql

У меня есть следующая таблица в моей базе данных:

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 из mysql

И это то, что я получаю в PHP:

Построить флажки с PHP из mysql

Можешь фото выложить...

vaku 29.04.2019 21:12

попробуйте отладить объект $row и посмотреть, что он содержит, используя var_dump() или print_r() - вы можете получить объект или массив обратно из вашего запроса, а не ассоциативный массив. вам может понадобиться только $row[0]

Matthew Knight 29.04.2019 21:14

Как он хранится в базе данных?

Jay Blanchard 29.04.2019 21:14

Вы просто ищете echo "<input type='checkbox' name='data[]' value='" . htmlspecialchars($row['subject']) . "' /> <label>" . htmlspecialchars($row['subject']) . "</label>";

Chris White 29.04.2019 21:14

Почему вы установили атрибут имени на data[]

vaku 29.04.2019 21:15

Ваш запрос выбирает только subject; это имя? Возможно, вы должны сделать SELECT * и получить доступ $row["subject_id"] в value и просто вывести $row["subject"] после?

Tim Lewis 29.04.2019 21:16

@ChrisWhite Да!! Это Крис, спасибо! :D

ana 29.04.2019 21:20
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На самом деле довольно просто, просто соедините переменную $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>

ana 29.04.2019 21:24

Не уверен, почему вы оборачиваете значения в эту функцию - вещи, поступающие из базы данных, уже должны быть в безопасности.

Jay Blanchard 29.04.2019 21:25

Нет, вы всегда экранируете для вывода HTML, никогда не экранируете значения перед помещением их в базу данных.

miken32 29.04.2019 21:42

@JayBlanchard Я всегда слышал, что большую часть времени вещи должны храниться в базах данных в необработанном виде и экранироваться при выводе.

GrumpyCrouton 29.04.2019 21:44

escape на выходе достаточно.

Elroy Jetson 29.04.2019 22:23

Другие вопросы по теме