Bonjour,
Voila je suis débutant en POO, la mise a jour des textes et image fonctionne, mais si on on modofie que le texte l'image est supprimée.
Le PB viendrait de mon constructeur mais pourquoi cela fonctionne pour le texte et pas pour l'image ... comment faire pour que l'input vide ne remplace pas l'image existante ????
Mon model
public function updateArticle(){
$db = getBdd();
$e = [
'title' => $this->_title,
'content' => $this->_content,
'image' => $this->_image,
'posted' => $this->_posted,
'id' => $this->_id
];
$req = $db->prepare("UPDATE posts SET title = :title,content = :content,image = :image, date_post = NOW(),posted = :posted WHERE id = :id");
$req->execute($e);
}
mon controleur
$post = Article::getEditPost();
require '../pages/admin/post.php';
if ($post == false) {
header("Location:index.php?page=error");
}
//on controle le form puis UPDATE l'article
if (isset($_POST['submit'])) {
$title = htmlspecialchars(trim($_POST['title']));
$content = htmlspecialchars(trim($_POST['content']));
$posted = isset($_POST['public']) ? "1" : "0";
$errors = [];
if (empty($title) || empty($content)) {
$errors['empty'] = "Veuillez remplir tous les champs";
}
if (!empty($_FILES['image']['name'])) {
$file = $_FILES['image']['name'];
$extensions = ['.png', '.jpg', '.jpeg', '.gif', '.PNG', '.JPG', 'JPEG', '.GIF'];
$extension = strrchr($file, '.');
if (!in_array($extension, $extensions)) {
$errors['image'] = "Cette image n'est pas valide";
}
}
if (!empty($errors)) {
require '../pages/error.php';
}else {
$image = $_FILES['image']['name'];
$upArticle = new Article($_GET['id'], $title, $content, null, $image, null, $posted);
$upArticle->updateArticle();
?>
<script>
window.location.replace("index.php?page=post&id=<?= $_GET['id'] ?>");
</script>
<?php
}
}
Voila je demande de l'aide car je bloque depuis plusieurs jour :-(
Merci d'avance
Ton problème viens de :
$image = $_FILES['image']['name'];
ça doit être plutôt quelques choses comme :
//Si le name dans $_FILES exist alors on le prend, sinon on reprend l'encien.
$image = (!empty($_FILES['image']['name']))?$_FILES['image']['name']:$article->image;