我在一个文件中有一个复选框组,其结果在另一个文件中打勾。按下提交后,所选项目显示在进程文件中,然后将值转到数据库。
但是在刷新流程页面后,所选值会消失。我怎么能阻止这个?我需要它们在用户个人资料中显示。
我尝试将这两个部分放在同一个文件中,但效果相同。
以下是process.php
<?php
include("connection.php");
extract($_POST);
$check_exist_qry="select * from interests";
$run_qry=mysqli_query($con,$check_exist_qry);
$total_found=mysqli_num_rows($run_qry);
if ($total_found >0)
{
$my_value=mysqli_fetch_assoc($run_qry);
$my_stored_interests=explode(',',$my_value['interest_name']);
}
if (isset($submit))
{
$all_interests_value = implode(",",$_POST['interests']);
if ($total_found >0)
{
//update
$upd_qry="UPDATE interests SET interest_name='".$all_interests_value."'";
mysqli_query($con,$upd_qry);
}
else
{
//insert
$ins_qry="INSERT INTO interests(interest_name) VALUES('".$all_interests_value."')";
mysqli_query($con,$ins_qry);
}
}
if (!empty($_POST['submit'])) {
echo "<ul>";
foreach ($_POST['interests'] as $value) {
echo "<li>$value</li>";
}
echo "</ul>";
} else {
echo "none";
}
?>
<form action="checkbox1.php" method="post">
<table width="900">
<tr>
<td width="300"><label><h3><input type="checkbox" name="interests[]" value="option1" <?php if(isset($_POST['interests'])) { foreach($_POST['interests'] as $tmp) { if($tmp == "") { echo "checked=\"checked\"option1"; break; }}} ?>/> option1</h3></label></td>
<td width="300"><label><h3><input type="checkbox" name="interests[]" value="option2" <?php if(isset($_POST['interests'])) { foreach($_POST['interests'] as $tmp) { if($tmp == "") { echo "checked=\"checked\"option2"; break; }}} ?>/> option2</h3></label></td>
<td width="300"><label><h3><input type="checkbox" name="interests[]" value="option3" <?php if(isset($_POST['interests'])) { foreach($_POST['interests'] as $tmp) { if($tmp == "") { echo "checked=\"checked\"option3"; break; }}} ?>/> option3</h3></label></td>
</tr>
</table>
</form>
答案 0 :(得分:0)
使用<?php if(in_array("option1", $_POST['interests'])) echo "checked"; ?>
http://www.w3schools.com/php/func_array_in_array.asp
查看教程以获取更多信息..
在您的使用中
<td width="300"><label><h3><input type="checkbox" name="interests[]" value="option3" <?php if(in_array("option3", $_POST['interests'])) echo "checked"; ?> /> option3</h3></label></td>
答案 1 :(得分:0)
您可以使用以下逻辑验证并设置复选框:
<?php
if(isset($_POST['interests']) && in_array("option1", $_POST['interests'])){
echo " checked='checked'";
}
?>
以下是参考资料:
所以你的代码应该是这样的:
// your code
<tr>
<td width="300"><label><h3><input type="checkbox" name="interests[]" value="option1" <?php if(isset($_POST['interests']) && in_array("option1", $_POST['interests'])){ echo " checked='checked'"; } ?>/> option1</h3></label></td>
<td width="300"><label><h3><input type="checkbox" name="interests[]" value="option2" <?php if(isset($_POST['interests']) && in_array("option2", $_POST['interests'])){ echo " checked='checked'"; } ?>/> option2</h3></label></td>
<td width="300"><label><h3><input type="checkbox" name="interests[]" value="option3" <?php if(isset($_POST['interests']) && in_array("option3", $_POST['interests'])){ echo " checked='checked'"; } ?>/> option3</h3></label></td>
</tr>
// your code