J'ai crée un site avec un espace ou les personnes pourront poster des annonces un peu le même principe que sur Leboncoin.
Pour le moment j'arrive à poster des annonces et à les supprimer depuis l'espace membre mais je n'arrive pas à les modifier quand je clique sur envoyer rien ne se passe meme pas un message d'erreur.
<?php
//connexion à la base de donnée
include_once "conne.php";
//on récupère le id dans le lien
$id = $_GET['id'];
//requête pour afficher les infos d'un employé
$req = mysqli_query($con , "SELECT * FROM images WHERE id = $id");
$row = mysqli_fetch_assoc($req);
//vérifier que le bouton ajouter a bien été cliqué
if(isset($_POST['button'])){
//extraction des informations envoyé dans des variables par la methode POST
extract($_POST);
//verifier que tous les champs ont été remplis
if(isset($nom) && isset($titre)&& isset($image)&& isset($localisation)&& isset($prix) && $text) {
//requête de modification
$req = mysqli_query($con, "UPDATE images SET nom = '$nom' ,titre = '$titre' , image = '$image' , localisation = '$localisation' , prix = '$prix' , text = '$text' WHERE id = $id");
if($req){//si la requête a été effectuée avec succès , on fait une redirection
header("location: logement_pro.php");
}else {//si non
$message = "Employé non modifié";
}
}else {
//si non
$message = "Veuillez remplir tous les champs !";
}
}
?>
<div class="form-container">
<p class="error">
<?php
//afficher une erreur si la variable message existe
if(isset($message)) echo $message ;
?>
</p>
<form action="" method="POST" enctype="multipart/form-data">
<a href="espace_professionnel.php" class="modal_close">×</a>
<h3>Ajouter une annonce</h3>
<input type="file" name="image" required placeholder>
<input type="text" name="titre" cols="30" rows="10" required placeholder="Entrer le titre de votre annonce">
<input type="text" name="nom" value="<?=$_SESSION['admin_name']?>">
<input type="text" name="localisation" cols="30" rows="10" required placeholder="Entrer votre localisation">
<input type="text" name="prix" cols="30" rows="10" required placeholder="Entrer votre prix">
<textarea name="text" cols="30" rows="10" required placeholder="Entrer votre description"></textarea>
<input type="submit" name="send" value="Ajouter" class="form-btn">
<a href="logement_pro.php" class="link">Liste des photos</a>
</form>
</div>
</body>
</html>
Pour reprendre ce qui a été dit plus haut, je pense qu'il faudrait revoir l'approche (en particulier à cause de $_FILES
), quelques pistes :
En soi pas une mauvaise idée pour l'utilisateur de pré-remplir les champs du formulaire des modifes avec les valeurs existantes de $row[] mais ne pas oublier de mettre les sessions à jour (comme pour "name=nom" value="<?=$_SESSION['admin_name']?>") une fois posté.
isset() ne vérifie que si une variable est définie et != null, pas si elle est remplie ; en oubliant extract(), if ($_POST['nom'] !== "") fera le job ; (filter_var() pour mémoire) ; comme dit, inutile de vérifier $_POST['button'] qui n'existe pas, si les données arrivent c'est que quelqu'un a appuyé sur le button
si les vérifes sont ok et l'UPDATE également, alors on gère l'image comme l'upload de la création d'annonce ; après vérifes usuelles et en partant du principe qu'il n'y a qu'une seule image :
1/ On garde le même nom et on la déplace (et écrase) avec move_uploaded_file() => attention aux problèmes de cache
2/ On détruit l'image existante avec unlink(), on génére un nouveau nom et idem on la déplace avec move_uploaded_file
S'il y a plusieurs images, il vaut mieux faire un truc dédié
Voilà voilà, j'espère que j'ai pas écrit trop de bêtises, bon courage
PS : si quelqu'un pouvait me dire comment on fait ça $_POST['button'] avec le petit fond blanc, ce serait sympa
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
gb-net.fr