列出来自MySQL DB的表和显示表名作为下拉列表中的选项

时间:2014-01-15 19:58:31

标签: php mysql

我正在尝试编写一个包含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>

创建表单:

<form action='getlist.php' method='post'>
 <div align="center">
   <p>
     <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'"); //I have specified schema's in my DB for the different months 

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

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

在以下查询中用于生成数组:

<?php
$cxn=mysqli_connect("localhost",$userid,$password,$db)
or die ("Could not connect to Database");

$result=mysqli_query($cxn,"SELECT column1, column2, column3 //just listing examples here for my columns there is about 45 columns for this selection
FROM january.'$date' 
WHERE Value='$name'");

while($row = mysqli_fetch_array($result))
{
        $stats = $row;
}

?>

1 个答案:

答案 0 :(得分:0)

...好的

为了解决您的实际问题,我认为问题是您在mysqli_fetch_assoc输出中引用的索引。通常,“SHOW”查询的表名称的键控方式类似于“Tables_in_databasename”,或者类似的东西。您可以print_r $row变量来查看您应该引用的索引。

现在,与您的问题无关,我必须坚持要您重新考虑如何存储数据。在数据库和表的名称中包含有意义的数据是非常糟糕的过程。这不仅仅是数据库的使用方式,这不可避免地会给你带来麻烦,也会给你带来不必要的困难。

我不确定您要存储的是哪种统计信息,但我们可以说它类似于网站每天的点击次数。这些数据可以非常容易地存储在一个数据库和一个表中。例如:

数据库:统计

表:daily_statistics

列:id,stat_date,value

现在,您可以轻松地将每日点击次数存储在一个表格中。

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个数据库甚至更多表的问题,以及任何跟在你身后的开发人员都不必为解决这种棘手的情况而努力工作。