2 回答
TA贡献1786条经验 获得超13个赞
您的代码存在一些问题:
该setcookie()函数调用不会在所有的工作和将失败,“头已经发送”警告。这是您的代码不起作用的主要原因。
您在没有table 的情况下使用tr。如果您有表格之外的表格,我认为这是无效的。
至少在您发布的代码中,表单没有关闭。
如果未设置 cookie,此行会产生“未定义偏移”警告:
回声 $_COOKIE[$row['id']];
你还应该缩进你的代码,因为那样你可以更好地看到错误。如果尚未完成,请将其添加到开头以查看错误和警告:
error_reporting(E_ALL | E_NOTICE);
TA贡献1804条经验 获得超3个赞
完整代码:
<table class="table">
<thead class="thead-dark">
<tr>
<th>STT</th>
<th>Lời nhắc</th>
<th style="width: 50px;">Xong?</th>
<th style="width: 50px;">Ảnh</th>
</tr>
</thead>
<tbody>
<form action="index.php" method="POST" id="checksubmit" name="checksubmit">
<?php $i = 1; while ($row = mysqli_fetch_array($tasks)) { ?>
<tr>
<td> <?php echo $i; ?> </td>
<td class="task"> <?php if(isset($_COOKIE[$row['id']])) {echo '<span style="color:gray;"><strike>';} echo $row['task']; if(isset($_COOKIE[$row['id']])) {echo '</strike></span>';} ?> </td>
<td class="tick"><div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="check<?php echo $row['id'];?>" name="arraycheck[]" value="<?php echo $row['id'];?>"
<?php
if((((isset($_POST['arraycheck'])) && (in_array($row['id'], $_POST['arraycheck'])))) || (isset($_COOKIE[$row['id']]))) {
if(!isset($_COOKIE[$row['id']])) {
setcookie ($row['id'],"checked='checked'",time()+3600000); }
}
if ((isset($_POST['button-submit'])) && (!in_array($row['id'], $_POST['arraycheck']))) {
setcookie ($row['id'],"",time()-3600);
}
echo $_COOKIE[$row['id']];
?>>
<label class="custom-control-label" for="check<?php echo $row['id'];?>"></label>
</div></td>
<td><?php if (!empty($row['image'])) { ?> <a href="view.php?idimg=<?php echo $row['id']?>" class="btn btn-primary btn-sm"><i class="fas fa-image"></i></a> <?php } ?></td>
</tr>
<?php $i++; } ?>
<tr>
<td></td>
<td></td>
<td></td>
<td><input type="submit" value="Lưu" class="btn btn-primary" name="button-submit">
</form></td>
</tr>
</tbody>
</table>
- 2 回答
- 0 关注
- 153 浏览
添加回答
举报