【问题标题】:Populating table with select dropdown (from database)使用选择下拉列表填充表(来自数据库)
【发布时间】:2016-11-08 05:13:37
【问题描述】:

如下面的代码所示,我有一个下拉列表,由表“tabela”填充。在它下面我有一个表,我需要根据从下拉列表中选择的选项来填充它?

我该怎么做?

<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>

【问题讨论】:

    标签: javascript php html-table onchange populate


    【解决方案1】:

    我认为首先你应该把你的 foreach() 语句改成:

    <?php foreach($users as $user) { ?>
      <option value="<? echo $user['id']; ?>"><? echo $user['pref']; ?> - <?echo $user['nome']; ?></option>
    <?php }; ?>
    

    我觉得这更简洁易读:)

    然后您需要启用页面以通过选择“过滤”行 - 这可以通过在每次更改选择值时发布选择内容来完成(因此基本上您创建一个每次都会提交自己的表单您更改选择中的内容 - 不是非常现代的解决方案)或使用 AJAX 发送内容并检索结果。

    如果您决定选择第二个选项(我强烈推荐),您应该查看一些关于基于 AJAX 响应更改页面内容的教程。我会建议你去 jQuery - 因为你应该在那里找到一些可以帮助你的函数......

    【讨论】:

    • 我不知道该怎么做!
    【解决方案2】:

    使用收集数据的方式将结果回显到 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 } ?>
    

    最好先在表中收集您需要的数据并根据需要形成数组,然后遍历该数组并回显到表中。

    【讨论】:

    • 对不起,我对此了解不多。我该怎么做?
    猜你喜欢
    • 2010-09-17
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多