【问题标题】:mysql database making drop down menu using data already entered in html/phpmysql 数据库使用已在 html/php 中输入的数据制作下拉菜单
【发布时间】:2023-03-26 12:06:01
【问题描述】:

我创建了一个数据库,其中包含 3 个表,分别是 spusername、splocation、sprecord。 spusername 有 id、splocation_id、lastname、firstname。我希望能够有一个下拉菜单,它从数据库中提取了 id、lastname、firstname,并且在下拉菜单中它只显示了一个包含 lastname、firstname 的所有名称的列表。然后,一旦我选择了一个人,我就会有另一个下拉菜单,其中包含培训类型。然后当我点击提交时,它将在另一个表中生成一条记录,其中包含人员 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 
} 
?> 

【问题讨论】:

  • 这里似乎是一个完整的任务。我们在这里为您提供帮助,如果您有任何问题,请粘贴您的代码??

标签: php mysql html database


【解决方案1】:

您使用数据库中的数据在循环中构建一个选择。

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

【讨论】:

    【解决方案2】:
    <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 干净)。

    【讨论】:

      【解决方案3】:

      这样的?

      <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];
      

      尚未测试代码,因此可能需要对其进行调整,当然您需要更改与实际数据库行名相对应的变量名。

      编辑:在您的代码中,您必须使用 $row 而不是 $row2。

      其次,不要这样:

      <option value='{$id}'>{$lastname},{$firstname}</option>
      

      使用这个:

      <option value="' . $row['id'] . '">' . $row['lastname'] . ', ' . $row['firstname'] . '</option>
      

      【讨论】:

        【解决方案4】:

        只是对 Vegard 解决方案的补充:

        单引号对于姓氏可能有点棘手。不过,这实际上取决于您在数据库中存储数据的方式。

        如果您的姓氏为 O'Leary 或 O'Reilly,则在根据姓名构建选择循环时,您可能会得到截断的结果。试试看吧。

        您可以使用

        解决此问题

        htmlentities($row['lastname'], ENT_QUOTES) 在您的选择循环中

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-27
          相关资源
          最近更新 更多