mysql数据库使用已在html / php中输入的数据制作下拉菜单

时间:2011-09-15 12:08:22

标签: php mysql html database

我创建了一个数据库,其中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 
} 
?> 

4 个答案:

答案 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)