使用 On/Off 复选框滑动切换到 运行 SQL 查询
Using On/Off Checkbox Sliding Switch to Run SQL Query
我正在使用一个简单的 On/Off 滑动开关来更新我数据库中的一个字段。
我转 "on" 没问题,但让用户转 "off" 似乎给我带来了麻烦。我在这个页面上有多个开关,所以每当我 "submit" 时,它将把 "on" 值变成 "off" 除非我删除 elseif 语句。
似乎代码认为 $_POST['check-twitter'] 打开时为 "isset",但当我将其从打开切换为关闭时为“!isset”。
如果我将代码更改为 "elseif(!isset....)",那么当我再次访问该页面时,它不会将 "on" 位置识别为 "isset",因此它会自动将其转换离开。这似乎与 "isset" 和 "!isset" 所认为的不一致。
我希望开关仅在用户更改数据库时更新数据库,并且我需要开关向用户显示是"on"还是"off."
// $twitter_check represents the field from the database which equals 'Yes' or 'No'
<label class="switch">
<input type="checkbox" name="check-twitter" <?php echo $twitter_check == 'Yes'?'checked':''; ?>>
<div class="slider"></div>
</label>
if(isset($_POST['check-twitter']) && $twitter_check == "No"){
//SQL UPDATE $twitter_check = 'Yes'
} elseif(isset($_POST['check-twitter']) && $twitter_check == "Yes") {
//SQL UPDATE $twitter_check = 'No'
}
<input class="button" type="submit" name="submit" value="Save"/>
<?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"/>
- 当只有 2 个可能值时,应使用 if...else。
- PHP 代码必须包含在 PHP 标签中。
- $_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>
我正在使用一个简单的 On/Off 滑动开关来更新我数据库中的一个字段。
我转 "on" 没问题,但让用户转 "off" 似乎给我带来了麻烦。我在这个页面上有多个开关,所以每当我 "submit" 时,它将把 "on" 值变成 "off" 除非我删除 elseif 语句。
似乎代码认为 $_POST['check-twitter'] 打开时为 "isset",但当我将其从打开切换为关闭时为“!isset”。
如果我将代码更改为 "elseif(!isset....)",那么当我再次访问该页面时,它不会将 "on" 位置识别为 "isset",因此它会自动将其转换离开。这似乎与 "isset" 和 "!isset" 所认为的不一致。
我希望开关仅在用户更改数据库时更新数据库,并且我需要开关向用户显示是"on"还是"off."
// $twitter_check represents the field from the database which equals 'Yes' or 'No'
<label class="switch">
<input type="checkbox" name="check-twitter" <?php echo $twitter_check == 'Yes'?'checked':''; ?>>
<div class="slider"></div>
</label>
if(isset($_POST['check-twitter']) && $twitter_check == "No"){
//SQL UPDATE $twitter_check = 'Yes'
} elseif(isset($_POST['check-twitter']) && $twitter_check == "Yes") {
//SQL UPDATE $twitter_check = 'No'
}
<input class="button" type="submit" name="submit" value="Save"/>
<?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"/>
- 当只有 2 个可能值时,应使用 if...else。
- PHP 代码必须包含在 PHP 标签中。
- $_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>