IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Insertion d'image dans une base MySQL à partir d'un formulaire [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Points : 22
    Points
    22
    Par défaut Insertion d'image dans une base MySQL à partir d'un formulaire
    Désolé pour cette question de base...

    - J'ai un site en PHP avec une base MySQL ( avec Dreamweaver)
    - J'ai créé une page d'insertion de données. C'est OK (methode POST)
    - J'ai appris à uploader une image dans un répertoire. C'est OK ( je le fais avec un formulaire qui dirige vers un fichier upload.php)

    En revanche je galère à combiner les 2.
    Je voudrais qu'un membre qui va renseigner son Nom, Prénom... puisse ajouter une photo. Je voudrais faire le tout sur un seul formulaire. Le fait de valider le formulaire doit donc à la fois
    - uploader l'image dans un repertoire choisi
    - inserer les infos du formulaires dans la base
    - inserer une url d'accès (à l'image uploadée) dans la base

    Est-ce dans le fichier upload.php que je dois renseigner le code qui va intégrer les infos ?

    Comment faire ?
    Connaissez-vous un tutoriel sur le sujet ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ou se situe ta difficulté ?

    Tu mets juste tous tes champs dans le meme formulaire et tu rassembles tes deux codes de traitement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Points : 22
    Points
    22
    Par défaut
    J'imagine que pour atteindre mon objectif, il faudrait faire un seul formulaire (en POST) qui renvoie vers upload.php
    Upload.php aura le code pour la photo et ,en PLUS, le code pour l'insertion des infos dans la base.

    Le problème est que je ne sais pas quelle partie du code je dois récupérer pour l'insertion des infos dans la base.

    Le code d'insertion des infos dans la base se fait directement sur la même page. Le formulaire est crée par Dreamweaver avec la fonction "inserer un enregistrement" Donc le code crée fait référence à un formulaire situé plus loin dans la page. Donc si je copie simplement ce code dans upload.php , ça ne fonctionne pas.

    En résumé, je crois que ma question est :
    Quel code insérer dans upload.php pour insérer les infos renseignées dans le formulaire de insert.php?
    Dois-je mettre ce code
    APRES le code qui traite la photo ou
    AVANT ou
    ça n'a aucune importance

    LE FORMULAIRE DE insert.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <form name="form" method="POST" action="upload.php" enctype="multipart/form-data">
         <p> Fichier : <input type="file" name="photo" id="photo"></p>
         <table width="100%" border="1">
           <tr>
             <td>TITRE</td>
             <td><textarea name="titre" cols="90" id="titre"></textarea></td>
           </tr>
           <tr>
             <td>DESCRIPTION</td>
             <td><textarea name="description" cols="90" id="description"></textarea></td>
           </tr>
           <tr>
             <td>REPONSE</td>
             <td><textarea class="ckeditor" cols="80" id="reponse" name="reponse" rows="10"></textarea></td>
           </tr>
         </table>
         <p><input type="submit" name="envoyer" value="Sauvegarder"></p>
      </form>
    LE FICHIER UPLOAD simplement pour la photo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?php
    $dossier = 'upload/';
    $fichier = basename($_FILES['photo']['name']);
    $taille_maxi = 100000;
    $taille = filesize($_FILES['photo']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg');
    $extension = strrchr($_FILES['photo']['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, txt ou doc...';
    }
    if($taille>$taille_maxi)
    {
         $erreur = 'Le fichier est trop gros...';
    }
    if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    {
         //On formate le nom du fichier ici...
         $fichier = strtr($fichier, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
         if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         {
              echo 'Upload effectué avec succès !';
         }
         else //Sinon (la fonction renvoie FALSE).
         {
              echo 'Echec de l\'upload !';
         }
    }
    else
    {
         echo $erreur;
    }
    ?>

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut formulaire upload
    j'ai le même soucis que toi, je cherche aussi à joindre l'upload d'une image avec un formulaire d'insertion de données dans une base MYSQL.

    As tu trouvé la solution ?

    PS : je travaille aussi sur dreamweaver.

  5. #5
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 180
    Points : 182
    Points
    182
    Par défaut
    Je pense que tu devrais d'abord réaliser ton upload et si c'est ok,
    tu réalises ton insertion avec tes données POST mais aussi pour le nom de l'image $_FILES['photo']['name']
    Voila

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    En fait je commence par l'upload comme tu le dis, puis une fois que c'est ok, je fais mon formulaire d'insertion avec toutes mes données dans des champs de texte.

    Donc d'un côté mes données s'insèrent correctement dans la base et de l'autre l'image a bien été uploadée sur le serveur. Jusque là, pas de soucis, sauf que les 2 ne sont pas en lien (le champ photo de ma base devrait recevoir le nom de la photo uploadée et c'est là que je bug (j'ai juste quelques notions de PHP assez sommaires)
    Je pense que je devrais récupérer la variable de la photo qui a été précédemment insérée ? Mais je ne sais pas quoi mettre. Dans mon champ de texte photo du formulaire, j'y ai mis :
    <input name="photo" type="text" id="photo" value="<?php echo ($_FILES['photo']['name']); ?>">

    Mais ça ne marche pas, dans ma base ça inscrit :
    "/Applications/MAMP/tmp/php/phpaICZLN"

    Please, HELP !

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    c'est bon j'ai trouvé... il suffisait de mettre dans mon formulaire pour le champ photo:
    <input name="photo" type="text" id="photo" value="<?php echo ($fichier); ?>">


    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. insertion des images dans une base de donnees mysql
    Par matamin dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2011, 16h59
  2. [MySQL] Problème d'insertion de données dans une base MySql à partir d'un fichier csv
    Par kazabandi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/12/2010, 18h05
  3. [PHP 5.0] Insertion image dans une base MySQL
    Par yamyoung dans le forum Langage
    Réponses: 6
    Dernier message: 23/12/2008, 17h36
  4. Problem d'insertion d'une image dans une base mysql
    Par taouja dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 26/04/2007, 15h31
  5. Réponses: 11
    Dernier message: 01/06/2005, 15h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo