PHP/SQL - Использование элемента Select для отображения / ссылки на строки в базе данных

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

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

Текущая задача: я хочу создать элемент "Выбрать" в моей форме, в котором перечислены все введенные идентификационные номера. Затем я могу просто выбрать один из проектов из выпадающего списка и автоматически применить транзакцию. Как я могу это сделать?

Заранее спасибо за вашу помощь!

2 ответа

Решение

Во-первых, вам нужно будет выполнить запрос (используя PHP), чтобы получить список всех записей проекта в таблице проекта из этой базы данных. Когда вы сделаете запрос для этого, у вас будет набор результатов в виде массива каждого проекта в таблице проектов, который вы можете перебирать, используя цикл для заполнения раскрывающегося списка.

Сначала получите проекты (при условии, что имя столбца id что вы используете для выпадающего списка):

<php $projects = mysqli_query($db, "SELECT id FROM PROJECTS_TABLE"); ?>

Затем для отображения выпадающего списка выбора:

<form name="formWhatever">
...
<select name="project_id">
<?php foreach ($projects as $project) { 
      $result = mysqli_fetch_array($projects, MYSQLI_ASSOC)?>
  <option value="<?php echo $result[id]; ?>">Project #<?php echo $result[id]; ?></option>
<?php } ?>
</select>
...
</form

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

Ну, все, что вам нужно сделать, это то, что вы описали, так что я не уверен, правильно ли я понял ваш вопрос. Создайте меню выбора в форме и заполните его всеми проектами. Сначала необходимо получить все идентификаторы проектов и их имена из базы данных и сгенерировать параметры HTML для каждого идентификатора проекта.

 <select name="project_id">
   <option value="1">Project 1</option>
   <option value="2">Project 2</option>
   <option value="3">Project 3</option>
   <option value="4">Project 4</option>
   ...
   <option value="n">Project n</option>
 </select>

в PHP у вас будет что-то подобное для каждого проекта

echo "<option value='{$project['project_id']}'>{$project['name']}</option>";

а затем использовать $_POST['project_id'] чтобы получить project_id проекта, к которому вы хотите добавить транзакцию хранения.


Подсказки: почему вы предварительно назначаете идентификаторы проекта? Как вы гарантируете, что не выпускаете один и тот же предварительно назначенный ключ дважды? Вы можете настроить автоматическое увеличение столбца базы данных при каждой вставке. Также я думаю, что лучше сначала отобразить список всех проектов, например страницу индекса, а затем, когда пользователь нажимает на нужный проект, вы предоставляете ему возможность добавить информацию о хранилище (или что-то еще, что вы запланировали). Имея общую форму и затем выбирая проект внутри, это будет работать, но может усложниться, если есть много проектов, и я действительно не вижу преимущества такого подхода.

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