使用 select 下拉列表填充 table(来自数据库)
Populating table with select dropdown (from database)
如下面的代码所示,我有一个下拉列表,由 table "tabela" 填充。在它下面我有一个 table 我需要根据下拉列表中的选项 select 填充它?
我该怎么做?
<div class="box">
<?php
$pdo = new PDO('mysql:host=localhost;dbname=dbname; charset=utf8', 'user', 'pass');
$sql = "SELECT id, pref, nome FROM tabela GROUP BY pref,nome ORDER BY nome";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$users = $stmt->fetchAll();
?>
<select>
<?php foreach($users as $user): ?>
<option value="<?= $user['id']; ?>"><?= $user['pref']; ?> - <?= $user['nome']; ?></option>
<?php endforeach; ?>
</select>
<table class="gradienttable">
<thead>
<tr>
<th colspan="7" class="tabelas">tipo1</th>
</tr>
<tr>
<th>Tipo1</th>
<th>Modelo</th>
<th>Qtde</th>
<th>Tipos</th>
<th>Pessoas</th>
<th>Vazios</th>
<th>Porcent</th>
</tr>
</thead>
<tbody>
<?php
foreach ($dbh->query("SELECT *, (ocupacao)*100 as ocupacao1 FROM tabela WHERE prefixo=8510") as $row) {
printf(
"<tr onmouseover='this.style.fontWeight=700;' onmouseout='this.style.fontWeight=400;'>
<td style='padding:8px;'>%s - %s</td>
<td style='padding:8px;'>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
</tr>",
$row->pref, $row->nome, $row->model, $row->qtde, $row->tipos, $row->pessoas, $row->vazios, $ocupacao1 = round($row ->ocupacao1 * 100)/100 . '%');
}
?>
</tbody>
</table>
</div>
使用您收集数据的方式将结果回显到 html。
<?php foreach ($dbh->query("SELECT *, (ocupacao)*100 as ocupacao1 FROM infografico WHERE prefixo=8510") as $row) { ?>
<tr onmouseover='this.style.fontWeight=700;' onmouseout='this.style.fontWeight=400;'>
<td><?php echo $row->pref; ?></td>
...
</tr>
<?php } ?>
最好先在 table 中收集您需要的数据并根据需要形成数组,然后遍历该数组并回显到 table.
我认为首先您应该将 foreach() 语句更改为:
<?php foreach($users as $user) { ?>
<option value="<? echo $user['id']; ?>"><? echo $user['pref']; ?> - <?echo $user['nome']; ?></option>
<?php }; ?>
我觉得这更简洁易读:)
然后您需要通过 select 启用页面 "filter" 行 - 这可以通过每次更改 [=23] 时发布 select 内容来完成=] 值(所以基本上你创建了一个表单,每次你更改 select 中的内容时都会提交自己 - 不是很现代的解决方案)或使用 AJAX 发送内容并检索结果。
如果您决定使用第二个选项(我强烈推荐),您应该查看一些关于根据 AJAX 响应更改页面内容的教程。为此,我建议去 jQuery - 因为你应该在那里找到很多可以帮助你的功能...
如下面的代码所示,我有一个下拉列表,由 table "tabela" 填充。在它下面我有一个 table 我需要根据下拉列表中的选项 select 填充它?
我该怎么做?
<div class="box">
<?php
$pdo = new PDO('mysql:host=localhost;dbname=dbname; charset=utf8', 'user', 'pass');
$sql = "SELECT id, pref, nome FROM tabela GROUP BY pref,nome ORDER BY nome";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$users = $stmt->fetchAll();
?>
<select>
<?php foreach($users as $user): ?>
<option value="<?= $user['id']; ?>"><?= $user['pref']; ?> - <?= $user['nome']; ?></option>
<?php endforeach; ?>
</select>
<table class="gradienttable">
<thead>
<tr>
<th colspan="7" class="tabelas">tipo1</th>
</tr>
<tr>
<th>Tipo1</th>
<th>Modelo</th>
<th>Qtde</th>
<th>Tipos</th>
<th>Pessoas</th>
<th>Vazios</th>
<th>Porcent</th>
</tr>
</thead>
<tbody>
<?php
foreach ($dbh->query("SELECT *, (ocupacao)*100 as ocupacao1 FROM tabela WHERE prefixo=8510") as $row) {
printf(
"<tr onmouseover='this.style.fontWeight=700;' onmouseout='this.style.fontWeight=400;'>
<td style='padding:8px;'>%s - %s</td>
<td style='padding:8px;'>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
</tr>",
$row->pref, $row->nome, $row->model, $row->qtde, $row->tipos, $row->pessoas, $row->vazios, $ocupacao1 = round($row ->ocupacao1 * 100)/100 . '%');
}
?>
</tbody>
</table>
</div>
使用您收集数据的方式将结果回显到 html。
<?php foreach ($dbh->query("SELECT *, (ocupacao)*100 as ocupacao1 FROM infografico WHERE prefixo=8510") as $row) { ?>
<tr onmouseover='this.style.fontWeight=700;' onmouseout='this.style.fontWeight=400;'>
<td><?php echo $row->pref; ?></td>
...
</tr>
<?php } ?>
最好先在 table 中收集您需要的数据并根据需要形成数组,然后遍历该数组并回显到 table.
我认为首先您应该将 foreach() 语句更改为:
<?php foreach($users as $user) { ?>
<option value="<? echo $user['id']; ?>"><? echo $user['pref']; ?> - <?echo $user['nome']; ?></option>
<?php }; ?>
我觉得这更简洁易读:)
然后您需要通过 select 启用页面 "filter" 行 - 这可以通过每次更改 [=23] 时发布 select 内容来完成=] 值(所以基本上你创建了一个表单,每次你更改 select 中的内容时都会提交自己 - 不是很现代的解决方案)或使用 AJAX 发送内容并检索结果。
如果您决定使用第二个选项(我强烈推荐),您应该查看一些关于根据 AJAX 响应更改页面内容的教程。为此,我建议去 jQuery - 因为你应该在那里找到很多可以帮助你的功能...