Заполнить раскрывающийся список выбора из таблицы базы данных

У меня есть таблица («места проведения»), в которой хранятся все возможные места, где может работать волонтер, каждому волонтеру назначается работа по одному месту.

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

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

<form action = "upd.php?id=7">
<select name = "venue_id">
<?php //some sort of loop goes here
print '<option value = "'.$row['venue_id'].'">'.$row['venue_name'].'</option>';
//end loop here ?>
</select>
<input type = "submit" value = "submit" name = "submit">
</form>

Например, волонтеру с идентификатором 7 присваивается значение location_id 4.

<form action = "upd.php?id=7">
<select name = "venue_id">
    <option value = "1">Bagpipe Competition</option>
    <option value = "2">Band Assistance</option>
    <option value = "3">Beer/Wine Pouring</option>
    <option value = "4" selected>Brochure Distribution</option>
    <option value = "5">Childrens Area</option>
    <option value = "6">Cleanup</option>
    <option value = "7">Cultural Center Display</option>
    <option value = "8">Festival Merch</option>
</select>
<input type = "submit" value = "submit" name = "submit">
</form>

Brochure Distribution option will already be selected when it displays the drop down list, because in the volunteers_2009 table, column venue_id is 4.

Я знаю, что для извлечения списка мест из таблицы мест потребуется цикл for или while.

Мой запрос:

$query = "SELECT volunteers_2009.id, volunteers_2009.comments, volunteers_2009.choice1, volunteers_2009.choice2, volunteers_2009.choice3, volunteers_2009.lname, volunteers_2009.fname, volunteers_2009.venue_id, venues.venue_name FROM volunteers_2009 AS volunteers_2009 LEFT OUTER JOIN venues ON (volunteers_2009.venue_id = venues.id) ORDER by $order $sort";

Как мне заполнить раскрывающийся список выбора местами (volunteers_2009.venue_id, Venues.id) из таблицы мест и предварительно выбрать место в списке?

Стоит ли изучать 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 и хотите разрабатывать...
5
0
68 059
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

$query = "SELECT volunteers_2009.id, volunteers_2009.comments, volunteers_2009.choice1, volunteers_2009.choice2, volunteers_2009.choice3, volunteers_2009.lname, volunteers_2009.fname, volunteers_2009.venue_id, venues.venue_name FROM volunteers_2009 AS volunteers_2009 LEFT OUTER JOIN venues ON (volunteers_2009.venue_id = venues.id) ORDER by $order $sort";

$res = mysql_query($query);
echo "<select name = 'venue'>";
while (($row = mysql_fetch_row($res)) != null)
{
    echo "<option value = '{$row['venue_id']}'";
    if ($selected_venue_id == $row['venue_id'])
        echo "selected = 'selected'";
    echo ">{$row['venue_name']}</option>";
}
echo "</select>";

предполагая, что у вас есть множество мест ... лично мне не нравится смешивать sql с другим волшебством.

function displayDropDown($items, $name, $label, $default='') {
  if (count($items)) {
    echo '<select name = "' . $name . '">';
    echo '<option value = "">' . $label . '</option>';
    echo '<option value = "">----------</option>';
    foreach($items as $item) {
      $selected = ($item['id'] == $default) ? ' selected = "selected" : '';
      echo <option value = "' . $item['id'] . '"' . $selected . '>' . $item['name'] . '</option>';
    }
    echo '</select>';
  } else {
    echo 'There are no venues';
  }
}

У меня есть таблица (места проведения), в которой хранятся все места проведения (идентификатор, имя_базы). Идентификатор venues.id хранится в таблице добровольцев 2009 (volunteers 2009.venue id)

Brad 14.10.2008 06:02

        <?php 
        $query = "SELECT * from blogcategory";
        //$res = mysql_query($query);
        $rows = $db->query($query);
        echo "<select name = 'venue'>";
        // while (($row = mysql_fetch_row($res)) != null)
        while ($record = $db->fetch_array($rows)) 
        {
            echo "<option value = '{$record['CategoryId']}'";
            if ($CategoryId == $record['CategoryId'])
                echo "selected = 'selected'";
            echo ">{$record['CategoryName']}</option>";
        }
        echo "</select>";
        ?>

<!DOCTYPE html>
<html>
<head>
    <title>table binding</title>
    <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

</head>
<body>
    <div id = "mydiv" style = "width:100px;height:100px;background-color:yellow">

        <select id = "myselect"></select>
    </div>

</body>
</html>


<?php
include('dbconnection.php');

$sql = "SHOW TABLES FROM $dbname";
$result = mysqli_query($conn,$sql);

if (!$result) {
    echo "DB Error, could not list tables\n";
    echo 'MySQL Error: ' . mysqli_error();
    exit;
}

while ($row = mysqli_fetch_row($result)) {
    echo "<script>
    var z = document.createElement('option');
    z.setAttribute('value', '".$row[0]."');
    var t = document.createTextNode('".$row[0]."');
    z.appendChild(t);
    document.getElementById('myselect').appendChild(z);</script>";

}



?>

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