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 :

Uploader un ou plusieurs fichiers


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut Uploader un ou plusieurs fichiers
    Bonjour,
    Je reviens avec un sujet que j’ai vraiment du mal à maitriser.
    J’aimerais faire un mélange de tutoriels téléchargés sur developpez.com, mais ça coince.
    J’ai commencé par installer (Upload multiple de fichiers) puis j’ai fait des mélanges avec différents tuto, dont voici les explications.
    D’apparence (Upload multiple de fichiers) fonctionne très bien, je peux insérer plusieurs fichiers et les supprimer un par un, formidable.
    J’ai créé un dossier nommé (fichier_client) sur le serveur pour y recevoir les fichiers.
    J’ai créé une base de données (client_fichier) uniquement pour pouvoir uploader :
    Id_client_fichier ……. smallint …..UNSIGNED……auto_increment
    date………………………….datetime
    fichier………………………blob
    Le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form id="form" action="upload.php" method="post" enctype="multipart/form-data">
      <input name="MAX_FILE_SIZE" value="100000"  type="hidden" /> 
    <input class="btn"  value="Envoyer" name="fichier" type="submit" /></form>
    Le fichier PHP (upload.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
    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
     
    <?php
    $host = "localhost";
    $user = "root";
    $password = "";
    $database = "AA9BB59K2";
    $dossier = 'fichier_client/'; 
    $fichier = basename($_FILES['fichier']['name']);
    $taille_maxi = 100000;
    $taille = filesize($_FILES['fichier']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg');
    $extension = strrchr($_FILES['fichier']['name'], '.'); 
    if(!in_array($extension, $extensions))
    {
         $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))
    {
         $fichier = strtr($fichier, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if ($tailleMax > $poidsFichier) {
    if(copy($nomTemporaire, $chemin.$nomFichier)){ //il upload
    $connexion = mysql_connect($host,$user,$password);
    $choix_base = mysql_select_db($database, $connexion);
    $result = mysql_query("INSERT INTO client_fichier (date, fichier) ".
     "VALUES ('".$_POST ['fichier']."', NOW())");
    if(!$result){
    }    
    	 if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier))
         {
              echo 'Upload effectué avec succès !';
         }
         else 
         {
              echo 'Echec de l\'fichier_client !';
         }
    }
    else
    {
         echo $erreur;
    }
    ?>
    Avec tout ça j’obtient ce message d’erreur :
    Parse error: syntax error, unexpected $end in /var/www/data/woo/A/A/9/B/ AA9BB59K/contact/upload.php on line 47

    La ligne 47 correspondrait à : ?>

    J’ai fait un mélange de tout ça, mais rien ne se passe.
    Mon but, pourvoir uploader un ou plusieurs fichiers en une seule fois .
    Malgré les tutoriels et mes livres je n’y arrive pas, j’ai vraiment besoin d’un bon coup de pouce, merci de votre aide.
    Bien cordialement d'un petit développeur en détresse.

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    Je pense qu'il manque l'accolade de fin

    correspondant à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(!isset($erreur))
    {
    .
    .
    .
    .
    ..
    }

  3. #3
    Membre actif Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 490
    Points : 294
    Points
    294
    Par défaut
    Dans la plupart des cas, correspond à l'oublie d'un point virgule ou d'une accolade

  4. #4
    Invité
    Invité(e)
    Par défaut
    ??
    Vérifie tes accolades :
    certaines doivent être mal placées, et/ou manquantes.

    Note : un code "bien écrit" (avec des tabulations, passage à la ligne, ..., où il faut) est plus facile à lire et donc à corriger.

  5. #5
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut
    Bonsoir,
    Merci pour votre aide, j’ai corrigé quelques erreurs, mais maintenant voici un autre message d’erreur :

    Warning: copy() [function.copy]: Unable to access in /var/www/data/woo/A/A/8/B/AA8BA43K/contact/upload.php on line 28

    Il se passe un phénomène étrange, j’ai effectué deux essais et je retrouve deux entrées dans ma table ( client_fichier ) mais la date et l’heure sont à zéro.. !
    Et dans la colonne fichier ( BLOB ) il est inscrit blob – 19 Octets !
    Mais il n’y a pas de fichier dans mon dossier fichier_client !

    id_client_fichier date fichier

    1 0000-00-00 00:00:00 [BLOB - 19 Octets]

    2 0000-00-00 00:00:00 [BLOB - 19 Octets]

    Voici mon nouveau 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
     
    <?php
    $host = "localhost";
    $user = "root";
    $password = "";
    $database = "AA8BA43K1";
    $dossier = 'fichier_client/';
    $fichier = basename($_FILES['fichier']['name']);
    $taille_maxi = 100000;
    $taille = filesize($_FILES['fichier']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg');
    $extension = strrchr($_FILES['fichier']['name'], '.'); 
    if(!in_array($extension, $extensions))
    {
         $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)){
    }
         $fichier = strtr($fichier, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     
     if ($tailleMax > $poidsFichier);
    if(copy($nomTemporaire, $chemin.$nomFichier));
    $connexion = mysql_connect($host,$user,$password);
    $choix_base = mysql_select_db($database, $connexion);
    $result = mysql_query("INSERT INTO client_fichier (date, fichier) VALUES ('".$_POST ['fichier']."', NOW())");
     
    if(!$result){
    }
     
    	 if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier));
    	 $deconnexion = mysql_close($connexion);
       print "<script type='text/javascript'>window.location='form.htm'</script>";
       exit;
     
    ?>
    Merci beaucoup

  6. #6
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(copy($nomTemporaire, $chemin.$nomFichier));
    C'est censé faire quoi ca par rapport au move_uploaded_file() deux lignes plus bas ?
    Aucune des variables n'est de plus définie.

  7. #7
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut
    Bonjour,
    Comme j'explique au début de mon souci c'est un sujet que j’ai vraiment du mal à maitriser.
    J’aimerais faire un mélange de tutoriels téléchargés sur developpez.com, mais ça coince.
    J’ai commencé par installer (Upload multiple de fichiers) puis j’ai fait des mélanges avec différents tuto, dont voici les explications.
    D’apparence (Upload multiple de fichiers) fonctionne très bien, je peux insérer plusieurs fichiers et les supprimer un par un, formidable.
    J’ai créé un dossier nommé (fichier_client) sur le serveur pour y recevoir les fichiers.
    J’ai créé une base de données (client_fichier) uniquement pour pouvoir uploader :
    Id_client_fichier ……. smallint …..UNSIGNED……auto_increment
    date………………………….datetime
    fichier………………………blob

    Effectivement j'ai supprimé la ligne et j'ai toujours le même problème, certe, je n'ai plus le message d'erreur....merci bien.
    Mais j'ai une nouvelle ligne n°3 avec pour date 0000 et un fichier de 19 octets..
    Je ne sais pas d'ou il provient, d'autant plus qu'il est virtuel car il n'y a rien..

    id_client_fichier date fichier

    1 0000-00-00 00:00:00 [BLOB - 19 Octets]

    2 0000-00-00 00:00:00 [BLOB - 19 Octets]

    3 0000-00-00 00:00:00 [BLOB - 19 Octets]


    Puisses-tu m'aider dans ma démarche !

    Merci beaucoup

  8. #8
    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
    tu as inversé date et fichier dans la requete, je suppose que tes 19 octets c'est la date

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    2 choses :

    1- pour la date :
    Au lieu de NOW(), regarde du coté de date() :
    http://fr.php.net/manual/en/function.date.php

    2- pour l'image :
    Tu peux :
    a- soit enregistrer l'IMAGE dans un dossier + enregistrer le NOM de l'image dans la BD (dans un champ VARCHAR ou TEXT !)
    b- soit enregistrer la SOURCE de l'image dans la BD (champ BLOB)

    Là, tu fais un drôle de mélange !

    Alors ? choix a- ou b- ??

  10. #10
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut
    Bonjour,

    Effectivement j'ai bien l'impression d'être parti dans tous les sens.
    J'ai changé le code complet en le simplifiant pour l'instant et ça marche.
    J'ai réussi à télécharger mon fichier sur le serveur dans le fichier....:yaisse2
    voici le 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
    <?php
     
    if (is_uploaded_file($_FILES['fichier']['tmp_name'])) 
    {
      move_uploaded_file($_FILES['fichier']['tmp_name'],
            "../fichier_client/".$_FILES['fichier']['name']);
      print("<center><img src='".$_FILES['fichier']['name'].
            "' /></center></hr>");
    }
    else
    {
      die("Problème d'envoi du fichier.");
    }
     
    $liendb = mysql_connect("localhost", "root", "");
    mysql_select_db ("AA7BB59K1");
     
    $sql = "INSERT INTO client_fichier (fichier) VALUES ('".$_REQUEST['fichier']."', '".$_FILES['fichier']['name']."')";
     
     
     
    mysql_close($liendb);
     
       print "<script type='text/javascript'>window.location='mail_1.htm'</script>";
       exit;
    ?>
    Ca marche mais avec ce form tous simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form id="form" action="upload.php" method="post"
     enctype="multipart/form-data"><<input type='file name="fichier"/>
    <input type="submit" value="uploader" /></form>
    Mais dés l'instant ou je me sert du formulaire (Upload multiple de fichiers) et bien ça ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form id="form" action="upload.php" method="post"
     enctype="multipart/form-data"><span
     style="color: rgb(192, 192, 192);">.</span><span
     style="color: rgb(192, 192, 192);" id="input"></span><span
     style="color: rgb(0, 0, 153);"> </span><br />
      <input name="MAX_FILE_SIZE" value="100000"
     type="hidden" /> <input class="btn"
     value="Envoyer" name="fichier" type="submit" /></form>
    A quel niveau de l'input que ça ?

    Merci à votre vous .

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/11/2012, 16h05
  2. Upload parallelle de plusieurs fichiers sur même domain.
    Par Fabouney dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 05/10/2009, 12h05
  3. Réponses: 10
    Dernier message: 12/06/2006, 16h45
  4. [Upload] Uploader plusieurs fichiers de façon aleatoire
    Par derric8016 dans le forum Langage
    Réponses: 3
    Dernier message: 08/03/2006, 17h52
  5. Réponses: 3
    Dernier message: 21/02/2006, 16h43

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