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 :

uploader un fichier avec d'autres champs d'un form


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 414
    Points : 111
    Points
    111
    Par défaut uploader un fichier avec d'autres champs d'un form
    Bonjour

    J'aimerais comprendre une fois pour tout, l'insertion et récupération en base des fichiers. Avec un formulaire simple contenant UNIQUEMENT le champ fichier, j'arrive à faire l'insertion et récupération en base des fichiers mais dès qu'il faut ajouter d'autres champs dans le formulaire, je suis perdue.

    J'ai un formulaire avec plusieurs champs ( 1 file, text, textarea...), sans le champ fichier, j'arrive à insérer et récupérer les donnés en base. Mais je m'embrouille dès que j'ajoute le champs fichier. Quelqu'un peut-il m'aider ? Je vous remercie d'avance.

    Voici en dessous mon code de récupération de tous les champs du formulaire. Les 2 derniers champs (name, image) de la requête appartiennent au traitement du fichier.
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    <?phprequire_once 'connexion.php';
    if(isset($_POST['submit'])){
    //On vérifie si la variable existe et sinon elle vaut NULL
    $num = isset($_POST['num']) ? $_POST['num'] : NULL;
    $client = isset($_POST['client']) ? $_POST['client'] : NULL;
    $datefacture = isset($_POST['datefacture']) ? $_POST['datefacture'] : NULL;
    $facturede = isset($_POST['facturede']) ? $_POST['facturede'] : NULL;
    $conditions = isset($_POST['conditions']) ? $_POST['conditions'] : NULL;
    $tva = isset($_POST['tva']) ? $_POST['tva'] : NULL;
     
     
    $filename = $_FILES['files']['name'];
    $chemin= 'upload/'.$filename ;
    $chemintemp = $_FILES['files']['tmp_name'] ;
     
     
    $req1 = $base->prepare('INSERT INTO infosfacture (num, client, datefacture, facturede, conditions, tva, name, image)
    VALUES (:num, :client, :datefacture, :facturede, :conditions, :tva, :name, :image)');
     
     
    $statement = $base->prepare($req1);
     
     
    $param = array();
    $params[':num']    = $_POST['num'];
    $params[':client']    = $_POST['client'];
    $params[':datefacture'] = $_POST['datefacture'];
    $params[':facturede'] = $_POST['facturede'];
    $params[':conditions'] = $_POST['conditions'];
    $params[':tva'] = $_POST['tva'];
    $params[':name'] = $filename;
    $params[':image'] = $chemin;
     
     
     
     
     
     
     
     
      $ext = end((explode(".", $filename)));
     
     
        // Valid image extension
        $valid_ext = array("png","jpeg","jpg");
     
     
        if(in_array($ext, $valid_ext)){
     
     
          // Upload file
          if(move_uploaded_file($chemintemp,$chemin)){
     
     
            // Execute query
            $statement->execute($params);
     
     
          }
     
     
        }
     
     
     
     
    }
     
     
     
     
        // Get extension
        $ext = end((explode(".", $filename)));
     
     
        // Valid image extension
        $valid_ext = array("png","jpeg","jpg");
     
     
        if(in_array($ext, $valid_ext)){
     
     
          // Upload file
          if(move_uploaded_file($_FILES['files']['tmp_name'],'upload/'.$filename)){
     
     
            // Execute query
            $statement->execute(array($filename,'upload/'.$filename));
     
     
          }
     
     
        }
      }    
    ?>

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Bonjour,

    Vous faites une requête sur quoi ici ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     // Execute query
            $statement->execute(array($filename,'upload/'.$filename));
    Si c'est toujours sur votre premier ->prepare, alors c'est incorrecte
    PDO ne sait pas ce qu'il doit faire avec vos deux données , an fait si mais il essaye de rejouer votre prépare, qui forcement n'est plus bon pour le peu de données transféré.

  3. #3
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 414
    Points : 111
    Points
    111
    Par défaut
    En fait ça devrait être ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $statement->execute($params);
    mais ça ne marche pas même en modifiant le code comme en dessous :

    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
    57
    58
    59
    60
    61
    62
    <?phprequire_once 'connexion.php';
    if(isset($_POST['submit'])){
    //On vérifie si la variable existe et sinon elle vaut NULL
    $num = isset($_POST['num']) ? $_POST['num'] : NULL;
    $client = isset($_POST['client']) ? $_POST['client'] : NULL;
    $datefacture = isset($_POST['datefacture']) ? $_POST['datefacture'] : NULL;
    $facturede = isset($_POST['facturede']) ? $_POST['facturede'] : NULL;
    $conditions = isset($_POST['conditions']) ? $_POST['conditions'] : NULL;
    $tva = isset($_POST['tva']) ? $_POST['tva'] : NULL;
     
     
    $filename = $_FILES['files']['name'];
    $chemin= 'upload/'.$filename ;
    $chemintemp = $_FILES['files']['tmp_name'] ;
     
     
    $req1 = $base->prepare('INSERT INTO infosfacture (num, client, datefacture, facturede, conditions, tva, name, image)
    VALUES (:num, :client, :datefacture, :facturede, :conditions, :tva, :name, :image)');
     
     
    $statement = $base->prepare($req1);
     
     
    $param = array();
    $params[':num']    = $_POST['num'];
    $params[':client']    = $_POST['client'];
    $params[':datefacture'] = $_POST['datefacture'];
    $params[':facturede'] = $_POST['facturede'];
    $params[':conditions'] = $_POST['conditions'];
    $params[':tva'] = $_POST['tva'];
    $params[':name'] = $filename;
    $params[':image'] = $chemin;
     
     
     
     
    }
     // Get extension
        $ext = end((explode(".", $filename)));
     
     
        // Valid image extension
        $valid_ext = array("png","jpeg","jpg");
     
     
        if(in_array($ext, $valid_ext)){
     
     
          // Upload file
          if(move_uploaded_file($_FILES['files']['tmp_name'],'upload/'.$filename)){
     
     
            // Execute query
            $statement->execute(params);
     
     
          }
     
     
        }
      }    
    ?>

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Vous faites des var_dump() pour être sur de rentrer dans tout vos if ?

  5. #5
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 414
    Points : 111
    Points
    111
    Par défaut
    Je fais des var_dump et je recois des valeurs nulls ce que je ne comprend pas.

    Pourtant quand je fais un autre petit exercice avec uniquement le champ fichier dans le formulaire, j'ai bien des bonnes valeurs dans mes var_dump.

    Voici mon petit exercice là :
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <form method='post' action='' enctype='multipart/form-data'>  <label>Extentions acceptées: png, jpg, jpeg</label>
      <input type='file' name='files' />
      <input type='submit' value='Submit' name='submit' />
    </form>
     
     
     
     
    <?php 
    include "connexion.php";
     
     
     
     
     
    if(isset($_POST['submit'])){
     
     
     
      // Count total files
      //$countfiles = count($_FILES['files']['name']);
     
      // Prepared statement
      $query = "INSERT INTO photos (name,image, fk_facturation_id) VALUES(?,?,?)";
     
     
      $statement = $base->prepare($query);
     
     
      // Loop all files
      //for($i=0;$i<=1;$i++){
     
     
        // File name
        $filename = $_FILES['files']['name'];
    	$chemin= 'upload/'.$filename ;
    	$chemintemp = $_FILES['files']['tmp_name'] ;
     
     
     
        // Get extension
        $ext = end((explode(".", $filename)));
     
     
        // Valid image extension
        $valid_ext = array("png","jpeg","jpg");
     
     
        if(in_array($ext, $valid_ext)){
     
     
          // Upload file
          if(move_uploaded_file($chemintemp,$chemin)){
     
     
            // Execute query
            $statement->execute(array($filename,$chemin, 1));
     
     
          }
     
     
        }
     
      //}
      echo "File upload successfully";
     
        //var_dump($fichier);
    }
    ?>

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

    Je t'ai DEJA dit, et je répète :

    • Mets des commentaires dans ton code
    • Mets des noms de variables les explicites


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $params[':name'] = $filename;
    $params[':image'] = $chemin;
    Ça, ce n'est vraiment pas clair....

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Vérifie s'il ne s'agit pas de permission pour l'écriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (is_writeable("upload/")) {
       echo "Autoriser");
    }else{
       echo "Refuser");
    }
    A+.

Discussions similaires

  1. Upload de fichier avec jsp
    Par fx2024 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/06/2006, 18h02
  2. Réponses: 3
    Dernier message: 09/05/2006, 00h31
  3. [Upload] Upload de fichier avec un script PHP
    Par largolgd dans le forum Langage
    Réponses: 7
    Dernier message: 23/04/2006, 16h21
  4. Upload de fichier avec variable passée en paramètre
    Par reservoirdev dans le forum ASP
    Réponses: 2
    Dernier message: 22/04/2006, 17h06
  5. introduire un count avec d'autres champs
    Par amelhog dans le forum Langage SQL
    Réponses: 13
    Dernier message: 18/08/2005, 15h57

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