Enregistrer les caractéristiques d'une image dans une bdd

Max23 -  
 Max 23 -
Bonjour,
J'ai creer un petit formulaire qui permet d'uploader des images et j'aimerais enregistrer dans ma bdd les information consernant l'image (nom, taille, sujet, emplacement de l'upload...)
Mon code fonctionne correctement, l'image s'upload bien, mais rien ne s'inscrit dans ma table "images".

Voici mon code:

<html>
<head>
<title>formulaire billet</title> 
<link href="formulaire billet.css" rel="stylesheet" type="text/css"/>
</head>


<body>
<p><h1 id="titre">Ajouter un sujet</h1></p>

<form action="" method="post" enctype="multipart/form-data">
 <fieldset> 
  <table id="tform">
   <tr>
       <td><label>Sujet:</label></td>
       <td><input id="sujet" type="text" name="sujet"/></td>
   </tr>
   <tr>
       <td><label>Message:</label></td>
       <td><textarea id="message" name="message"></textarea></td>
   </tr>
   <tr>
       <td><label>Votre image:</label></td>
       <td><input type="file" name="image" value="parcourir"/></td>
   </tr>    
  </table> 
 </fieldset>

<input type="submit" value="Envoyer" name="valider"/>
</form>

<br/><br/><br/><br/>

<a href="monblog.php">Retourner à la page d'acceuil</a>

</body>
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}

catch (Exception $e)
{
die ('erreur: ' .$e->getMessage());   
} 

$req = $bdd->prepare('INSERT INTO billet(titre, contenu, date_creation) VALUES(:titre, :contenu, NOW())');
$req->execute(array(
'titre' => $_POST['sujet'],
'contenu' => $_POST['message']
));      

$req->closeCursor();
//----------------------------Enregistrement de l'image------------------------------
$req = $bdd->prepare('INSERT INTO images(nom, sujet, taille, type, emplacement, date) VALUES(:nom, :sujet, :description, :taille, :type, :emplacement, NOW())');         
 $req->execute(array(
                                 'nom' => $_FILES['image']['name'],
                                 'sujet' => $_POST['sujet'],
                                 'taille' => $_FILES['image']['size'],
                                 'type' => $_FILES['image']['extension'],
                                 'emplacement' => 'images/'
                               ));
 $req->closeCursor();      
//---------------------------------------------------------------------------------------
if (isset($_FILES['image']) AND $_FILES['image']['error'] == 0)
{
        if ($_FILES['image']['size'] <= 10485760)
        {
                $infosfichier = pathinfo($_FILES['image']['name']);
                $extension_upload = $infosfichier['extension'];
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                if (in_array($extension_upload, $extensions_autorisees))
                {
                        move_uploaded_file($_FILES['image']['tmp_name'], 'images/' . basename($_FILES['image']['name']));
                        echo "L'envoi a bien été effectué !";                                        
                }
        }
}
?>
</html> 


Voila, merci de m'apporter un peu de votre lumière.
Cho cho.


A voir également:

7 réponses

Utilisateur anonyme
 
Salut salut,

Tu as un message d'erreur pour nous orienter un peu plus vite?
0
Max23
 
non aucun message d'erreur
0
Utilisateur anonyme
 
Re,

Il manque des petits / , et je ne comprends pas tout à fait le debut de l'expression : ^0[^0] -> qu'est ce que tu cherches à faire ici?

Essai comme ça, ça vérife les num : 0x xx xx xx xx
if (preg_match('/^0[1-9]{1}[0-9]{8}$/', $_POST['tel']))
0
Max23
 
Salut kyser soze,
Tu t'es trompé de post non?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
Ah mais carrément , lool. Ca m'étais pas arrivée ça encore.
Je suis vraiment pas réveillée, un café s'impose.

Résolu? ===> [RESOLU]
0
Max23
 
Pas grave lol
Par contre, moi je suis toujours bloqué
0
Utilisateur anonyme
 
Dans ta requête il y a 6 colonnes précisées pour 7 values :
$req = $bdd->prepare('INSERT INTO images(nom, sujet, taille, type, emplacement, date) VALUES(:nom, :sujet, :description, :taille, :type, :emplacement, NOW())');
0
Max23
 
oui en fait j'ai déja corrigé cette erreur, j'ai supprimé :description
mais ça ne fonctionne toujours pas. J'ai fait un print_r de $_FILES['image'], voici ce que ça donne:

Array
(
[name] => Photo0295.jpg
[type] => image/jpeg
[tmp_name] => /Applications/MAMP/tmp/php/phpvp2amZ
[error] => 0
[size] => 2464989
)

tout à l'air normal, je comprend pas pourquoi ça marche pas
0
Utilisateur anonyme
 
Pour vérifier déjà que la requête passe, fais un echo de la requête avant de la soumettre pour vérifier déjà que les champs soient bien là, et copie colle la directement dans phpmyadmin pour voir le retour.
0
Max23
 
Pardon, mais je ne comprend pas bien.
a quel endroit du code faut il que je fasse un echo?
Ensuite qu'est ce que je dois copier coller et à quel endroit de phpmyadmin?
0
Marie
 
Bien je viens de tester mon code sur pc avec WAMP.

Tout ce passe comme sous mac et mamp sauf que cette fois ci j'ai ce message qui apparait dans mon navigateur:
( ! ) Notice: Undefined index: extension in C:\wamp\www\blog\formulaire billet.php on line 56
Call Stack
# Time Memory Function Location
1 0.0010 381512 {main}( ) ..\formulaire billet.php:0


Je ne sais pas ce que ça veut dire, pour rappel voici le code en question:

//----------------------------Enregistrement de l'image------------------------------
$req = $bdd->prepare('INSERT INTO images(nom, sujet, taille, type, emplacement, date) VALUES(:nom, :sujet, :description, :taille, :type, :emplacement, NOW())');         
 $req->execute(array(
                                 'nom' => $_FILES['image']['name'],
                                 'sujet' => $_POST['sujet'],
                                 'taille' => $_FILES['image']['size'],
ligne 56                         'type' => $_FILES['image']['extension'],
                                 'emplacement' => 'images/'
                               ));
 $req->closeCursor();      
//---------------------------------------------------------------------------------------


Encore une fois, merci de votre aide
0
Max 23
 
Ok, l'ai compris, en fait il me dit que le paramètre $_FILES['image']['extension'] n'existe pas

pourtant, quand je fait un print_r il apparait bien.

J'ai essayé de supprimer la ligne ainsi que les champs qui lui son associer; et ça fonctionne parfaitement, les données sont bien enregistrées dans la table.

Ce que j'aimerais savoir, c'est pourquoi il me dit que $_FILES['image']['extension'] n'existe pas?
0