Итак, у меня есть следующий фрагмент кода, который обновляет профиль пользователя.
<?php
// FETCH THE DATA FIRST FROM DB
$fetch_profile_data = "SELECT * FROM `users` WHERE `useremail` = :user_email";
$exec_profile_data = $DB->prepare($fetch_profile_data);
$exec_profile_data->bindValue(":user_email", $_SESSION['user_email'] );
$exec_profile_data->execute();
$user_profile_data = $exec_profile_data->fetch(PDO::FETCH_ASSOC);
$base_upload_folder = "./uploads";
$actual_user_avatar = $_FILES['myprofilepic']["name"];
$base_target_file = $base_upload_folder.basename($_FILES['myprofilepic']["name"]);
$user_avatar_extension = pathinfo($base_target_file, PATHINFO_EXTENSION);
$user_avatar_size = $_FILES['myprofilepic']['size'];
$maxsize = 4097152;
// set the allowed file types
$avatar_allowed_array = array('jpeg','jpg','png');
// PROCESS THE FORM IF SUBMIT IS SET
if ( isset( $_POST['submit'] ) ) {
$bio = $_POST['userbio'];
$url = $_POST['mysite'];
if ( !empty( $bio ) || !empty( $url ) || !empty( $actual_user_avatar ) ){
$update_user_bio = "UPDATE `users` SET userbio = :user_bio, userwebsite = :user_site, profilepicture = :user_picture WHERE useremail = :user_email";
try {
$execute_update_bio = $DB->prepare($update_user_bio);
$execute_update_bio->bindValues(":user_bio", $bio);
$execute_update_bio->bindValues(":user_site", $url);
$execute_update_bio->bindValues(":user_picture", $actual_user_avatar);
$execute_update_bio->bindValues(":user_email", $_SESSION['user_email']);
move_uploaded_file($_FILES["myprofilepic"]["tmp_name"], $base_target_file)
$execute_update_bio->execute();
} catch (Exception $ex) {
echo $ex->getMessage();
}
}
}
?>
<form method="POST" enctype="multipart/form-data">
Username: <input type="text" value="<?php echo $user_profile_data['username']; ?>" disabled="true">
Email: <input type="text" value="<?php echo $user_profile_data['useremail']; ?>" disabled="true">
BIO: <textarea name="mybio" id="mybio"><?php echo $user_profile_data['userbio']; ?></textarea>
URL: <input type="url" name="mysite" id="mysite" value="<?php echo $user_profile_data['userwebsite']; ?>">
PICTURE: <input type="file" name="myprofilepic" id="myprofilepic">
<img src="./uploads/<?php echo $user_profile_data['profilepicture']; ?>">
<button name="submit" id="submit">Update Profile</button>
</form>
Итак, в основном я хочу, чтобы пользователь мог редактировать свой профиль, после того как он отредактировал его, отображать то же самое. Но основная идея здесь - проверить, существует ли каждое отдельное значение, а затем обновить. Например:
- Если изменено только значение textarea, обновите только соответствующий столбец и отобразите то же самое значение, и наоборот.
- Если поле URL / файл изображения не изменилось или пусто не обновлять.