Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中访问HTML表数据_Php_Html_Html Table - Fatal编程技术网

在PHP中访问HTML表数据

在PHP中访问HTML表数据,php,html,html-table,Php,Html,Html Table,我从一个SQL Select语句生成一个表,但也在每一行上添加了一个复选框,以便可以选择行,但我无法确定如何循环遍历此生成表的每一行,以查看是否选中了该复选框 这可能吗 我知道如何创建表格,填充表格,以及如何检查按钮,但我就是不知道如何访问每行按钮所在的单元格 我无法单独创建每个复选框,因为它们是在循环通过我的SQL SELECT中的行时与表一起创建的。如果您想使用单选按钮,通过在名称后添加[]将输入与数组链接在一起。即 然后可以使用foreach循环访问该数组 如果要使用复选框,请在数组中为它

我从一个SQL Select语句生成一个表,但也在每一行上添加了一个复选框,以便可以选择行,但我无法确定如何循环遍历此生成表的每一行,以查看是否选中了该复选框

这可能吗

我知道如何创建表格,填充表格,以及如何检查按钮,但我就是不知道如何访问每行按钮所在的单元格

我无法单独创建每个复选框,因为它们是在循环通过我的SQL SELECT中的行时与表一起创建的。如果您想使用单选按钮,通过在名称后添加[]将输入与数组链接在一起。即 然后可以使用foreach循环访问该数组

如果要使用复选框,请在数组中为它们指定相同的名称和[],并且每个名称都具有不同的值属性。即 您可以使用foreach循环访问这些值


在这两种情况下,在每个单选按钮之前的隐藏输入中都需要一个默认值。否则,您的数组将无法使用,因为php只读取选定的单选按钮。

首先,我承认这不是解决此问题的最佳方法,但它会解决您的问题

其次,我建议您将HTML输入元素更改为type=checkbox。为了能够知道检查了哪些,您需要调整代码,使其看起来如下所示:

<!-- HTML part -->
<form action="" method="post">
    <!-- we need the form as the parent to the table so content can be posted to the server -->
    <table ....>
        <thead>
            <tr>
                <th>&nbsp</th> <!-- we'll put our checkboxes in this column of the table -->
                ...
            </tr>
        </thead>
        <tbody>
            <?php
                foreach ($rows as $row) {
            ?>
            <tr>
                <td><input type="checkbox" name="chkSelect[]" value="<?php echo $row['id']; ?>" /></td>
                ....
            </tr>
            <?php
                }
            ?>
        </tbody>
    </table>
    <button type="submit" name="btnDelete" value="">Delete</button> <!-- This is assuming we're trying to delete the selected items -->
</form>
<!-- HTML end -->

你尝试过什么?这取决于数据的排列方式。单选按钮的设计使用户只能选择一个,因此您只需查找所选的按钮。如果需要多个选择,可以使用复选框,通过在名称末尾添加[],并将值作为ID,将它们链接为一个数组,然后通过$\u POST['checkbox\u name']进行foreach。看起来我必须使用复选框,我忘了您只能选择一个单选按钮。但我遇到的问题是,该表只是在循环通过SELECT语句中的行时生成的,因此我无法单独创建复选框。您可以添加一个计数器,每个计数器上加1。或者使用SQL行中的值作为值。这很有意义,每次生成新行时,我都可以增加一个变量。我不知道如何使用foreach循环来访问这些值?您能发布到目前为止您拥有的相关代码吗?正确回答你的问题要容易得多。谢谢,这澄清了我的一些问题。我对你如何处理表格有点不熟悉。就我所知,filter\u has\u var与isset类似吗?过滤器输入在做什么?谢谢:@fesil filter_has_var检查指定的超全局中是否有具有该名称的变量[实际上是数组键]。filter_input是现在访问superglobals的首选方式,而不是执行$checkedIds=$_POST['chkSelect'];。我为filter_输入提供的其他参数是,这样我就可以以数组的形式接收值,而不是简单的类型。你可以在这里阅读更多关于filter_输入的信息-我刚刚回到这里。好吧,我明白了,但我不知道我要从这里走到哪里。循环遍历表之后,我想将选定的ID添加到数组中,然后将其存储在数据库中。$checkedIds在这里是数组吗?
if (filter_has_var(INPUT_POST, 'btnDelete')) {
    $checkedIds = filter_input(INPUT_POST, 'chkSelect', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
    // if we loop through the array, we can see the selected item ids
    var_dump($checkedIds);
}