Php 使用开/关复选框滑动开关运行SQL查询
我使用一个简单的开/关滑动开关来更新数据库中的字段 我把它“打开”没有问题,但允许用户“关闭”似乎给我带来了麻烦。我在这个页面上有多个开关,所以每当我“提交”时,它都会将“开”值切换到“关”,除非我删除elseif语句 代码似乎认为$_POST['check-twitter']在打开时为“isset”,但在我将其从打开切换到关闭时为“!isset” 如果我将代码改为“elseif(!isset…)”,那么当我再次进入页面时,它不会将“on”位置识别为“isset”,因此会自动将其关闭。它似乎与“isset”和“!isset”不一致 我希望开关仅在用户更改数据库时更新数据库,并且我需要开关向用户显示它是“打开”还是“关闭”Php 使用开/关复选框滑动开关运行SQL查询,php,html,checkbox,mysqli,isset,Php,Html,Checkbox,Mysqli,Isset,我使用一个简单的开/关滑动开关来更新数据库中的字段 我把它“打开”没有问题,但允许用户“关闭”似乎给我带来了麻烦。我在这个页面上有多个开关,所以每当我“提交”时,它都会将“开”值切换到“关”,除非我删除elseif语句 代码似乎认为$_POST['check-twitter']在打开时为“isset”,但在我将其从打开切换到关闭时为“!isset” 如果我将代码改为“elseif(!isset…)”,那么当我再次进入页面时,它不会将“on”位置识别为“isset”,因此会自动将其关闭。它似乎与“
/$twitter\u check表示数据库中等于“是”或“否”的字段
- 当只有两个可能值时,应使用if…else
- PHP代码必须包含在PHP标记中
- $\u POST变量可以按原样使用,无需重新分配
我让它工作了
<?php
$sql = "SELECT * FROM XXXXXXX WHERE user_id = $id";
$result = mysqli_query($connection, $sql);
$row = mysqli_fetch_array($result);
$twitter_check = $row['auto_post_twitter'];
$facebook_check = $row['fb_auto_post'];
$schedule_check = $row['weekly_email'];
if(isset($_POST['submit'])){
// CHECK TWITTER
if(isset($_POST['check-twitter']) && $twitter_check == "No"){
$sql_twitter = "UPDATE XXXXXXXX SET auto_post_twitter = 'Yes' WHERE user_id = $id";
$result_twitter = mysqli_query($connection, $sql_twitter);
$row_twitter = mysqli_fetch_array($result_twitter);
} elseif(!isset($_POST['check-twitter']) && $twitter_check == "Yes") {
$sql_twitter2 = "UPDATE XXXXXXXX SET auto_post_twitter = 'No' WHERE user_id = $id";
$result_twitter2 = mysqli_query($connection, $sql_twitter2);
$row_twitter2 = mysqli_fetch_array($result_twitter2);
}
// CHECK FACEBOOK
if(isset($_POST['check-facebook']) && $facebook_check == "No"){
$sql_facebook = "UPDATE XXXXXXX SET fb_auto_post = 'Yes' WHERE user_id = $id";
$result_facebook = mysqli_query($connection, $sql_facebook);
$row_facebook = mysqli_fetch_array($result_facebook);
} elseif(!isset($_POST['check-facebook']) && $facebook_check == "Yes") {
$sql_facebook2 = "UPDATE XXXXXX SET fb_auto_post = 'No' WHERE user_id = $id";
$result_facebook2 = mysqli_query($connection, $sql_facebook2);
$row_facebook2 = mysqli_fetch_array($result_facebook2);
}
// CHECK WEEKLY SCHEDULE
if(isset($_POST['check-weekly']) && $schedule_check == "No"){
$sql_weekly = "UPDATE XXXXXXX SET weekly_email = 'Yes' WHERE user_id = $id";
$result_weekly = mysqli_query($connection, $sql_weekly);
$row_weekly = mysqli_fetch_array($result_weekly);
} elseif(!isset($_POST['check-weekly']) && $schedule_check == "Yes") {
$sql_weekly2 = "UPDATE foodtruck_user SET weekly_email = 'No' WHERE user_id = $id";
$result_weekly2 = mysqli_query($connection, $sql_weekly2);
$row_weekly2 = mysqli_fetch_array($result_weekly2);
}
// REFRESH PAGE
echo "<meta http-equiv='refresh' content='0'>";
}
?>
<form method="POST" action="XXXXXXXXX">
<label class="switch">
<input type="checkbox" name="check-twitter" <?php echo $twitter_check == 'Yes'?'checked':''; ?>>
<div class="slider"></div>
</label><br/>
<label class="switch">
<input type="checkbox" name="check-facebook" <?php echo $facebook_check == 'Yes'?'checked':''; ?>>
<div class="slider"></div>
</label><br/>
<label class="switch">
<input type="checkbox" name="check-weekly" <?php echo $schedule_check == 'Yes'?'checked':''; ?>>
<div class="slider"></div>
</label><br/>
<input class="button" type="submit" name="submit" value="Save" />
</form>
您在哪里/如何定义$twitter\u check
?这里没有足够的代码,如果确实使用了post方法。@Fred ii-正如我在帖子中所说,$twitter\u check表示数据库中等于“是”或“否”的字段。我的页面上显然有更多的代码显示SQL查询和表单,但这与理解我遇到的问题无关,我只是尝试在存在问题的地方展示代码。
<?php
// retrieve checkbox value from db
$check = /* db result (true|false) */;
?>
<label class="switch">
<input type="checkbox" name="check-twitter" <?=$check && 'checked' ?> />
<div class="slider"></div>
</label>
<?php
if($_POST['check-twitter']) {
// sql update checked
} else {
// sql update unchecked
}
?>
<input class="button" type="submit" value="Save"/>
<?php
$sql = "SELECT * FROM XXXXXXX WHERE user_id = $id";
$result = mysqli_query($connection, $sql);
$row = mysqli_fetch_array($result);
$twitter_check = $row['auto_post_twitter'];
$facebook_check = $row['fb_auto_post'];
$schedule_check = $row['weekly_email'];
if(isset($_POST['submit'])){
// CHECK TWITTER
if(isset($_POST['check-twitter']) && $twitter_check == "No"){
$sql_twitter = "UPDATE XXXXXXXX SET auto_post_twitter = 'Yes' WHERE user_id = $id";
$result_twitter = mysqli_query($connection, $sql_twitter);
$row_twitter = mysqli_fetch_array($result_twitter);
} elseif(!isset($_POST['check-twitter']) && $twitter_check == "Yes") {
$sql_twitter2 = "UPDATE XXXXXXXX SET auto_post_twitter = 'No' WHERE user_id = $id";
$result_twitter2 = mysqli_query($connection, $sql_twitter2);
$row_twitter2 = mysqli_fetch_array($result_twitter2);
}
// CHECK FACEBOOK
if(isset($_POST['check-facebook']) && $facebook_check == "No"){
$sql_facebook = "UPDATE XXXXXXX SET fb_auto_post = 'Yes' WHERE user_id = $id";
$result_facebook = mysqli_query($connection, $sql_facebook);
$row_facebook = mysqli_fetch_array($result_facebook);
} elseif(!isset($_POST['check-facebook']) && $facebook_check == "Yes") {
$sql_facebook2 = "UPDATE XXXXXX SET fb_auto_post = 'No' WHERE user_id = $id";
$result_facebook2 = mysqli_query($connection, $sql_facebook2);
$row_facebook2 = mysqli_fetch_array($result_facebook2);
}
// CHECK WEEKLY SCHEDULE
if(isset($_POST['check-weekly']) && $schedule_check == "No"){
$sql_weekly = "UPDATE XXXXXXX SET weekly_email = 'Yes' WHERE user_id = $id";
$result_weekly = mysqli_query($connection, $sql_weekly);
$row_weekly = mysqli_fetch_array($result_weekly);
} elseif(!isset($_POST['check-weekly']) && $schedule_check == "Yes") {
$sql_weekly2 = "UPDATE foodtruck_user SET weekly_email = 'No' WHERE user_id = $id";
$result_weekly2 = mysqli_query($connection, $sql_weekly2);
$row_weekly2 = mysqli_fetch_array($result_weekly2);
}
// REFRESH PAGE
echo "<meta http-equiv='refresh' content='0'>";
}
?>
<form method="POST" action="XXXXXXXXX">
<label class="switch">
<input type="checkbox" name="check-twitter" <?php echo $twitter_check == 'Yes'?'checked':''; ?>>
<div class="slider"></div>
</label><br/>
<label class="switch">
<input type="checkbox" name="check-facebook" <?php echo $facebook_check == 'Yes'?'checked':''; ?>>
<div class="slider"></div>
</label><br/>
<label class="switch">
<input type="checkbox" name="check-weekly" <?php echo $schedule_check == 'Yes'?'checked':''; ?>>
<div class="slider"></div>
</label><br/>
<input class="button" type="submit" name="submit" value="Save" />
</form>