我正在使用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>';
答案 0 :(得分:0)
我从您的问题中得到的是,您希望您的下拉列表相互依赖,例如,如果用户选择servicesPipeTimeout
,则a
的结果来自b
,并且a
中的c
。
如果是,那么此链接将为您提供帮助。
the link
或者您可以通过提供更多信息来更具体地解决您的问题。关于您的需求和数据库等。
答案 1 :(得分:0)
首先为您的下拉列表提供有意义的名称,例如table
,column1
和column2
。
您可以将实际的表名和列名分配为下拉列表的值。但是使用数字可能会更安全一些,因为那样没人会看到表名。像这样:
<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'