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

Langage PHP Discussion :

Déplacer une photo dans un dossier


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Par défaut Déplacer une photo dans un dossier
    Bonjour, je souhaite avec 'move_uploaded_file' déplacer une photo dans un dossier.

    J'ai un formulaire pour poster des articles et je souhaite ajouter une photo et la déplacer dans un fichier afin de la récupérer par la suite pour l'afficher.
    Je n'arrive pas à la déplacer, voici mon code :
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?php
       require ("connect_bdd.php");
     
          //Pour ajouter l'article
          if (isset($_POST['titre'], $_POST['commentaire']))
          {
             if(!empty($_POST['titre']) AND !empty($_POST['commentaire']))
             {
                $article_titre = htmlspecialchars($_POST['titre']);
                $article_commentaire = htmlspecialchars($_POST['commentaire']);
     
                $req = $bdd->prepare('INSERT INTO article (titre,commentaire, date) VALUES (?,?,NOW())');
                $req -> execute(array($article_titre, $article_commentaire));
     
                $lastid = $bdd->lastInsertId();
     
                if(isset($_FILES['photo']) AND !empty($_FILES['photo']['name']))
                {
                   $chemin = 'dossierPhoto/'.$lastid;
                   move_uploaded_file($_FILES['photo']['tmp_name'], $chemin);
                }
     
                header("Location: http://localhost/blog/index.php");
             }
             else
             {
                $message = "Veuillez remplir tous les champs";
             }
          }
    ?>
    <!DOCTYPE html> 
    <html> 
       <head> 
          <title>Redaction / Edition</title> 
          <meta charset="utf-8">
       </head> 
    <body> 
       <h2>Nouvel article</h2> 
          <form method="POST" enctype="multipart/form-data"> 
             <p>Titre de l'article : <input type="text" name="titre"/></p> 
             <p>Commentaire: <br /><textarea name="commentaire" rows="10" cols="50"></textarea></p> 
             <input type="hidden" name="MAX_FILE_SIZE" value="2097152"> 
             <p>Choisissez une photo avec une taille inférieure à 2 Mo.</p> 
             <input type="file" name="photo"> 
             <br /><br /> 
             <input type="submit" name="envoyer" value="Envoyer"> 
       </form> 
     
       <?php
       if(isset($message))
       {
          echo $message;
       }
       ?>
    </body> 
    </html>
    Merci par avance

  2. #2
    Membre émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 541
    Par défaut
    Salut, est-ce que le dossier existe avant le déplacement ?
    Si vous arrivez à rentrer dans le dernier if , créez ou assurez vous que le dossier de destination existe et http://php.net/manual/fr/function.mo...oaded-file.php pour voir comment ça fonctionne.

    PS: Vous pouvez retirer ces htmlspecialchars qui n'ont pas leur place là.

    EDIT: Je viens de comprendre l'idée, c'est d'avoir l'ID comme nom du fichier (manque l'extension non), mais rassurez vous que le dossier est correct ou le chemin est correct.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Par défaut
    Merci de ta réponse, je ne souhaite pas avoir un dossier par photo mais que toutes les photos ajoutés aillent dans le même dossier.

  4. #4
    Membre émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 541
    Par défaut
    J'ai édité mon message, après avoir bien relu votre code, ça m'apprendra.. Sinon est-ce que le chemin est correct ? Et si c'est le cas, les fichiers seront sans extension

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                $lastid = $bdd->lastInsertId();
     
                if(isset($_FILES['photo']) AND !empty($_FILES['photo']['name']))
                {
                   $chemin = 'dossierPhoto/'.$lastid;
                   move_uploaded_file($_FILES['photo']['tmp_name'], $chemin);
                }
    • mets des commentaires sur chaque ligne de code,
    • affiche chaque variable,
    • revois la syntaxe de move_uploaded_file().

    Notamment $chemin.
    Tu verras qu'il y a un souci *...

    * (indice : nom du fichier ? extension ?)


    A lire aussi :




    2/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                $article_titre = htmlspecialchars($_POST['titre']);
                $article_commentaire = htmlspecialchars($_POST['commentaire']);
     
                $req = $bdd->prepare('INSERT INTO article (titre,commentaire, date) VALUES (?,?,NOW())');
                $req -> execute(array($article_titre, $article_commentaire));
    • On N'utilise PAS htmlspecialchars() AVANT enregistrement en BdD.
    • On l'utilise seulement au moment de l'affichage sur le site.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Par défaut
    Merci des conseils, grâce à toi j'ai réussi
    code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $lastid = $bdd->lastInsertId();
     
                if(isset($_FILES['photo']) AND !empty($_FILES['photo']['name']))
                {
                   if(exif_imagetype($_FILES['photo']['tmp_name']) == 2)
                   {
                      $chemin = 'photo/'.$lastid.'.jpeg';
                      move_uploaded_file($_FILES['photo']['tmp_name'], $chemin);
                   }
                   else
                   {
                      $message = "Votre image est au mauvais format";
                   }
                }
    Je vais suivre tes conseils pour améliorer le code
    Merci beaucoup

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

Discussions similaires

  1. déplacer une image dans un dossier selon son nom
    Par arckaniann dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2011, 20h12
  2. Déplacer une colonne dans une table...
    Par ralkif dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 07/10/2009, 07h50
  3. Insérer une photo dans un dossier
    Par kamnouz dans le forum Langage
    Réponses: 2
    Dernier message: 19/01/2009, 12h33
  4. Placer une image dans un dossier où qu'elle soit
    Par st0nky dans le forum Langage
    Réponses: 2
    Dernier message: 04/12/2005, 22h22
  5. Inserer une photo dans une base 8i à partir de form 6i
    Par armando123 dans le forum Forms
    Réponses: 3
    Dernier message: 20/06/2005, 20h01

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