Mise à jour d'une table d'une base de donnée SQL via requête PHP
Résolu
Fabien59
-
Fabien59 -
Fabien59 -
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) :
<form action="up_accueil_form.php" method="GET">
<?php
include("cfgsql.php");
$requete = $bdd->query('SELECT id, titre FROM accueil');
?>
<select name="id">
<?php
while($donnees = $requete->fetch()){
?>
<option value="<?php echo $donnees['id']; ?>"><?php echo htmlspecialchars($donnees['titre']); ?></option>
<?php
}
?>
</select>
<?php
$requete->closeCursor();
?>
<input type="submit" name="submit" value="Modifier" />
</form>
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/>
</form>
<?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 :)
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) :
<form action="up_accueil_form.php" method="GET">
<?php
include("cfgsql.php");
$requete = $bdd->query('SELECT id, titre FROM accueil');
?>
<select name="id">
<?php
while($donnees = $requete->fetch()){
?>
<option value="<?php echo $donnees['id']; ?>"><?php echo htmlspecialchars($donnees['titre']); ?></option>
<?php
}
?>
</select>
<?php
$requete->closeCursor();
?>
<input type="submit" name="submit" value="Modifier" />
</form>
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/>
</form>
<?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 :)
A voir également:
- Mise à jour d'une table d'une base de donnée SQL via requête PHP
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Table ascii - Guide
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Table des matières word - Guide
9 réponses
Salut,
Dans le bindValue, le premier paramètre doit être l'étiquette, donc ajoutes ":" ...
Exemple :
Mettez en résolu quand c'est résolu -.- ...
Dans le bindValue, le premier paramètre doit être l'étiquette, donc ajoutes ":" ...
Exemple :
$requete->bindValue(':id', $donnees['id'], PDO::PARAM_INT);
Mettez en résolu quand c'est résolu -.- ...
C'est fait ! Je me suis donc empressé d'essayer mais ça ne règle pas le problème.
Merci à toi de me venir en aide :)
Merci à toi de me venir en aide :)
Comme ceci ? :
if($donnees = $requete->fetch()){
var_dump($_POST);
if(isset($_POST['submit'])){
$update = $bdd->prepare('UPDATE accueil SET titre = :titre, contenu = :contenu WHERE id = :id');
$requete->bindValue(':id', $donnees['id'], PDO::PARAM_INT);
$requete->bindValue(':titre', $donnees['titre'], PDO::PARAM_STR);
$requete->bindValue(':contenu', $donnees['contenu'], PDO::PARAM_STR);
//$requete->bindValue(':image', $img_path, PDO::PARAM_STR);
$requete->execute();
}
if($donnees = $requete->fetch()){
var_dump($_POST);
if(isset($_POST['submit'])){
$update = $bdd->prepare('UPDATE accueil SET titre = :titre, contenu = :contenu WHERE id = :id');
$requete->bindValue(':id', $donnees['id'], PDO::PARAM_INT);
$requete->bindValue(':titre', $donnees['titre'], PDO::PARAM_STR);
$requete->bindValue(':contenu', $donnees['contenu'], PDO::PARAM_STR);
//$requete->bindValue(':image', $img_path, PDO::PARAM_STR);
$requete->execute();
}
if($donnees = $requete->fetch(PDO::FETCH_ASSOC)){
var_dump($_POST);
if(isset($_POST['submit'])){
$update = $bdd->prepare('UPDATE accueil SET titre = :titre, contenu = :contenu 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);
$requete->execute();
}
Toujours négatif...
var_dump($_POST);
if(isset($_POST['submit'])){
$update = $bdd->prepare('UPDATE accueil SET titre = :titre, contenu = :contenu 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);
$requete->execute();
}
Toujours négatif...
<?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(PDO::FETCH_ASSOC)){ var_dump($_POST); if(isset($_POST['submit'])){ $update = $bdd->prepare('UPDATE accueil SET titre = :titre, contenu = :contenu WHERE id = :id'); $update->bindValue(':id', $donnees['id'], PDO::PARAM_INT); $update->bindValue(':titre', $_POST['titre'], PDO::PARAM_STR); $update->bindValue(':contenu', $_POST['contenu'], PDO::PARAM_STR); //$update->bindValue(':image', $img_path, PDO::PARAM_STR); $update->execute(); } else echo '<p>Formulaire non envoyé</p>'; ?>
N'oublies pas de refermer le premier "if".
Mettez en résolu quand c'est résolu -.- ...
<?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(PDO::FETCH_ASSOC)){
var_dump($_POST);
if(isset($_POST['submit'])){
$update = $bdd->prepare('UPDATE accueil SET titre = :titre, contenu = :contenu WHERE id = :id');
$update->bindValue(':id', $donnees['id'], PDO::PARAM_INT);
$update->bindValue(':titre', $_POST['titre'], PDO::PARAM_STR);
$update->bindValue(':contenu', $_POST['contenu'], PDO::PARAM_STR);
//$update->bindValue(':image', $img_path, PDO::PARAM_STR);
$update->execute();
} }
else {echo '<p>Formulaire non envoyé</p>'; }
?>
J'ai bien fermé les 2 if et j'ai mis aussi les accolades à else mais toujours sans succès
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(PDO::FETCH_ASSOC)){
var_dump($_POST);
if(isset($_POST['submit'])){
$update = $bdd->prepare('UPDATE accueil SET titre = :titre, contenu = :contenu WHERE id = :id');
$update->bindValue(':id', $donnees['id'], PDO::PARAM_INT);
$update->bindValue(':titre', $_POST['titre'], PDO::PARAM_STR);
$update->bindValue(':contenu', $_POST['contenu'], PDO::PARAM_STR);
//$update->bindValue(':image', $img_path, PDO::PARAM_STR);
$update->execute();
} }
else {echo '<p>Formulaire non envoyé</p>'; }
?>
J'ai bien fermé les 2 if et j'ai mis aussi les accolades à else mais toujours sans succès
Je ne sais pas comment faire, mais je penses que le contenu de $donnees['id']" est bien mon numéro d'id puisque cette variable figure dans l'action de mon formulaire et quand on envoie le submit, on retrouve bien l'id dans l'URL.
Mais si tu me donnes de quoi tester tout ça comme il faut je m'exécute de suite !
Mais si tu me donnes de quoi tester tout ça comme il faut je m'exécute de suite !
<?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(PDO::FETCH_ASSOC)){ var_dump($_POST); if(isset($_POST['submit'])) { $update = $bdd->prepare('UPDATE accueil SET titre = :titre, contenu = :contenu WHERE id = :id'); $update->bindValue(':id', $donnees['id'], PDO::PARAM_INT); $update->bindValue(':titre', $_POST['titre'], PDO::PARAM_STR); $update->bindValue(':contenu', $_POST['contenu'], PDO::PARAM_STR); //$update->bindValue(':image', $img_path, PDO::PARAM_STR); var_dump($update->execute()); echo '<script>alert("Envoye");</script>'; } } else echo '<p>Formulaire non envoyé (ID incorrect).</p>'; ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Es tu sure que ceci ne fonctionne pas ?!
Mettez en résolu quand c'est résolu -.- ...
<?php include_once("cfgsql.php"); if(!isset($_GET['id'])) { header('Location: first_page.php'); die(); } $requete = $bdd->prepare('SELECT * FROM accueil WHERE id = :id'); $requete->bindValue(':id', $_GET['id'], PDO::PARAM_INT); $requete->execute(); $donnees = $requete->fetch(PDO::FETCH_ASSOC); $requete->closeCursor(); if(!empty($donnees)) { if(isset($_POST['submit'])) { $update = $bdd->prepare('UPDATE accueil SET titre = :titre, contenu = :contenu WHERE id = :id'); $update->bindValue(':id', $donnees['id'], PDO::PARAM_INT); $update->bindValue(':titre', $_POST['titre'], PDO::PARAM_STR); $update->bindValue(':contenu', $_POST['contenu'], PDO::PARAM_STR); //$update->bindValue('image', $img_path, PDO::PARAM_STR); $update->execute(); $update->closeCursor(); $donnees['titre'] = $_POST['titre']; $donnees['contenu'] = $_POST['contenu']; } echo '<form method="POST" action="up_accueil_form.php?id=' . $donnees['id'] . '"> <label for="titre">Titre de votre article :</label> <input type="text" name="titre" id="titre" value="' . htmlspecialchars($donnees['titre']) . '" /><br /> <label for="contenu">Contenu :</label> <textarea rows="4" cols="50" name="contenu" id="contenu">' . htmlspecialchars($donnees['contenu']) . '</textarea><br /> Image actuelle de votre article :<br/> <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="' . htmlspecialchars($donnees['imgurl']) . '"/><br /> <input type="submit" name="submit" value="Modifier" /><br/><br/> </form>'; } else { // L'entrée n'existe pas } ?>
Mettez en résolu quand c'est résolu -.- ...
Je vais pas faire semblant, et d'avance, toutes mes excuses : je ne sais pas depuis combien de temps je te fais galérer pour rien, mais tu m'as donné la solution à un moment donné, je mettais depuis tout a l'heure mon fichier modifié dans un mauvais dossier sur mon serveur (le manque de sommeil ne pardonne pas...)... Un mot : MERCI
Juste encore un petit truc : pour l'upload de l'image je voudrais, s'il on en envoie une nouvelle, faire l'upload et ensuite l'UPDATE avec la mise à jour de l'url de l'image, et si on garde l'ancienne image ne faire l'UPDATE que sur les champs titres et contenu, tu veux bien me donner un dernier petit coup de main ? (je ferais attention a ce que je fais cette fois...). J'ai essayé de faire ceci mais ca ne marche pas : erreur à la ligne "$update->execute();" dans la première condition...
<?php
include_once("cfgsql.php");
if(!isset($_GET['id'])) {
header('Location: contacts.php');
die();
}
$requete = $bdd->prepare('SELECT * FROM accueil WHERE id = :id');
$requete->bindValue(':id', $_GET['id'], PDO::PARAM_INT);
$requete->execute();
$donnees = $requete->fetch(PDO::FETCH_ASSOC);
$requete->closeCursor();
if(!empty($donnees)) {
if(!empty($_POST['image'])) {
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' );
$extension_upload = strtolower( substr( strrchr($_FILES['image']['name'], '.') ,1) );
if ($_FILES['image']['size'] <= 2097152 & in_array($extension_upload, $extensions_valides))
{
$nom='images/user/'.basename("image".time().".".$extension_upload);
move_uploaded_file($_FILES['image']['tmp_name'], 'images/user/'.basename("image".time().".".$extension_upload));
}
if(isset($_POST['submit'])) {
$update = $bdd->prepare('UPDATE accueil SET titre = :titre, contenu = :contenu, imgurl = :imgurl WHERE id = :id');
$update->bindValue(':id', $donnees['id'], PDO::PARAM_INT);
$update->bindValue(':titre', $_POST['titre'], PDO::PARAM_STR);
$update->bindValue(':contenu', $_POST['contenu'], PDO::PARAM_STR);
$update->bindValue('image', $nom, PDO::PARAM_STR);
$update->execute();
$update->closeCursor();
$donnees['titre'] = $_POST['titre'];
$donnees['contenu'] = $_POST['contenu'];
}
}
else
{
if(!empty($donnees)) {
if(isset($_POST['submit'])) {
$update = $bdd->prepare('UPDATE accueil SET titre = :titre, contenu = :contenu WHERE id = :id');
$update->bindValue(':id', $donnees['id'], PDO::PARAM_INT);
$update->bindValue(':titre', $_POST['titre'], PDO::PARAM_STR);
$update->bindValue(':contenu', $_POST['contenu'], PDO::PARAM_STR);
$update->execute();
$update->closeCursor();
$donnees['titre'] = $_POST['titre'];
$donnees['contenu'] = $_POST['contenu'];
}
}
}
}
echo '<form method="POST" action="up_accueil_form.php?id=' . $donnees['id'] . '">
<label for="titre">Titre de votre article :</label>
<input type="text" name="titre" id="titre" value="' . htmlspecialchars($donnees['titre']) . '" /><br />
<label for="contenu">Contenu :</label>
<textarea rows="4" cols="50" name="contenu" id="contenu">' . htmlspecialchars($donnees['contenu']) . '</textarea><br />
Image actuelle de votre article :<br/>
<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" /><br />
<input type="submit" name="submit" value="Modifier" /><br/><br/>
</form>';
?>
Merci encore pour ton aide
<?php
include_once("cfgsql.php");
if(!isset($_GET['id'])) {
header('Location: contacts.php');
die();
}
$requete = $bdd->prepare('SELECT * FROM accueil WHERE id = :id');
$requete->bindValue(':id', $_GET['id'], PDO::PARAM_INT);
$requete->execute();
$donnees = $requete->fetch(PDO::FETCH_ASSOC);
$requete->closeCursor();
if(!empty($donnees)) {
if(!empty($_POST['image'])) {
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' );
$extension_upload = strtolower( substr( strrchr($_FILES['image']['name'], '.') ,1) );
if ($_FILES['image']['size'] <= 2097152 & in_array($extension_upload, $extensions_valides))
{
$nom='images/user/'.basename("image".time().".".$extension_upload);
move_uploaded_file($_FILES['image']['tmp_name'], 'images/user/'.basename("image".time().".".$extension_upload));
}
if(isset($_POST['submit'])) {
$update = $bdd->prepare('UPDATE accueil SET titre = :titre, contenu = :contenu, imgurl = :imgurl WHERE id = :id');
$update->bindValue(':id', $donnees['id'], PDO::PARAM_INT);
$update->bindValue(':titre', $_POST['titre'], PDO::PARAM_STR);
$update->bindValue(':contenu', $_POST['contenu'], PDO::PARAM_STR);
$update->bindValue('image', $nom, PDO::PARAM_STR);
$update->execute();
$update->closeCursor();
$donnees['titre'] = $_POST['titre'];
$donnees['contenu'] = $_POST['contenu'];
}
}
else
{
if(!empty($donnees)) {
if(isset($_POST['submit'])) {
$update = $bdd->prepare('UPDATE accueil SET titre = :titre, contenu = :contenu WHERE id = :id');
$update->bindValue(':id', $donnees['id'], PDO::PARAM_INT);
$update->bindValue(':titre', $_POST['titre'], PDO::PARAM_STR);
$update->bindValue(':contenu', $_POST['contenu'], PDO::PARAM_STR);
$update->execute();
$update->closeCursor();
$donnees['titre'] = $_POST['titre'];
$donnees['contenu'] = $_POST['contenu'];
}
}
}
}
echo '<form method="POST" action="up_accueil_form.php?id=' . $donnees['id'] . '">
<label for="titre">Titre de votre article :</label>
<input type="text" name="titre" id="titre" value="' . htmlspecialchars($donnees['titre']) . '" /><br />
<label for="contenu">Contenu :</label>
<textarea rows="4" cols="50" name="contenu" id="contenu">' . htmlspecialchars($donnees['contenu']) . '</textarea><br />
Image actuelle de votre article :<br/>
<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" /><br />
<input type="submit" name="submit" value="Modifier" /><br/><br/>
</form>';
?>
Merci encore pour ton aide
Ok, je me disais bien aussi !
Pour le upload, je n'ai pas vérifier si la partie de l'envoi est correcte, je suppose qu'elle l'est.
Mettez en résolu quand c'est résolu -.- ...
Pour le upload, je n'ai pas vérifier si la partie de l'envoi est correcte, je suppose qu'elle l'est.
<?php include_once("cfgsql.php"); $requete = $bdd->query('SELECT id, titre FROM accueil'); ?> <form action="up_accueil_form.php" method="GET"> <select name="id"> <?php while($donnees = $requete->fetch(PDO::FETCH_ASSOC)) { echo '<option value="' . $donnees['id'] . '">' . htmlspecialchars($donnees['titre']) . '</option>'; } $requete->closeCursor(); ?> </select> <input type="submit" name="submit" value="Modifier" /> </form> <?php include_once("cfgsql.php"); if(!isset($_GET['id'])) { header('Location: first_page.php'); die(); } $requete = $bdd->prepare('SELECT * FROM accueil WHERE id = :id'); $requete->bindValue(':id', $_GET['id'], PDO::PARAM_INT); $requete->execute(); $donnees = $requete->fetch(PDO::FETCH_ASSOC); $requete->closeCursor(); if(!empty($donnees)) { if(isset($_POST['submit'])) { $newImage = ''; if(!empty($_FILES['image']['tmp_name'])) AND $_FILES['image']['error'] == 0) { $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' ); $extension_upload = strtolower( substr( strrchr($_FILES['image']['name'], '.'), 1)); if($_FILES['image']['size'] <= 2097152 & in_array($extension_upload, $extensions_valides)) { $nom = 'images/user/'.basename("image".time().".".$extension_upload); if(move_uploaded_file($_FILES['image']['tmp_name'], 'images/user/'.basename("image".time().".".$extension_upload))) $newImage = $nom; } } $reqStr = 'UPDATE accueil SET titre = :titre, contenu = :contenu '; if(!empty($newImage)) $reqStr .= ', imgurl = :imgurl '; $reqStr .= 'WHERE id = :id'; $update = $bdd->prepare($reqStr); $update->bindValue(':id', $donnees['id'], PDO::PARAM_INT); $update->bindValue(':titre', $_POST['titre'], PDO::PARAM_STR); $update->bindValue(':contenu', $_POST['contenu'], PDO::PARAM_STR); if(!empty($newImage)) $update->bindValue(':imgurl', $newImage, PDO::PARAM_STR); $update->execute(); $update->closeCursor(); $donnees['titre'] = $_POST['titre']; $donnees['contenu'] = $_POST['contenu']; } echo '<form method="POST" action="up_accueil_form.php?id=' . $donnees['id'] . '" enctype="multipart/form-data"> <label for="titre">Titre de votre article :</label> <input type="text" name="titre" id="titre" value="' . htmlspecialchars($donnees['titre']) . '" /><br /> <label for="contenu">Contenu :</label> <textarea rows="4" cols="50" name="contenu" id="contenu">' . htmlspecialchars($donnees['contenu']) . '</textarea><br /> Image actuelle de votre article :<br/> <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="' . htmlspecialchars($donnees['imgurl']) . '"/><br /> <input type="submit" name="submit" value="Modifier" /><br/><br/> </form>'; } else { // L'entrée n'existe pas } ?>
Mettez en résolu quand c'est résolu -.- ...
if(!empty($_FILES['image']['tmp_name'])) AND $_FILES['image']['error'] == 0) {
m'a renvoyé une erreur de syntaxe.
Je l'ai remplacé par :
if(!empty($_FILES['image']['tmp_name'])) {
Et... ça fonctionne !!!!!!!! Je crois qu'aucun mot ne pourra témoigner de ma joie et de ma gratitude pour ton aide, tu viens de m'enlever une sacrée épine du pied !!!
Un grand merci en tout cas :)
m'a renvoyé une erreur de syntaxe.
Je l'ai remplacé par :
if(!empty($_FILES['image']['tmp_name'])) {
Et... ça fonctionne !!!!!!!! Je crois qu'aucun mot ne pourra témoigner de ma joie et de ma gratitude pour ton aide, tu viens de m'enlever une sacrée épine du pied !!!
Un grand merci en tout cas :)
Super je n'avais pas vu ! Ca fonctionne très très bien !
Juste j'ai toujours les <br /> qui apparaissent dans le textarea quand j'édite un contenu qui contient des retours à la ligne. Pas très sexy de les enlever à la main à chaque modif, et pourtant j'ai bien mis : (nl2br(htmlspecialchars(htmlspecialchars_decode(stripslashes($donnees['contenu']))))) pour éviter tous problèmes d'affichages de ce genre... Si jamais t'as une idée là dessus (oui j'abuse de ta gentillesse ^^)
Encore merci pour tout !!
Juste j'ai toujours les <br /> qui apparaissent dans le textarea quand j'édite un contenu qui contient des retours à la ligne. Pas très sexy de les enlever à la main à chaque modif, et pourtant j'ai bien mis : (nl2br(htmlspecialchars(htmlspecialchars_decode(stripslashes($donnees['contenu']))))) pour éviter tous problèmes d'affichages de ce genre... Si jamais t'as une idée là dessus (oui j'abuse de ta gentillesse ^^)
Encore merci pour tout !!