У меня есть база данных mysql с двумя таблицами:
table1 (id, name, emailid)
table2 (id, email)
emailid
- это отношение к table2.id
Я пытаюсь создатьHTML-форма, которая перечисляет содержимое таблицы 1 с раскрывающимся списком для пользователя, чтобы выбрать поле электронной почты.Поле электронной почты заполнено <options>
из table2
.
Мой вопрос: как мне проверить, какое значение уже выбрано для emailid
и сделать это уже выбранным элементом в раскрывающемся списке, когда формазагружается с selected="selected"
?
У меня уже есть одно решение, но я не думаю, что это правильный способ сделать это, и искал метод наилучшей практики.
То, как я сейчас это делаю, будет работать только с одним предметом, извлеченным из table1
, но не если их больше 1.
Вот мой код:
Здесь яполучить данные для создания формы:
<?php
$sql = "SELECT table1.id as table1id, table1.name, table2.id as table2id
FROM table1
INNER JOIN table2 ON table1.emailid = table2.id
WHERE table1.id = {$id}";
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_array($result);
$items1 = array('table1id' => $row['table1id']
'name' => $row['table1.name']
'table2id' => $row['table2id']);
$sql = "SELECT id, email FROM table2";
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_array($result);
while ($row = mysqli_fetch_array($result)) {
$items2[] = array('id' => $row['id'],
'email' => $row['email'],
'selected' => ($row['id'] == $items1['table2id']) ? ' selected="selected" ' : '');
}
?>
Это мой HTML:
<tr>
<td><?php echo $items1['name']; ?></td>
<td><input type="hidden" name="table1id" value="<?php echo $items1['table1id']; ?>" />
<?php echo $items1['table1id']; ?></td>
<td>
<select name="email">
<?php foreach ($items2 as $item2): ?>
<option value="<?php echo $item2['id']; ?>"<?php echo $item2['selected']; ?>>
<?php echo $item2['email']; ?></option>
<?php endforeach; ?>
</select>
</td>
</tr>
Вот как обновляется форма:
<?php
$id = mysql_real_escape_string($_POST['table1id']);
$email = mysql_real_escape_string($_POST['email']);
$sql = "UPDATE table1 SET emailid = {$email} WHERE id = {$id}";
?>