PHP:从数据库中提取表并根据下拉列表从该表中提取列

时间:2018-07-08 06:27:42

标签: php mysql

我正在使用PHP设计一个交互式网站。 首先,我设计了三个下拉列表。

假设用户为每个列表选择 a,b,c 。然后,我需要从名为 S 的数据库中提取数据。

我希望它首先从数据库 S 中绘制*表a **,然后从该表中绘制 b c 列一个

我将q1,q2和q3设置为用户在下拉列表中选择的值,但是不知道如何在下一步中使用它们。 感谢您的提前帮助!

下面是我的代码。我想打开年龄表中的月份列(q)。

$q = 'Month';
$sql = 'SELECT "$q" FROM Age';
$query = mysqli_query($conn, $sql);
if (!$query) {
    die ('SQL Error: ' . mysqli_error($conn));
    }
echo '<table><thead><tr><th>".$q."</th></tr></thead><tbody>';
while ($row = mysqli_fetch_array($query)){
    echo '<tr> <td>'.$row["$q"].'</td> </tr>';
    }
 echo '</tbody> </table>';

2 个答案:

答案 0 :(得分:0)

我从您的问题中得到的是,您希望您的下拉列表相互依赖,例如,如果用户选择servicesPipeTimeout,则a的结果来自b,并且a中的c。 如果是,那么此链接将为您提供帮助。 the link

或者您可以通过提供更多信息来更具体地解决您的问题。关于您的需求和数据库等。

答案 1 :(得分:0)

首先为您的下拉列表提供有意义的名称,例如tablecolumn1column2

您可以将实际的表名和列名分配为下拉列表的值。但是使用数字可能会更安全一些,因为那样没人会看到表名。像这样:

<select name="table">
   <option value="1">Age</option>
   <option value="2">Gender</option>
 </select>
<select name="column1">
   <option value="1">Week</option>
   <option value="2">Month</option>
   <option value="3">Year</option>
 </select> 

将其放入表格中,然后发布到PHP。现在,您可以轻松地创建查询。

<?php 
//some sanitation: test if the POST-value has anything else then numbers in it.
if( $_POST['table'] != preg_replace('/[^0-9]/', '', $_POST['table']) die;
if( $_POST['column1'] != preg_replace('/[^0-9]/', '', $_POST['column1']) die;
if( $_POST['column2'] != preg_replace('/[^0-9]/', '', $_POST['column2']) die;

//create an array with the tablesnames
$my_tables=array(
    1=>'table_age',
    2=>'table_gender'
    );
//create an array with the column names that can be selected
$columns_per_table=array(
    //table_age
    1=>array(
      1=>'column_week',
      2=>'column_month',
      3=>'column_year'
      ),
    //table_gender
    2=>array(
      1=>'column_male',
      2=>'column_female',
      3=>'column_other'
      )
  );

//create a query with the POST values    
$table = $my_tables[ $_POST['table'] ];
$column1 = $columns_per_table[ $_POST['table'] ][ $_POST['column1'] ];
$column2 = $columns_per_table[ $_POST['table'] ][ $_POST['column2'] ];

$q='SELECT '.$column1.','.$column2.' FROM '.$table;
// example: $q='SELECT column_month,column_year FROM table_age'