Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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 循环通过一组复选框并插入值_Php_Jquery_Arrays_Foreach_Checkbox - Fatal编程技术网

Php 循环通过一组复选框并插入值

Php 循环通过一组复选框并插入值,php,jquery,arrays,foreach,checkbox,Php,Jquery,Arrays,Foreach,Checkbox,第一次发帖,希望一切顺利:) 我已经为此工作了一段时间,但基本上我是这样做的: 我需要为我正在循环的每个复选框设置一个yes/no值,现在它可以工作,但是当我更改一个复选框时,它正在更改all的值 我的foreach循环: <?php $object = new stdClass(); $i = 0; ?> <?php foreach( $filters as $key => $value ) { ?> <tr> &l

第一次发帖,希望一切顺利:)

我已经为此工作了一段时间,但基本上我是这样做的:

我需要为我正在循环的每个复选框设置一个yes/no值,现在它可以工作,但是当我更改一个复选框时,它正在更改all的值

我的foreach循环:

  <?php $object = new stdClass(); $i = 0; ?>
<?php foreach( $filters as $key => $value ) {
    ?>
    <tr>
        <td><label for="show_filter">Show <?php echo $object->$key = $value['filter']; ?> Filter</label></td>        
        <td><input type="checkbox" class="show_filter" <?php //if ( $row['active_filter'] === 'yes' ) { ?>checked="checked"<?php //} ?> name="dp_show_filter" value="<?php echo $object->$key = $value['active_filter']; ?>"/><?php echo $object->$key = $value['active_filter']; ?></td>
        <td><a class="button-primary" href="?page=profolio_theme&del=<?php echo $row['id'];?>">Delete</a></td>
    </tr>
    <?php
    $i++;
}

显示过滤器
name=“dp_show_filter”值=”“/>

它正在更改所有的值,就像您给页面上创建的每个
复选框赋予相同的名称一样

您可以将PHP代码更改为类似以下内容:

<?php $object = new stdClass(); $i = 0; ?>
<?php foreach( $filters as $key => $value ) {
?>
<tr>
    <td><label for="show_filter">Show <?php echo $object->$key = $value['filter']; ?> Filter</label></td>        
    <td><input type="checkbox" class="show_filter" <?php //if ( $row['active_filter'] === 'yes' ) { ?>checked="checked"<?php //} ?> name="dp_show_filter_<?php echo $row['id'] ?>" value="<?php echo $object->$key = $value['active_filter']; ?>"/><?php echo $object->$key = $value['active_filter']; ?></td>
    <td><a class="button-primary" href="?page=profolio_theme&del=<?php echo $row['id'];?>">Delete</a></td>
</tr>
<?php
$i++;
}

我很肯定这会像你描述的那样解决你的问题。如果没有更完整的代码示例,很难判断

您使用
每个
循环遍历
customCheckbox
数组,但在循环中,您可以访问
$(showFilter)
,这是一个全局数组

你的意思是
$(showFilter[i])

回调函数接收
i
(循环中的索引)作为参数:

return customCheckbox.each(function(i) {
    ...

    if( $(showFilter[i]).val() === 'yes'){ ...

在仍然使用$_POST['some-name']的情况下动态更改名称的最佳方法是什么?在jQuery中,由于我在其他地方使用了该方法,所以在不太具体的情况下以这些输入为目标?我会在复选框中已有的名称文本之后使用
$key
$row['id']
。请记住,名称和ID不能以数字开头。这样:
name=“dp\u show\u filter”
然后,在选择代码中,您可以将
$(showFilter)
替换为
$(this)
,因为您已经在集合中的每个复选框上进行操作。对于这一点,您还可以在showfilter选择之后去掉多余的块,这将再次重复您的工作。我会在我的回复帖子中更新代码。这是真的,不知道为什么我没有想到这一点。我是否需要在javascript中执行与$('.dp_wrap input[name=“dp_show_filter”]')不同的操作?可能改用类?您已经选择了
.dp\u wrap
元素中的所有复选框(我假设这就是您想要做的)。因此,做出我上面建议的改变仍然可以实现你的愿望。但是,是的,为了将来验证此代码(特别是在其他地方使用),如果要向整个集合添加唯一的类名,它将增加额外的安全性,以确保选择正确的元素集合。然后替换
customCheckbox=$('.dp_wrap input[type=“checkbox”]”)带有
customCheckbox=$('.dp\u wrap.checkbox\u class\u name')。你也可以去掉下面的
showFilter
行。我会在php中尝试一下,但在javascript中,检查val==yes可能太具体了,因为我在其他不使用yes/noI的元素上使用了它。我在末尾添加$I++时尝试了[]和[$I],这破坏了单击功能。如果你添加了
[$I]
正如这里所建议的,那么您将
$i
变量作为
.each()
函数中元素的递增函数以及
值[]
数组的索引。如果您改为在混音中添加一个
$j
来增加
。每个()
函数都应该可以工作,但不是处理它的最佳方式。我编辑了我的答案。您应该使用循环索引,它是作为
回调的参数提供的。每个
回调都使用循环索引。这有助于我更进一步,因为我能够让它们单独更改,但现在没有任何内容发布到数据库。除了您添加的内容之外,我还添加了var id=parseInt(this.id.replace(“show_filter_u)”,“”);var showFilter=$(“show\u filter\uu”+id);
// default state
if( $(this).val() === 'yes'){
    $(this).prop('checked', true);
    $(rep).removeClass('off').addClass('on');
} else {
    $(this).prop('checked', false);
    $(rep).removeClass('on').addClass('off');
}
return customCheckbox.each(function(i) {
    ...

    if( $(showFilter[i]).val() === 'yes'){ ...