Раскрывающееся меню PHP, объединяющее 2 строки из таблицы данных MySQL - PullRequest
1 голос
/ 18 апреля 2020

Не имеет опыта создания форм в PHP.

Я могу получить форму для создания выпадающего списка, в котором одна из моих строк указана в качестве опции, но как только я попытаюсь объединить 2 строки вместе (из той же таблицы) для вывода опции ...

a) Это просто не работает, и я получаю ошибки

b) Я получаю первую строку как одну опцию, затем моя следующая строка в качестве отдельной опции.

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

MySQLTable Data:

Название таблицы: курсы Строки таблицы: идентификатор_курса, имя_курса, max_enrolment
Пример данных: LO-COMP-8001, введение в HTML, 20

function select_course(){
        global $open;
        $select = "SELECT * FROM courses";
        $result = mysqli_query($open, $select);
        return $result;
    }
    <form action="insert.php" method="post">
    <dl>
        <dt>Select Course</dt>
        <dd><select name="course_id">
           <?php   // CREATE dropdown menu
                 $result = select_course();  
                    while ($row = mysqli_fetch_assoc($result)) {
                    foreach ($row as $selection) {
                       echo "<option value=\"$selection\">$selection</option>";
                    }}
              ?>
        </select>
        </dd>
    </dl>

Затем есть еще несколько полей формы, такие как имя студента и идентификатор студента после этого ...

Вывод цели:

  • course_id имя-курса
  • "LO-COMP-8001 Intro to HTML" ... в виде единого раскрывающегося списка и других оставшихся курсов в раскрывающемся меню

Токовый выход:

  • LO-COMP-8001 (как опция)
  • Введение в HTML ( в качестве другого варианта! ... ничего хорошего)
  • 20 (должен быть скрыт, мне нужно проверить, заполнен ли курс в другой функции, и либо разрешить, либо запретить учащемуся поступить и т.д. c.)

Я пробовал:

// output is the one mentioned above..
echo "<option value=\"$selection\">$selection</option>";
// or alternatively...
echo '<option value="'.$row['course_id'].'">'.$row['course_id'].'</option>';

Но второй вариант создает всевозможные странные результаты.

Это то, с чем я экспериментирую прямо сейчас ...

echo '<option value="'.$row['course_id'] $row['course_name']'">'.$row['course_id'] $row['course_name'].'</option>';

Но есть Это куча проблем с кавычками и квадратными скобками, и я просто не знаю, как правильно отформатировать его для вывода.

Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2020

$ row содержит всю строку как ассоциативный массив, поэтому нет необходимости в 'foreach' l oop.

function select_course(){
        global $open;
        $select = "SELECT * FROM courses";
        $result = mysqli_query($open, $select);
        return $result;
    }
    <form action="insert.php" method="post">
    <dl>
        <dt>Select Course</dt>
        <dd><select name="course_id">
           <?php   // CREATE dropdown menu
                 $result = select_course();  
                    while ($row = mysqli_fetch_assoc($result)) {?>
                       <option value="<?php echo $row["course_id"]; ?>"><?php echo $row["course_name"]; ?></option>
                    <?php }
              ?>
        </select>
        </dd>
    </dl>
    </form>
0 голосов
/ 18 апреля 2020

Мне также удалось придумать другое решение:

Как только foreach l oop был удален, я попытался немного почистить код ... Я не уверен, что это необычно или «плохой» стиль, но он работает.

  $result = select_course();  
                    while ($row = mysqli_fetch_assoc($result)) {
                       $course_id     = $row['course_id'];
                       $course_name   = $row['course_name'];
                       echo  "<option value=\"$course_id\">$course_id $course_name</option>";

Результат: LO-COMP-8001 Intro до HTML в качестве единой опции, плюс все мои другие курсы в база данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...