Javascript 从循环创建的表中提取数据(PHP)

Javascript 从循环创建的表中提取数据(PHP),javascript,php,pdo,Javascript,Php,Pdo,我有以下问题:我正在创建一个带有PHP for循环的HTML表。每行都有数据和一个按钮。当用户按下按钮(id=“detail”)时,对应行(id=“patID”)的“id”-字段应该存储在PHP变量中。我所做的每一次尝试都失败了,因为javascript只是获取页面上id为“patID”的第一个元素,(据我所知)我没有办法在PHP中选择这个元素。这是我的代码: <?php if (isset($_POST['search'])) { //irrelevant de

我有以下问题:我正在创建一个带有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
        }
    }
    ?>

麦角新碱
#
沃名称
姓氏
格伯茨塔格
克拉斯/库尔斯
沃勒克兰肯
阿勒吉恩
安默尔贡
阿库阿利谢特
选项
梅尔
基恩·埃尔格布尼塞·格芬登。

一个html元素只能使用一次“id”属性。您应该改为创建一个类:

 <button class="detail">Mehr</button>
Mehr
如果希望稍后在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>
Mehr
$('.detail')。单击(函数(){
var id=$(this.data('id');
//用身份证做点什么
});

这将为具有“detail”类的所有元素添加一个click侦听器。因此,如果用户单击具有该类的元素,它将执行给定的函数,其中
this
指向单击的元素。由于该元素具有“data id”属性,我们可以使用jQuery的数据函数来获取该属性的内容。

一个html元素只能获得一次“id”属性。您应该改为创建一个类:

 <button class="detail">Mehr</button>
Mehr
如果希望稍后在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>
Mehr
$('.detail')。单击(函数(){
var id=$(this.data('id');
//用身份证做点什么
});

这将为具有“detail”类的所有元素添加一个click侦听器。因此,如果用户单击具有该类的元素,它将执行给定的函数,其中
this
指向单击的元素。由于该元素具有“dataid”属性,因此我们可以使用jQuery的data函数来获取该属性的内容。

如果将id更改为class,请按您的方式操作

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

梅尔
$(函数(){
$('.detail')。单击(函数(){
//var id=$(this.parents('.row').find('.patID').html();
警报($(this).parents('.row').find('.patID').html());
});
});

如果您将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>

梅尔
$(函数(){
$('.detail')。单击(函数(){
//var id=$(this.parents('.row').find('.patID').html();
警报($(this).parents('.row').find('.patID').html());
});
});

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