【问题标题】:I want to select a table from a database and show in a drop down list我想从数据库中选择一个表并显示在下拉列表中
【发布时间】:2014-10-09 03:56:17
【问题描述】:

我想从特定数据库中选择一个表,然后表列表将出现在 select 标签下的选项标签中。

非常感谢。

当前代码:

<?php

include 'database/connectdatabase.php';

if(isset($_POST['select_db']))
{
    $select_db = $_POST['select_db'];
    $selectdb_query = 'SHOW TABLES FROM $select_db';
    $query_select = mysql_query($selectdb_query,$connectDatabase);  

if(!$query_select)
{
    echo 'NO table selected!';
}

?>

<form method="POST" action="selecttable.php" autocomplete="off">
  <select name="select_db">
    <option  selected="selected">Select Database</option>
    <option>section_masterfile</option>
  </select>
</form>

<form method="POST" action="#" autocomplete="off">
  <?php while ($row = mysql_fetch_row($query_select)) {
    $num_row = mysql_num_rows($row);?>
    <select name="select_table">
        <option  selected="selected">Select Table</option>
            <?php for($i=0;$i>=$num_row;i++){?>
                <option><?php echo $row[0];?></option>
            <?php}?>
    </select>
  <?php}?>
</form>

【问题讨论】:

  • 如果有错误?检查他们?另外,你应该把它们隔开一点&lt;?php}?&gt; - &lt;?php } ?&gt;

标签: php html mysql


【解决方案1】:

问题是您已经在获取行但您甚至还没有提交表单。

我建议这样重构你的逻辑:

$con = new mysqli('localhost', 'username', 'password', 'database');
$tables = array();
if(isset($_POST['select_db'])) { // if its submitted
    $select_db = $con->real_escape_string($_POST['select_db']); // escape the string
    $query = $con->query("SHOW TABLES FROM $select_db");
    while($row = $query->fetch_assoc()) {
        $tables[] = $row['Tables_in_' . $select_db]; // use associative instead
    }
}


?>

<form method="POST" autocomplete="off">
    <select name="select_db" onchange="this.form.submit();">
        <option disabled selected>Select Database</option>
        <option>test</option>
    </select>
    <br/><br/>

    <select name="select_table">
        <?php foreach($tables as $table): ?>
            <option value="<?php echo $table; ?>"><?php echo $table; ?></option>
        <?php endforeach; ?>
    </select>
</form>

旁注:如果您打开了错误报告,这应该会为您做错了什么提供一些红灯。请打开它。

error_reporting(E_ALL);
ini_set('display_errors', '1');

【讨论】:

  • +1 最好的答案。也是最新的。
  • @Darren 是的,用较新的 api 编写答案似乎是合乎逻辑的,因为它无论如何都是一个短代码
  • @Ghost 谢谢你救了我半条命(同性恋模式。)
  • 嗨@Ghost 也许你也可以帮我解决这个问题:) stackoverflow.com/q/26272517/4078247
  • 你好@Jeff 看看这个问题的第一个答案,我想这也是我的答案
【解决方案2】:
<select name="select_table">
  <option  selected="selected">Select Table</option>
  <?php while ($row = mysql_fetch_row($query_select)) { ?>
      <option value = "<?php echo $row[0]; ?>"><?php echo $row[0]; ?></option>
  <?php } ?>
</select>

【讨论】:

    【解决方案3】:

    试试这个

    <form method="POST" action="#" autocomplete="off">
    
        <select name="select_table">
            <option  selected="selected">Select Table</option>
                <?php 
                    while ($row = mysql_fetch_row($query_select)) 
                    {
                ?>
                    <option value="<?php echo $row[0];?>"><?php echo $row[0];?></option>
                <?php 
                    } 
                ?>
        </select>
    
    </form>
    

    【讨论】:

      【解决方案4】:

      考虑这段代码:

       <form method="POST" action="#" autocomplete="off">
      
          <select name="select_table">
              <option  selected="selected">Select Table</option>
          <?php 
            while ($row = mysql_fetch_row($query_select)) {
          ?>
      
              <option><?php echo $row[0];?></option>
      
          <?php
          }
          ?>
        </select>
      </form>
      

      【讨论】:

        猜你喜欢
        • 2014-02-26
        • 1970-01-01
        • 2012-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-24
        • 2013-11-12
        相关资源
        最近更新 更多