Я создал базу данных с тремя таблицами, которые являются spusername, splocation, sprecord. spusername имеет id, splocation_id, lastname, firstname. Я хочу иметь выпадающее меню, которое вытащило id, lastname, firstname из базы данных и в раскрывающемся списке отображает список всех имен, которые являются lastname, firstname. то, как только я выберу человека, у меня есть еще одно раскрытие, в котором есть типы обучения. то, когда я нахожусь в сообщении, он будет генерировать запись в другой таблице с идентификатором личности и учебной записью. поэтому, когда я делаю поиск, он подтягивает пользователя и записи обучения для этого человека …. Я уже создал страницу отправки в .php, которая отправляет последнее имя, имя, splocation_id для новых пользователей, и я думаю, что могу создать поиск, который делает то, что я хочу, но я никогда не делал запись данных, делающую раскрывающееся меню, которое имеет значения, созданные из базы данных.
Код EDIT: с помощью кодирования Vegard я получил это, и теперь он отлично работает после нескольких проб и ошибок. Спасибо!
Код:
<?php if (isset($_REQUEST['Submit'])) { $sql = "INSERT INTO $db_table(spusername_id,sptraining_id) values ('".mysql_real_escape_string(stripslashes($_REQUEST['spusername_id']))."','".mysql_real_escape_string(stripslashes($_REQUEST['sptraining_id']))."')"; if($result = mysql_query($sql ,$db)) { echo '<h1>Thank you</h1>Your information has been entered into the database<br><br>'; } else { echo "ERROR: ".mysql_error(); } } else { ?> <h1>Add Training Information To Database</h1><hr> <br><br> <form method="post" action=""> <select name="spusername_id"> <option value="default">Select Employee</option> <?php include("connectspusers.php"); /*file where you have stored your DB conn. settings*/ $result = mysql_query('SELECT id, lastname, firstname FROM spusername ORDER BY lastname ASC') or die (mysql_error()); while ($row = mysql_fetch_array($result)) { echo '<option value="' . $row['id'] . ' ' . $row['lastname'] . ' ' . $row['firstname'] . '">' . $row['lastname'] . ', ' . $row['firstname'] . '</option>'; } ?> </select> <select name="sptraining_id"> <option value="default">Select Training</option> <?php include("connectsptraining.php"); /*file where you have stored your DB conn. settings*/ $result = mysql_query('SELECT id, trainingtype, level FROM sptraining ORDER BY level ASC') or die (mysql_error()); while ($row = mysql_fetch_array($result)) { echo '<option value="' . $row['id'] . ' ' . $row['trainingtype'] . ' ' . $row['level'] . '">' . $row['trainingtype'] . ' - ' . $row['level'] . '</option>'; } ?> </select> <br><br> <input type="submit" name="Submit" value="Submit"> </form> <?php } ?>
Что-то вроде этого?
<select name="pulldown1"> <option value="default">Choose an option</option> <?php include("connect.php"); /*file where you have stored your DB conn. settings*/ $result = mysql_query('SELECT id, lastname, firstname FROM spusername ORDER BY firstname ASC') or die (mysql_error()); while ($row = mysql_fetch_array($result)) { echo '<option value="' . htmlentities($row['id'], ENT_QUOTES) . ' ' . htmlentities($row['lastname'], ENT_QUOTES) . ' ' . htmlentities($row['firstname'], ENT_QUOTES) . '">' . htmlentities($row['lastname'], ENT_QUOTES) . ', ' . htmlentities($row['firstname'], ENT_QUOTES) . '</option>'; } ?> </select> <select name="pulldown2"> <option value="default">Choose and option</option> <?php $result = mysql_query('SELECT traingtype FROM trainingtable ORDER BY trainingname ASC') or die (mysql_error()); while ($row = mysql_fetch_array($result)) { echo '<option value="' . $row['trainingtype'] . '">' . $row['trainingtype'] . '" "' . $row['lastname'] . '</option>'; } ?> </select>
в<select name="pulldown1"> <option value="default">Choose an option</option> <?php include("connect.php"); /*file where you have stored your DB conn. settings*/ $result = mysql_query('SELECT id, lastname, firstname FROM spusername ORDER BY firstname ASC') or die (mysql_error()); while ($row = mysql_fetch_array($result)) { echo '<option value="' . htmlentities($row['id'], ENT_QUOTES) . ' ' . htmlentities($row['lastname'], ENT_QUOTES) . ' ' . htmlentities($row['firstname'], ENT_QUOTES) . '">' . htmlentities($row['lastname'], ENT_QUOTES) . ', ' . htmlentities($row['firstname'], ENT_QUOTES) . '</option>'; } ?> </select> <select name="pulldown2"> <option value="default">Choose and option</option> <?php $result = mysql_query('SELECT traingtype FROM trainingtable ORDER BY trainingname ASC') or die (mysql_error()); while ($row = mysql_fetch_array($result)) { echo '<option value="' . $row['trainingtype'] . '">' . $row['trainingtype'] . '" "' . $row['lastname'] . '</option>'; } ?> </select>
Это приведет к появлению двух выпадающих меню, в которых в первом раскрывающемся списке перечислены пользователи последнего и первого имени, разделенные запятой +, а вторая будет отображать различные типы обучения. Идентификатор, зарегистрированный только, передается через переменную, но не отображается пользователю.
Когда вы вытаскиваете значения из переменной в раскрывающемся списке 1, просто используйте explode:
$userdetails = $_POST['pulldown1']; $values = explode(" " $userdetails); $ID = $values[0]; $lastname = $values[1]; $firstname = $values[2];
Не тестировали код, чтобы он мог нуждаться в настройке, и, конечно, вам нужно изменить имена переменных, соответствующие вашим фактическим именам.
Изменить: в вашем коде вам нужно использовать $ row, а не $ row2.
Во-вторых, вместо этого:
<option value='{$id}'>{$lastname},{$firstname}</option>
использовать это:
<option value="' . $row['id'] . '">' . $row['lastname'] . ', ' . $row['firstname'] . '</option>
<select name="id" size="1"> <?php $result=mysql_query("select * from spusername;"); while($user=mysql_fetch_array($result)) { echo "<option value=\"".$user['id']."\">".$user['lastname'].", ".$user['firstname']."</option>"; ?> </select>
Продолжайте с использованием «id» в качестве ссылки на пользователя и попробуйте использовать пост вместо того, чтобы отправлять запрос (сохраняет URL-адрес в браузере пользователя в чистоте).
Вы создаете выбор в цикле с данными из вашей базы данных.
пример с mysql (не тестировал):
$query = "select id, lastname, firstname from spusername"; $result = mysql_query($query); echo "<select>"; while($row = mysql_fetch_array($result)){ echo "<option value='".$row['id']."'>".$row['lastname']. " ". $row['firstname']."</option>"; } echo "</select>";
EDIT: (ответ на ваше редактирование)
В коде вы используете $row2
вместо $row
Просто добавление к решению Vegard:
Одиночные кавычки могут быть немного сложными с фамилиями. Это действительно зависит от того, как вы храните данные в своей базе данных.
Если у вас есть фамилия O'Leary или O'Reilly, вы можете получить усеченные результаты по мере того, как вы создаете цикл выбора по именам. Попробуйте.
Вы можете исправить эту проблему, используя
htmlentities($row['lastname'], ENT_QUOTES)
в вашем цикле выбора