Bonjour,
J’ai déjà posé la question sur d’autres forums, à des amis, j’ai cherché tant et plus, et je ne trouve pas de solution à mon problème, qui semble pourtant survenir alors que mon projet n’est pas si compliqué !
Je développe un site tout en PHP et dont le contenu se trouve dans une base SQL. J’ai donc dans mon site divers structures, comme des articles par exemple, que je veux pouvoir mettre à jour via une section d’administration dans le site. Pour être concret :
Sur ma page d’accueil, j’ai des articles, qui se trouvent dans une table “accueil”. Dans la table accueil :
- un champ INT : “id”
- un champ VARCHAR : “titre”
- un champ LONGTEXT : “contenu”
- un champ VARCHAR : “imgurl”
Via l’administration de mon site, j’arrive très bien à ajouter et à supprimer des articles, ainsi qu’à les afficher. Mon soucis arrive pour les mises à jour des articles. J’ai fais ceci :
Une page qui contient un menu déroulant pour choisir l’article qu’on veut modifier (sélection par son titre) :
<?phpinclude("cfgsql.php");
$requete = $bdd->query(‘SELECT id, titre FROM accueil’);
?>
<select name="id">
<?php
while($donnees = $requete->fetch()){
?>
<?php echo htmlspecialchars($donnees['titre']); ?>
<?php
}
?>
<?php
$requete->closeCursor();
?>
Et la page qui contient le formulaire reprenant le contenu actuel des champs et permettant de les modifier, ainsi que le script pour effectuer l’UPDATE :
<?php include("cfgsql.php"); $requete = $bdd->prepare('SELECT * FROM accueil WHERE id = :id'); $requete->bindValue('id', $_GET['id'], PDO::PARAM_INT); $requete->execute(); if($donnees = $requete->fetch()){ if(isset($_POST['submit'])){ $update = $bdd->prepare('UPDATE accueil SET titre = :titre, contenu = :contenu, image = :image WHERE id = :id'); $requete->bindValue('id', $donnees['id'], PDO::PARAM_INT); $requete->bindValue('titre', $_POST['titre'], PDO::PARAM_STR); $requete->bindValue('contenu', $_POST['contenu'], PDO::PARAM_STR); $requete->bindValue('image', $img_path, PDO::PARAM_STR); } ?><form method="POST" action="up_accueil_form.php?id=<?php echo $donnees['id']; ?>">
<label for="titre">Titre de votre article :</label>
<input type="text" name="titre" id="titre" value="<?php echo htmlspecialchars($donnees['titre']); ?>" /><br />
<label for="contenu">Contenu :</label>
<textarea rows="4" cols="50" name="contenu" id="contenu"><?php echo htmlspecialchars($donnees['contenu']); ?></textarea><br />
Image actuelle de votre article :<br/> <?php echo '<img src="' . $donnees['imgurl'] . '" alt="" width="200px"/>' ?><br/>
<label for="image">Si vous souhaitez changer l'image, sélectionnez-la ci-dessous (tous formats | max. 2 Mo) :</label><br />
<input type="file" name="image" id="image" value="<?php echo htmlspecialchars($donnees['imgurl']); ?>"/><br />
<input type="submit" name="submit" value="Modifier" /><br/><br/>
<?php
}
else{
// L'entrée n'existe pas
}
$requete->closeCursor();
?>
Je n’ai pas d’erreur qui me soit retournée, et var_dump me renvoie ceci :
array(3) { [“titre”]=> string(19) “Test modifie encore” [“contenu”]=> string(14) “Contenu encore” [“submit”]=> string(8) “Modifier” }
Ce qui supposerait que les infos sont bien envoyées dans l’array, mais qu’elles ne sont pas exploitées par le script pour faire les modifs dans la bdd…
Je galère depuis un moment et je dois présenter le projet rapidement maintenant ça devient urgent donc si quelqu’un pouvait m’aider ça serait vraiment super !!
Merci d’avance et bon dimanche
Windows 7 / Chrome 28.0.1500.72