如果用户决定他们不再需要在他们的个人资料中使用图像(头像),我很难通过使用复选框从MySQL表中删除图像URL。
表格(它有更多列)看起来像:
user_id | img | user_name
1 | http://www.domain.com/path/to/image | User A
2 | | User B
3 | | User C
在用户个人资料中,如果img中存在URL,则图像会正确显示。
我的HTML表单如下:
<form method="post" action="user/update_info.php">
<div class="form-group">
<label for="user_name">Username:</label>
<input type="text" id="user_name" name="user_name" value="user_name" required>
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" id="email" name="email" value="email" required>
</div>
<div class="form-group">
<label for="password">Password:</label>
<input type="password" id="password" name="password" value="password" required>
</div>
<div class="form-group col-sm-4">
<input type="file" name="img">
<br>
<label for="noav">Use no avatar.</label>
<input type="checkbox" id="noav" name="noav" value="Yes">
</div>
<input type="submit" class="btn btn-warning" value="Update">
</form>
我的PHP文件如下:
<?php
$user_id = $_SESSION["user"]['user_id'];
$user_name = $_POST['user_name'];
$email = $_POST['email'];
$password = $_POST['password'];
$noav = $_POST['noav'];
$session_password = $_SESSION["user"]['password'];
if ($password != $session_password) {
$password = password_hash($password, PASSWORD_DEFAULT);
}
$img = $_FILES["img"];
$query = "UPDATE users
SET user_name='$user_name', char_name='$char_name',
user_email='$email', password='$password'
WHERE user_id=$user_id";
mysqli_query($this->connection, $query)
or die("Update error: " . mysqli_error($this->connection));
if($img["error"] == 0) {
$name = "public/gallery/" . time() . $img["name"];
$name_in_db = URL . $name;
$tmp_name = $img["tmp_name"];
move_uploaded_file($tmp_name, $name);
if ($noav = 'Yes') {
$query = "UPDATE users SET img='' WHERE user_id=$user_id";
} else {
$query = "UPDATE users SET img='$name_in_db' WHERE user_id=$user_id";
}
mysqli_query($this->connection, $query)
or die("Update error: " . mysqli_error($this->connection));
}
?>
在我添加“noav”复选框,变量和检查(仅存在底部查询)之前,所有内容都正常运行。
添加“noav”内容基本上打破了它。现在,无论如何,如果选中或未选中复选框,并且如果选择了图像,则会清除该用户的img列,无论如何都不会生成img。