Вывод данных при выборе значения из выпадающего списка

202
23 августа 2018, 16:30

Есть выпадающий список находящийся в ячейке таблицы с ФИО сотрудников, как сделать чтобы в определенные ячейки вывелись все остальные поля соответствующего сотрудника из таблицы Сотрудников

<tr>  
<td>
<select name="employees">
<option value="" >Выберите сотрудника</option>
<?PHP         
$res = mysql_query('select id, имя, фамилия, отчество from `employees`');
while($row = mysql_fetch_assoc($res)){
?>
<option value="<?=$row['id']?>"><?=$row['имя'] ?>&nbsp<?=$row['фамилия']?>&nbsp<?=$row['отчество']?></option>
<?
}
?>
</td> 
</tr>
Answer 1

И так, поскольку Вы уточнили Ваше условие, постараюсь улучшить свой ответ. Вы уже привели в вопросе код, для заполнения select всеми ФИО сотрудников. Далее, если нужно обновить страницу, мы можем рассмотреть два варианта:

Первый вариант: Повесить событие onchange на изменение select. В этом событии, мы получаем value (Вы указали там id), и по этому id формируем AJAX запрос к какому-то php-скрипту, передав ему через GET или POST нужный id, который будет загружать остальные данные, и возвращать их, например, через разделитель. Получив данные, применяем split по символу-разделителю, и выводим полученные данные в соответствующее (оставшиеся) поля таблицы.

Плюс этого способа: динамичность - любое изменение сразу формирует обновление таблицы.

Минус: JS может быть отключен в настройках браузера.

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

Итак, есть select, у которого выбран какой-то пункт, добавив под ним кнопку submit, и разместив эти элементы внутри формы. Можно указать action формы эту же страницу, метод передачи, можно выбирать POST для скрытия данных от их отображения в адресе, или же наоборот, GET - то указывать их в адресе страницы, тогда зная id, можно будет сразу найти нужного сотрудника, не выбирая его в списке. Итак, внутри страницы, в зависимости от того, какой метод передачи был выбран, нужно проверить, заполнен ли массив (_POST или _GET), и если в нем есть данные, то в select указать запрашиваемый id, а так же сформировать по этому id второй запрос, для получения оставшихся данных, и вывести их, посредством php.

А какова полная структура данных таблицы Сотрудников?

По логике вопроса, нужно делать запрос:

SELECT * from `employees`

Вы получите ассоциативный массив, и в input первой ячейки выводите ФИО, как Вы указали, далее, если количество оставшихся полей известно, то просто выводите их, иначе, получаете количество полей из запроса, отнимаете 4 (учитывая, что Вам не нужно уже обрабатывать ФИО и id), и через цикл добавляете новые ячейки таблицы (например, через echo), а в них уже заполняете оставшиеся поля таблицы, полученные из запроса.

P. S. Это все, при условии, что я правильно понял объяснение Вашего вопроса.

READ ALSO
Laravel перенаправление на контроллер в посреднике

Laravel перенаправление на контроллер в посреднике

При попытке в посреднике проверить url и перенаправить пользователя на метод контроллера, Laravel пишет, что метод в контроллере не определен...

202
index of при переходе по домену сайта

index of при переходе по домену сайта

Привет все доброжелателям и не очень!

159
Кастомные роли Laravel

Кастомные роли Laravel

Всем приветЕсть приложение на Laravel, где есть 2 основные сущности: юзер и компания

174