【问题标题】:Populate select drop down from a database table从数据库表中填充选择下拉列表
【发布时间】:2010-09-17 00:12:33
【问题描述】:

我有一张表(“场所”),其中存储了志愿者可以工作的所有可能场所,每个志愿者被分配到每个场所工作。

我想从场地表中创建一个选择下拉列表。

现在我可以显示每个志愿者分配的地点,但我希望它显示下拉框,并且地点已经在列表中选择。

<form action="upd.php?id=7">
<select name="venue_id">
<?php //some sort of loop goes here
print '<option value="'.$row['venue_id'].'">'.$row['venue_name'].'</option>';
//end loop here ?>
</select>
<input type="submit" value="submit" name="submit">
</form>

例如id为7的志愿者,分配给venue_id 4

<form action="upd.php?id=7">
<select name="venue_id">
    <option value="1">Bagpipe Competition</option>
    <option value="2">Band Assistance</option>
    <option value="3">Beer/Wine Pouring</option>
    <option value="4" selected>Brochure Distribution</option>
    <option value="5">Childrens Area</option>
    <option value="6">Cleanup</option>
    <option value="7">Cultural Center Display</option>
    <option value="8">Festival Merch</option>
</select>
<input type="submit" value="submit" name="submit">
</form>

Brochure Distribution option will already be selected when it displays the drop down list, because in the volunteers_2009 table, column venue_id is 4.

我知道它将采用 for 或 while 循环的形式从场所表中提取场所列表

我的查询是:

$query = "SELECT volunteers_2009.id, volunteers_2009.comments, volunteers_2009.choice1, volunteers_2009.choice2, volunteers_2009.choice3, volunteers_2009.lname, volunteers_2009.fname, volunteers_2009.venue_id, venues.venue_name FROM volunteers_2009 AS volunteers_2009 LEFT OUTER JOIN venues ON (volunteers_2009.venue_id = venues.id) ORDER by $order $sort";

如何使用场地表中的场地(volunteers_2009.venue_idvenues.id)填充选择下拉框并让它预先选择场地在列表中?

【问题讨论】:

    标签: php mysql


    【解决方案1】:
    $query = "SELECT volunteers_2009.id, volunteers_2009.comments, volunteers_2009.choice1, volunteers_2009.choice2, volunteers_2009.choice3, volunteers_2009.lname, volunteers_2009.fname, volunteers_2009.venue_id, venues.venue_name FROM volunteers_2009 AS volunteers_2009 LEFT OUTER JOIN venues ON (volunteers_2009.venue_id = venues.id) ORDER by $order $sort";
    
    $res = mysql_query($query);
    echo "<select name = 'venue'>";
    while (($row = mysql_fetch_row($res)) != null)
    {
        echo "<option value = '{$row['venue_id']}'";
        if ($selected_venue_id == $row['venue_id'])
            echo "selected = 'selected'";
        echo ">{$row['venue_name']}</option>";
    }
    echo "</select>";
    

    【讨论】:

      【解决方案2】:
      <!DOCTYPE html>
      <html>
      <head>
          <title>table binding</title>
          <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
      
      </head>
      <body>
          <div id="mydiv" style="width:100px;height:100px;background-color:yellow">
      
              <select id="myselect"></select>
          </div>
      
      </body>
      </html>
      
      
      <?php
      include('dbconnection.php');
      
      $sql = "SHOW TABLES FROM $dbname";
      $result = mysqli_query($conn,$sql);
      
      if (!$result) {
          echo "DB Error, could not list tables\n";
          echo 'MySQL Error: ' . mysqli_error();
          exit;
      }
      
      while ($row = mysqli_fetch_row($result)) {
          echo "<script>
          var z = document.createElement('option');
          z.setAttribute('value', '".$row[0]."');
          var t = document.createTextNode('".$row[0]."');
          z.appendChild(t);
          document.getElementById('myselect').appendChild(z);</script>";
      
      }
      
      
      
      ?>
      

      【讨论】:

        【解决方案3】:
                <?php 
                $query = "SELECT * from blogcategory";
                //$res = mysql_query($query);
                $rows = $db->query($query);
                echo "<select name = 'venue'>";
                // while (($row = mysql_fetch_row($res)) != null)
                while ($record = $db->fetch_array($rows)) 
                {
                    echo "<option value = '{$record['CategoryId']}'";
                    if ($CategoryId == $record['CategoryId'])
                        echo "selected = 'selected'";
                    echo ">{$record['CategoryName']}</option>";
                }
                echo "</select>";
                ?>
        

        【讨论】:

          【解决方案4】:

          假设您有一系列场地...我个人不喜欢将 sql 与其他魔法混为一谈。

          function displayDropDown($items, $name, $label, $default='') {
            if (count($items)) {
              echo '<select name="' . $name . '">';
              echo '<option value="">' . $label . '</option>';
              echo '<option value="">----------</option>';
              foreach($items as $item) {
                $selected = ($item['id'] == $default) ? ' selected="selected" : '';
                echo <option value="' . $item['id'] . '"' . $selected . '>' . $item['name'] . '</option>';
              }
              echo '</select>';
            } else {
              echo 'There are no venues';
            }
          }
          

          【讨论】:

          • 我有一个表(venues),里面存储了所有的场地(id,venue_name),venues.id 存储在volunteers_2009表中(volunteers_2009.venue_id)
          猜你喜欢
          • 2012-07-23
          • 1970-01-01
          • 2014-12-25
          • 2011-11-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多