我创建了一个数据库,其中3个表是spusername,splocation,sprecord。 spusername具有id,splocation_id,lastname,firstname。我希望能够有一个下拉菜单,它从数据库中提取了id,lastname,firstname,并且在下拉菜单中,它只显示了所有名称的列表,即姓氏,名字。然后,一旦我选择一个人,我有另一个下拉,其中有类型的培训。然后,当我点击提交时,它将在另一个表中生成一个带有人员ID和培训记录的记录。因此,当我进行搜索时,它会提取用户和该人的培训记录....我已经在.php中创建了一个提交页面,为新用户发送lastname,firstname,splocation_id,我想我可以创建一个搜索,它做我想要的,但我从来没有进行数据输入做一个下拉,其中包含从数据库生成的值。
编辑代码:在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
}
?>
答案 0 :(得分:0)
使用数据库中的数据在循环中构建一个select。
使用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>";
编辑:(回复你的编辑)
在您的代码中,您使用$row2
代替$row
答案 1 :(得分:0)
<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”作为对用户的引用并尝试使用post而不是get发送请求(保持用户浏览器中的URL清洁)。
答案 2 :(得分:0)
这样的东西?
<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>
这将产生两个下拉菜单,其中第一个下拉列表将用户姓氏和名字用逗号+空格分隔,第二个下拉列表将列出不同类型的培训。 ID字段仅通过变量发送,但不会显示给用户。
从pulldown1中的变量中提取值时,只需使用explode:
$userdetails = $_POST['pulldown1'];
$values = explode(" " $userdetails);
$ID = $values[0];
$lastname = $values[1];
$firstname = $values[2];
没有测试代码,因此可能需要调整,当然你需要更改与你的实际db rownames相对应的变量名。
编辑:在你的代码中,你必须使用$ row而不是$ row2。
其次,而不是:
<option value='{$id}'>{$lastname},{$firstname}</option>
使用它:
<option value="' . $row['id'] . '">' . $row['lastname'] . ', ' . $row['firstname'] . '</option>
答案 3 :(得分:0)
只是Vegard解决方案的附录:
单引号对于姓氏来说可能有点棘手。这实际上取决于您如何将数据存储在数据库中。
如果您有姓O'Leary或O'Reilly,您可能会在名称上构建选择循环时截断结果。试一试。
您可以使用
解决此问题 选择循环中 htmlentities($row['lastname'], ENT_QUOTES)