使用简单的PHP表单我试图生成一个报表,仅显示在动态填充的选择框中选择的值。
<div id="container">
<div>
<form action="report.php" method="post">
<label>Select Devices: </label>
<select name="devices[]" multiple>
<?php
require 'config/db.php';
$pdo = Database::connect();
$sql = 'SELECT alarm_device_description FROM alarm_device';
foreach($pdo->query($sql) as $row) {
echo '<option>'. $row['alarm_device_description'] . '</option>';
}
Database::disconnect();
?>
</select>
<button type="submit">Get Report</button>
</form>
</div>
</div>
然后我有一个php文件:
<div id="container">
<div>
<table>
<thead>
<tr>
<th>Date</th>
<th>Alarm Device Description</th>
</tr>
</thead>
<tbody>
<?php
require 'config/db.php';
$pdo = Database::connect();
var_dump($_POST);
echo '<hr />';
$devices = $_POST['devices'];
echo $devices . '<hr />';
$sql = 'SELECT date, alarm_device_description
FROM alarm_log
NATURAL JOIN alarm_device
ORDER BY date ASC';
print_r($_POST['devices']);
echo '<hr />';
foreach ($pdo->query($sql) as $row) {
echo '<tr>';
echo '<td>'. $row['date'] . '</td>';
echo '<td>'. $row['alarm_device_description'] . '</td>';
echo '</tr>';
}
Database::disconnect();
?>
</tbody>
</table>
</div>
</div>
默认情况下,报告应生成所有alarm_devices,并且工作正常。但是,我需要能够选择例如:iPhone 5和Nexus,并且只显示这些结果。
我试图将值作为一个数组引入,在我的reports.php页面显示的POST测试中 - 它似乎抓住了所选的值。
$ devices = $ _POST [&#39; devices&#39;]只生成一个空数组。
我需要弄清楚如何修改我的查询以发布所选的值,默认情况下所有的值。
提前致谢,我希望这是有道理的。我是一名前端开发人员,并不熟悉PHP / MySQL
答案 0 :(得分:1)
<option>
应该一个value
属性,该属性将传递给服务器:
例如:
<select name="select_name">
<option value="2">Text 2</option>
</select>
在选择Text 2
选项后,在服务器端,它将是:
echo $_POST['select_name']; // 2
如果是multiple
:
<select name="select_name" multiple>
<option value="2">Text 2</option>
<option value="3">Text 3</option>
</select>
在选择两个选项后,在服务器端,它将是:
print_r $_POST['select_name']; // array(2,3);
print_r $_POST['select_name']; // array(2); if you select one option
当您选择alarm_device_description
字段时,您可以尝试:
foreach($pdo->query($sql) as $row) {
echo '<option value="' . $row['alarm_device_description'] . '">'. $row['alarm_device_description'] . '</option>';
}
答案 1 :(得分:0)
生成选择框时,您缺少value
属性。
更改
echo '<option>'. $row['alarm_device_description'] . '</option>';
到
echo '<option value="' . $row['alarm_device_description'] . '">' . $row['alarm_device_description'] . '</option>';
这样你的$ _POST ['devices']数组就会被项目
所包含