2017-02-17 77 views
2

我有一个可由用户更改的项目数组。该数组中的每一项可以通过下面的简单行编辑:PHP在数组中设置可编辑复选框变量

foreach($items as $item) { 
    <tr> 
     <td><input type="text" value="<?php echo esc_attr($item['name']); ?>" /></td> 
     <td><input type="checkbox" name="" value="" /></td> 
     <input type="hidden" name="items[<?php echo $i; ?>][ischecked]" value="<?php echo esc_attr($item['ischecked']); ?>" /> 
    </tr> 
} 

$item['name']成功地被改变,我要问的是复选框如何设置存储值true,如果复选框被选中,以$item['ischecked']

+1

你问你是否在你的数据库中有'$ item ['defectscked']'填充了,如何在生成html时检查复选框?如果是这样,你可以执行'”<?php if(!空($ item ['infarcked']))echo'checked'?> />'。如果你不是这个意思,我不知道你需要什么;你的解释需要更清楚。 – Rasclatt

+1

此外,我有些惊讶的输入生成值'name'属性。 – Rasclatt

+0

是的你是正确的Theres也意味着一个隐藏的输入与名称集,我已经更新了我最初的问题代码 – grasesed

回答

0

使用隐藏输入似乎是一种解决方法,而不是一个干净的直接解决方案。

你可以根据自己的情况修改以下代码片段吗?

foreach($items as $i=>$item){ 
    echo "<tr> "; 
     echo "<td><input type=\"text\" name=\"name[$i]\" value=\"",esc_attr($item['name']),"\" /></td>"; 
     echo "<td><input type=\"checkbox\" name=\"check_name[$i]\" value=\"true\"",(isset($_POST["check_name[$i]"])?" checked":"")," /></td>"; 
    echo "</tr>"; 
    // declare a variable for use in future queries, change/use this as/if needed 
    $check[$i]=(isset($_POST["check_name[$i]"])?"true":"false"); 
} 

我没有测试这个解决方案,所以让我知道是否有什么是错误的。