Bonjour,
Voila je rencontre un petit problème avec mon code.
<div class="panel-body">
<div class="padd">
<div class="form quick-post">
<?php
if(isset($_POST['titre']) AND isset($_POST['content']) AND isset($_POST['categorie']))
{
$titre = $_POST['titre'];
$content = $_POST['content'];
$categorie = $_POST['categorie'];
$requete = $bdd->prepare('INSERT INTO actualites(titre, content, categorie, urlImgage) VALUES (:titre,:content,:categorie)');
$requete->execute(array(
"titre" => $titre,
"content" => $content,
"categorie" => $categorie
));
}
?>
<form class="form-horizontal" method="post" action="ajout-actu.php" enctype="multipart/form-data">
<!-- Récupération de mon titre-->
<div class="form-group">
<label class="control-label col-lg-2" for="title">Titre</label>
<div class="col-lg-10">
<input type="text" class="form-control" id="title" value="" name="titre" required>
</div>
</div>
<!-- fin Récupération de mon titre-->
<!-- Récupération de mon content-->
<div class="form-group">
<label class="control-label col-lg-2" for="content">Contenu</label>
<div class="col-lg-10">
<textarea class="form-control" id="content" name="content" required></textarea>
</div>
</div>
<!-- fin Récupération de mon content-->
<!-- Category -->
<div class="form-group">
<label class="control-label col-lg-2" for="title">Catégorie</label>
<div class="col-lg-4">
<!-- Récupération de mes catégories -->
<select class="form-control input-lg m-bot15" name="categorie" required>
<?php
$reponse = $bdd->query("SELECT * FROM categorie");
while ($data = $reponse->fetch()) :
?>
<option value="<?php echo $data['nom']; ?>"><?php echo ucfirst($data['nom']);?></option>
<?php endwhile ?>
</select>
<!-- fin Récupération de mes catégories -->
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-2" for="image">Téléchargement d'image</label>
<input type='hidden' name='MAX_FILE_SIZE' value='2500000'>
<input type="file" name="img" class="btn-upload">
<?php
$dossier = '../images/';
$fichier = basename($_FILES['img']['name']);
$taille_maxi = 250000;
$taille = filesize($_FILES['img']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['img']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//formatage du nom (suppression des accents, remplacements des espaces par "-")
$fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['img']['tmp_name'], $dossier . $fichier)) //correct si la fonction renvoie TRUE
{
echo 'Upload effectué avec succès !';
$chemin = $dossier . $fichier;
var_dump($chemin);
$requete = $bdd->query("INSERT INTO actualites(urlImage) values('$chemin');") or die (mysql_error());
}
else //sinon, cas où la fonction renvoie FALSE
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
?>
</div>
<!-- Buttons -->
<div class="form-group">
<!-- Buttons -->
<div class="col-lg-offset-2 col-lg-9">
<input type="submit" class="btn btn-primary" name="ajouter" value="Ajouter"></input>
</div>
</form>
J'ai une table categories et un formulaire qui recueille des infos : titre, contenu, catégorie et un upload d'image pour cette actualité.
Le soucis est que l'upload du chemin de l'image se fait correctement mes INSERT INTO du reste ne fonctionne pas du moins couplé avec l'upload de l'image.
C'est soir l'un soit l'autre.
Je pense que ça vient de la construction de la struture de mon code mais je ne vois pas comment faire ça.
merci
En résumant votre fichier après validation voilà ce qu'il se passe :
1/ Insertion des données dans la BDD avec le lien de l'image (cf correction de @jeremylevy)
2/ Ré-affichage du formulaire
3/ Création du lien de l'image...
La création du lien vers l'image doit se faire avant de l'insérer dans la BDD et là vous pourrez modifier votre 1er insert en conséquence.
De plus, regardez vos balises car certaines ne sont pas fermé et "< /input>" n'éxiste pas.
Salut,
Tu as mis quatres colonnes mais seulement trois valeurs :
INSERT INTO actualites(titre, content, categorie, urlImgage) VALUES (:titre,:content,:categorie)
C'est :
INSERT INTO actualites(titre, content, categorie) VALUES (:titre,:content,:categorie)
Lorsque tu utilises PDO, tu ne dois pas utiliser mysql_error().
Regarde ici : http://php.net/manual/fr/pdo.error-handling.php
++
j'ai modifié ce que tu m'as dit, pas mieux.
Bon par contre quand je dissocie les deux codes il fonctionne, càd :
Du côté de l'envoie des infos : titre, contenu, et catégorie -> ça fonctionne
Et du côté de l'image : UrlImage et Upload de l'image dans le dossier Images-> ça fonctionne
Par contre quand je mets les deux ensemble il n'y que l'envoie des infos : titre, contenu, et catégorie qui sont enregistrés dans la BDD ça fonctionne.
Bonsoir,
En survolant votre code, je vois que la création de l'url de image se fait après le premier insert donc si vous avez mis le lien de l'image dans le 1er insert alors c'est logique que le lien ne soit pas insérer.
Je ne sais pas si j'ai été clair.
J'ai deux insertions :
celle du haut qui s'occupe de mes données titre, content, catégorie
et celle qui concerne l'image.
jusque la je comprend, mais ce que je ne comprend pas c'est comment mettre la création du lien de l'image avant.
La création du lien se fait via :
$chemin = $dossier . $fichier;