Mise à jour d'une table d'une base de donnée sql via requête php

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) :

<?php
include("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 :slight_smile:

Windows 7 / Chrome 28.0.1500.72

Salut,

  1. il serait bien que tu mettes des morceaux de code entre des balises [ code ] et [ / code ]. Ca permet à la fois de distinguer le message du code et de visualiser le code avec une police “mono”.

  2. Ton 1er formulaire est de type GET alors que le second est de type POST, mais ils ont la même action (je suppose que cette action est l’appel de ton 2ème formulaire). D’une part, ca fait bordélique d’utiliser des méthodes différentes d’un formulaire à l’autre. D’autre part, tu cherches peut-être tes données dans la variable $_POST alors qu’elles sont dans $_GET.

  3. Ton message manque de clarté. Par exemple, quand tu parles de var_dump, tu ne dis pas sur quelle variable tu as utilisé cette fonction, ou depuis quel fichier. D’ailleurs, tu ne nous donne pas le nom de chaque fichier, qui nous permettrait de comprendre lequel est appelé par la soumission des formulaires. Plus tu fourniras de détails et plus il sera facile pour les forummeurs de comprendre ton problème et de t’aider.

B’jour,

C’est moi ou il manque le

$requete->execute();

après la requête UPDATE ?