使用一个简单的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['devices']只生成一个空数组。
我需要弄清楚如何修改我的查询以发布所选的值,以及默认情况下所有的值。
提前谢谢,我希望这是合理的。我是一名前端开发人员,不太熟悉PHP/MySQL
<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>';
}
生成选择框时缺少value
属性。
更改
echo '<option>'. $row['alarm_device_description'] . '</option>';
至
echo '<option value="' . $row['alarm_device_description'] . '">' . $row['alarm_device_description'] . '</option>';
这样,您的$_POST["设备"]数组将与项一起使用