【问题标题】:Extract data from a table created by a loop (PHP)从循环创建的表中提取数据 (PHP)
【发布时间】:2018-07-31 06:55:31
【问题描述】:

我有以下问题:我正在使用 PHP for 循环创建一个 HTML 表。每行都有数据和一个按钮。当用户按下按钮 (id="detail") 时,相应行 (id="patID") 的“id”字段应该存储在 PHP 变量中。我所做的每一次尝试都失败了,因为 javascript 只是使用 id 为“patID”的页面上的第一个元素,并且(据我所知)我没有办法在 PHP 中选择这个元素。这是我的代码:

 <?php
    if (isset($_POST['search']))
    {
    //irrelevant details of MySQL PDO-connection omitted
     $result = $statement->fetchAll();
        if ($result && $statement->rowCount() > 0)
        { ?>
            <h2>Ergebnisse</h2>

            <table>
            <thead>
            <tr>
            <th>#</th>
            <th>Vorname</th>
            <th>Nachname</th>
            <th>Geburtstag</th>
            <th>Klasse/Kurs</th>
            <th>Vorerkrankungen</th>
            <th>Allergien</th>
            <th>Anmerkung</th>
            <th>Aktualisiert</th>
            <th> Optionen</th>
            </tr>
            </thead>
            <tbody>
            <?php
            foreach ($result as $row)
            { ?>
                <tr id="row">
                <td id="patID"><?php echo escape($row["id"]); ?></td>
                    <td><?php echo escape($row["firstName"]); ?></td>
                    <td><?php echo escape($row["lastName"]); ?></td>
                    <td><?php echo escape($row["birthday"]); ?></td>
                    <td><?php echo escape($row["course"]); ?></td>
                    <td><?php echo escape($row["preIllnesses"]); ?></td>
                    <td><?php echo escape($row["allergies"]); ?> </td>
                    <td><?php echo escape($row["note"]); ?> </td>
                    <td><?php echo escape($row["created"]); ?> </td>
                     <td>
                        <button id="detail">Mehr</button>
                    </td> 
                </tr>
        <? } ?>
            </tbody>
            </table>

            <?php

        }
        else
        { ?>
            <blockquote><b>Keine Ergebnisse gefunden.</b></blockquote>
            <?php
        }
    }
    ?>

【问题讨论】:

  • 这是一个 javascript 的东西,而不是 PHP。我会添加 jquery、javascript 标签并在此处发布我的 javascript。你需要一个类而不是 ID
  • @ezw 我试图让按钮调用提取 patID 元素的 innerHTML 的 javascript 函数。这总是最终给我第一行的数据。我还尝试将脚本放入 for 循环中,但也没有用。一般来说,我对 javascript 没有太多经验。
  • 我为您当前的布局提交了一个解决方案。您需要将这些 ID 更改为类

标签: javascript php pdo


【解决方案1】:

如果您将 ID 更改为班级,您的方式

<tr class="row">
    <td class="patID"><?php echo escape($row["id"]); ?></td>
    <td><?php echo escape($row["firstName"]); ?></td>
    <td><?php echo escape($row["lastName"]); ?></td>
    <td><?php echo escape($row["birthday"]); ?></td>
    <td><?php echo escape($row["course"]); ?></td>
    <td><?php echo escape($row["preIllnesses"]); ?></td>
    <td><?php echo escape($row["allergies"]); ?> </td>
    <td><?php echo escape($row["note"]); ?> </td>
    <td><?php echo escape($row["created"]); ?> </td>
     <td>
        <button class="detail">Mehr</button>
    </td> 
</tr>

<script>
    $(function() {
        $('.detail').click(function(){
            // var id = $(this).parents('.row').find('.patID').html();

            alert($(this).parents('.row').find('.patID').html());
        });
    });
</script>

【讨论】:

    【解决方案2】:

    'id' 属性只能给一个 html 元素一次。你应该给你上课:

     <button class="detail">Mehr</button>
    

    如果你想稍后在 javascript 中获取它,你应该将 id 存储在一个额外的属性中。例如,如果您使用 jQuery,则可以使用数据属性:

    <button class="detail" data-id="some_id">Mehr</button>
    <script>
        $('.detail').click(function () {
            var id = $(this).data('id');
            // do something with id
        });
    </script>
    

    这将为所有具有“详细信息”类的元素添加一个点击监听器。因此,如果用户单击具有该类的元素,它将执行给定的函数,this 指向单击的元素。并且由于该元素具有 'data-id' 属性,我们可以使用 jQuery 的数据函数来获取该属性的内容。

    【讨论】:

      猜你喜欢
      • 2015-04-22
      • 2017-11-08
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多