如何使用PHP和MySQL在HTML中自动填充select元素的选项?

如何使用PHP和MySQL在HTML中自动填充select元素的选项?,php,mysql,forms,Php,Mysql,Forms,首先,也是最重要的第一次发布问题请对我简单: 我正在尝试使用PHP/MySQL生成一个`表单DropDownList Select/options'。我需要使用数据库中仅包含.com的表名自动填充选项 这是我当前的代码: <?php $con = mysql_connect("localhost","username","password"); $db = mysql_select_db("dbname",$con); $result = mysql_query("SHOW TABLES

首先,也是最重要的第一次发布问题请对我简单:

我正在尝试使用PHP/MySQL生成一个`表单DropDownList Select/options'。我需要使用数据库中仅包含.com的表名自动填充选项

这是我当前的代码:

<?php
$con = mysql_connect("localhost","username","password");
$db = mysql_select_db("dbname",$con);
$result = mysql_query("SHOW TABLES LIKE '%.com%'",$con) or die('cannot show tables');
while($tableName = mysql_fetch_row($result)) {
$table = $tableName[0];
}
;
$option .= '<option value = "website-manager.php?table='.$table.'">'.$table.'</option>';
?>
<form name="form" id="form">
  <select name="jumpMenu" id="jumpMenu">
    <option value="#">Select Website</option>
    <?php echo $option ; ?>
  </select>
  <input type="button" name="go_button" id= "go_button" value="Go" onclick="MM_jumpMenuGo('jumpMenu','parent',0)" />
</form>
使用此代码时,只填充一个表名,而不是数据库中当前的15个表名


如何更正上面的代码以填充所有的表名?

问题是,在DB结果集的每次迭代中,您都会覆盖$table

您需要将数据放入如下数组:

$tables = array();
while ($tableName...) {
    $tables[] = $tableName[0];
}
<option value="#">Select Website</option>
<?php
foreach($tables as $table) {
    echo '<option value="website-manager.php?table=' . urlencode($table) .'">' . $table . </option>';
}
?>
然后在如下循环中输出选项:

$tables = array();
while ($tableName...) {
    $tables[] = $tableName[0];
}
<option value="#">Select Website</option>
<?php
foreach($tables as $table) {
    echo '<option value="website-manager.php?table=' . urlencode($table) .'">' . $table . </option>';
}
?>
如建议的移动}在下面结束时-尝试用以下内容替换零件:

<?php
$filter = '%wp_%';
$con = mysql_connect("localhost","root","pwd");
$db = mysql_select_db("enterDbName",$con);
$result = mysql_query("SHOW TABLES LIKE '".$filter."'",$con) or die('cannot show tables');
$option = '';
while($tableName = mysql_fetch_row($result)) {
    $table = $tableName[0];
    $option .= '<option value = "website-manager.php?table='.$table.'">'.$table.'</option>';
}
?><form name="form" id="form">
    <select name="jumpMenu" id="jumpMenu">
        <option value="#">Select Website</option>
        <?php echo $option ; ?>
    </select>
    <input type="button" name="go_button" id= "go_button" value="Go" onclick="MM_jumpMenuGo('jumpMenu','parent',0)" />
</form>

警告:从PHP5.5.0开始,此扩展mysql已被弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展名。

您的表名是否实际包含点?我认为这是一个保留字符,不能用于表/列名。你能举一些你有的表名的例子吗?嘿,哈弗,是的,我的表名是自动生成的。我正在建立一个多站点CMS和网站建设者功能,让我决定网站名称和网址。URL实际上变成了DB表名。它允许我使它更独特,并防止建立多个相同url的网站。嗯,老实说,这不是我推荐的方法。有一个查找表,可以将URL转换为包含安全字符的表名,或者更好地将所有内容放在一个表中。因此,我按照您的建议进行了更新,但结果是选项dropdownlist仅显示1个网站选项,尽管数据库中有15个表包含我正在查找的筛选器。在选项dropdownlist中获取多个表名时,似乎缺少了一些东西。不过,各位,我想我已经找到了我的过滤器不工作的原因。我一直在寻找.com的过滤搜索。只需简单地移除。从过滤器中填充所有我的网站表名!非常感谢你们!