Problème insertion BD
Résolu
J'ai écris le code suivant pour ajouter un article dans ma table qui est composé d'un id, d'un titre, d'un texte et d'une img_article. Cependant rien ne se passe lors du clique sur le bouton, la page se recharge et aucune insertion n'est faite. Ma connexion est dans un include en haut de ma page et elle marche.
Merci d'avance de me répondre.
Merci d'avance de me répondre.
<form method="post" action="index.php">
<div class="row 50%">
<div class="6u">
<input type="text" name="titre" placeholder="Titre" required/>
</div>
</div>
<div class="row 50%">
<div class="12u">
<textarea name="texte" placeholder="Article" required></textarea>
</div>
</div>
<div class="row 50%">
<input name="image" type="file" value="Choisir une image accept="image/jpg, image/gif, image/png" required></p>
</div>
<div class="row">
<div class="12u">
<input type="submit" value="Ajout article" />
</div>
</div>
</form>
<?php
if(isset($_POST['titre']) && isset($_POST['texte']) && isset($_FILES['image'])){
$titre=$_POST['titre'];
$texte=$_POST['texte'];
$image=$_FILES['image'];
$sql="INSERT INTO article VALUES(null, :titre, :texte, :image)";
$prep=$connexion->prepare($sql);
$prep->execute(array('titre' => $titre,
'texte' => $texte,
'image' => '../images' . $image['name'])) && move_uploaded_file($image['tmp_name'], '../images/' . basename($image['name']));
}
?>
9 réponses
-
Salut!
Rajoute une "name" sur ton bouton et fait le nécessaire sur php et ça devrais fonctionner :)
-
Bonjour,
Tu dois indiquer dans quelles colonnes tu insères tes valeurs.
$sql="INSERT INTO article (titre, texte, img_article) VALUES(:titre, :texte, :image)";
Question: veux-tu vraiment mettre une valeur "null" au id? Pourquoi ne la laisses-tu pas s'incrémenter toute seule? Idéalement, le id devrait être différent pour chacune de tes lignes dans ta bdd, surtout si tu veux y faire référence à partir d'une autre table. -
Remplace cette ligne là:
$prep->execute(array('titre' => $titre, 'texte' => $texte, 'img_article' => '../images' . $image['name'])) && move_uploaded_file($image['tmp_name'], '../images/' . basename($image['name']));
par celles-ci:$prep->execute(array('titre' => $titre, 'texte' => $texte, 'img_article' => '../images' . $image['name'])); move_uploaded_file($image['tmp_name'], '../images/' . basename($image['name'])); -
Juste pour voir, essai de passer par un "exec" au lieu du "prepare".
Pour savoir si ça viens de la préparation ou de quelque par d'autre.
Edit : Modifie cette partie là aussi :
$prep->execute(array( "titre" => $titre, "texte" => $texte, "img_article" => '../images' . $image['name'])) && move_uploaded_file($image['tmp_name'], '../images/' . basename($image['name']));
Oh well the devil makes us sin
But we like it when we're spinning, in his grip. -
J'ai trouvé.
Tu dois ajouter cela dans ta balise <form> :
<form method="post" action="index.php" enctype="multipart/form-data">
-
Bonsoir, j'ai rajouté un name et lai appelé dans le isset mais ça ne marche toujours pas
-
Bonsoir, je l'ai testé mais toujours aucune action ..
<div class="row"> <div class="12u"> <input type="submit" name="bouton" value="Ajout article" /> </div> </div> </form> <?php if(isset($_POST['titre']) && isset($_POST['texte']) && isset($_FILES['image']) && isset($_POST['bouton'])){ $titre=$_POST['titre']; $texte=$_POST['texte']; $image=$_FILES['image']; $sql="INSERT INTO article (titre,texte,img_article) VALUES( :titre, :texte, :img_article)"; $prep=$connexion->prepare($sql); $prep->execute(array('titre' => $titre, 'texte' => $texte, 'img_article' => '../images' . $image['name'])) && move_uploaded_file($image['tmp_name'], '../images/' . basename($image['name'])); } ?> -
Toujours pas
-
Bon, maintenant quelque chose à l'air de se passe puis ce que j'ai des erreurs. ^^
( ! ) Notice: Undefined variable: prep in C:\wamp\www\ProjetRaiateaV2\admin\index.php on line 65
! ) Fatal error: Call to a member function execute() on a non-object in C:\wamp\www\ProjetRaiateaV2\admin\index.php on line 65-
-
-
<!-- Ajout Article -->
<section id="Ajj" class="two">
<div class="container">
<header>
<h2>Ajout d'un article</h2>
</header>
<form method="post" action="index.php" enctype="multipart/form-data">
<div class="row 50%">
<div class="6u">
<input type="text" name="titre" placeholder="Titre" required/>
</div>
</div>
<div class="row 50%">
<div class="12u">
<textarea name="texte" placeholder="Article" required></textarea>
</div>
</div>
<div class="row 50%">
<input name="image" type="file" value="Choisir une image accept="image/jpg, image/gif, image/png" required></p>
</div>
<div class="row">
<div class="12u">
<input type="submit" name="bouton" value="Ajout article" />
</div>
</div>
<?php
$connexion->query('SET NAMES UTF8');
if(isset($_POST['titre']) && isset($_POST['texte']) && isset($_FILES['image']) && isset($_POST['bouton'])){
$titre=$_POST['titre'];
$texte=$_POST['texte'];
$image=$_FILES['image'];
$sql="INSERT INTO article (titre,texte,img_article) VALUES( :titre, :texte, :img_article)";
$prep->execute(array('titre' => $titre, 'texte' => $texte, 'img_article' => '../images' . $image['name']));
move_uploaded_file($image['tmp_name'], '../images/' . basename($image['name']));
}
?>
</form>
</div>
</section>
<!-- /Ajout Article --> -
-
-