Php 列出MySQL数据库中的表,并在下拉列表中将表名显示为选项

Php 列出MySQL数据库中的表,并在下拉列表中将表名显示为选项,php,mysql,Php,Mysql,我试图写一个有2个下拉列表的页面。第一种方法是从mysql db填充一个表列表,允许用户选择有问题的日期,第二种方法允许用户从该表中的列中选择名称。目前,我编写的表单如下所示,用于从用户指定的特定表/行生成一个值数组,然后将其回送到html表单中的各个字段 我正在努力获取由表名填充的下拉列表。有人能帮忙吗?很抱歉发了这么长的帖子,这是我的第一次,我想成为图罗。当我在代码中指定要使用的表时,我知道与数据库的连接正在工作,第二个下拉列表正在工作 我需要第一个框列出表名,然后设置变量$date 这是日

我试图写一个有2个下拉列表的页面。第一种方法是从mysql db填充一个表列表,允许用户选择有问题的日期,第二种方法允许用户从该表中的列中选择名称。目前,我编写的表单如下所示,用于从用户指定的特定表/行生成一个值数组,然后将其回送到html表单中的各个字段

我正在努力获取由表名填充的下拉列表。有人能帮忙吗?很抱歉发了这么长的帖子,这是我的第一次,我想成为图罗。当我在代码中指定要使用的表时,我知道与数据库的连接正在工作,第二个下拉列表正在工作

我需要第一个框列出表名,然后设置变量$date

这是日期的下拉列表:

<select name='Date'>
<?php
    $date = $_POST['date'];
$cxn=mysqli_connect("localhost",$userid,$password,$db)
or die ("Could not connect to Database");

$result=mysqli_query($cxn,"Show tables from january");

while($row = mysqli_fetch_array($result, MYSQL_ASSOC)) 
{
echo "<option value='".$row['Value']."'>".$row['Value']."</option>"; 
}

?>
</select>

这是上面所选表中名称的下拉列表

<select name='agentname'>
<?php
    $name = $_POST['agentname'];
$cxn=mysqli_connect("localhost",$userid,$password,$db)
or die ("Could not connect to Database");

$sql=mysqli_query($cxn,"SELECT Value FROM january.'$date'");

while($row = mysqli_fetch_assoc($sql)) 
{      
echo $value ="<option value='".$row['Value']."'>".$row['Value']."</option>"; 
}

?>
    </select>
     <input type='submit' value='Get Dashboard' />
</form>

好吧

为了解决您的实际问题,我认为问题在于您在
mysqli\u fetch\u assoc
的输出中引用的索引。通常,“SHOW”查询的表名键入为“Tables\u in\u databasename”或类似的内容。您可以
print\r
您的
$row
变量来查看应该引用什么索引

现在,与您的问题无关,我必须坚持让您重新思考如何存储数据。在数据库和表的名称中表示有意义的数据是非常糟糕的过程。这不仅不是数据库的使用方式,这将不可避免地给您带来问题,您还使事情变得不必要的困难

我不确定你存储的是什么样的统计数据,但假设是网站每天的点击量。这些数据可以很容易地存储在一个数据库和一个表中。例如:

数据库:统计

表:每日统计数字

列:id、统计日期、值

现在,您可以轻松地将每天的点击存储在一个表中

id, stat_date, value
1, 2014-01-01, 300
2, 2014-01-02, 400
etc...
假设每天有多个值。没问题

id, stat_date, value
1, 2014-01-01, 300
2, 2014-01-02, 400
3, 2014-01-02, 250
etc...
// The unique ID, alows multiple records per day.
// If you need them categorized in a different way,
// add another column.
这一结构将在今后的岁月中发挥作用

id, stat_date, value
1, 2014-01-01, 300
2, 2014-01-02, 400
3, 2014-01-02, 250
4, 2015-01-01, 250
5, 2016-01-01, 250
etc...

现在您可以访问mysql聚合功能,您可以更轻松地导入和导出数据,而不必随着时间的推移处理100多个数据库和更多的表,任何在你之后的开发人员都不必为了解决这个棘手的问题而大惊小怪。

你每个月都要创建一个数据库,每天都要创建一个表?有一个示例数据库模式会很有帮助,因为你的结构似乎有些奇怪。@digitalChris,是的,我有一个月的模式和一个每天的表格。@ethan,我以前没有这样做过,你想怎么看?我基本上有一个月的模式,模式中每个月的每一天都有表,其中有行和列中人员列表的数据,指定数据是什么。所以你每个月创建一个数据库,每天创建一个表?…为什么???谢谢Ethan!因此,您的建议是,在1db的1个表中,将数据存储为日期,然后用当天的统计数据命名。然后我可以在数据库上运行查询,让用户输入日期,选择名称,然后使用这两个值来标识表中的正确行?因此,我可以使用此结构说,我希望查看日期范围的平均值使用具有多个日期的同一查询,并使用一些函数来平均值并在数组中显示,是吗?
id, stat_date, value
1, 2014-01-01, 300
2, 2014-01-02, 400
3, 2014-01-02, 250
etc...
// The unique ID, alows multiple records per day.
// If you need them categorized in a different way,
// add another column.
id, stat_date, value
1, 2014-01-01, 300
2, 2014-01-02, 400
3, 2014-01-02, 250
4, 2015-01-01, 250
5, 2016-01-01, 250
etc...