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 :

formulaire envoi de fichier [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut formulaire envoi de fichier
    Bonjour,

    n'ayant pas tous les droits chez mon hébergeur pour envoyer un fichier facilement qui mettra à jour une base de données j'avais opté pour une commande pour contourner le problème.

    formulaire d'envoi de fichier qui est donc uploadé dans un dossier. puis le fichier est décortiqué et met à jour la table.

    le hic j'ai 2 formulaires d'envoi de fichiers différents dans la même page web. autant le 1er fonctionne correctement (le fichier est bien envoyé dans le dossier) et la BDD est mise à jour.

    pour le 2ème formulaire (j'ai fait un copié collé de l'ensemble du code en modifiant le nom des variables (avec un 2 en plus) et les champs de formulaire)
    >> le fichier ne s'uploade pas et je n'ai pas de message d'erreur.

    en collant via le ftp le fichier dans le dossier, il est bien décortiqué et la BDD bien écrite (hormis le fait qu'il me rajoute une ligne 0 à l'affichage du tableau dans la page web ou je l'affiche) mais c'est gênant mais pas très grave...

    je vous mets le code complet ci-dessous je ne vois pas où j'ai pu faire une erreur (rappel , je suis un débutant !!)

    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
    <div class="instructions5">
    		5) Choisir un fichier à envoyer pour mettre à jour la liste des concours <br /><br />  
    <?php
    		if(isset($_FILES2['fichier2'], $_POST2['envoyer2']))
    {
    //on efface la table compta avant d'inscrire les données
    $sql2="TRUNCATE concours";
    $result2=mysql_query($sql2);
     
     
    $dossier2 = 'filec/';
    $fichier2 = basename($_FILES2['fichier2']['name']);
    $taille_maxi2 = 100000;
    $taille2 = filesize($_FILES2['fichier2']['tmp_name']);
    $extensions2 = array('.csv', '.txt');
    $extension2 = strrchr($_FILES2['fichier2']['name'], '.'); 
    //Début des vérifications de sécurité...
    if(!in_array($extension2, $extensions2)) //Si l'extension n'est pas dans le tableau
    {
         $erreur2 = 'Vous devez uploader un fichier de csv...';
    }
    if($taille2>$taille_maxi2)
    {
         $erreur2 = 'Le fichier est trop gros...';
    }
    if(!isset($erreur2)) //S'il n'y a pas d'erreur, on upload
    {
         //On formate le nom du fichier ici...
         $fichier2 = strtr($fichier2, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier2 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier2);
         if(move_uploaded_file($_FILES2['fichier2']['tmp_name'], $dossier2 . $fichier2)) //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 $erreur2;
    }
    }
    	//Le chemin d'acces au fichier sur le serveur
    $fichier2 = fopen("filec/concours.csv", "r"); 
     
    //tant qu'on est pas a la fin du fichier :
    while (!feof($fichier2)) 
    { 
    // On recupere toute la ligne
    $uneLigne2 = fgets($fichier2, 1024);
    //On met dans un tableau les differentes valeurs trouvés (ici séparées par un ';') 
    $tableauValeurs2 = explode(';', $uneLigne2); 
    // On  crée la requete pour inserer les donner (ici il y a 8 champs donc de [0] a [7])
    $sql2="REPLACE INTO concours VALUES ('".$tableauValeurs2[0]."', '".$tableauValeurs2[1]."', '".$tableauValeurs2[2]."', '".$tableauValeurs2[3]."', '".$tableauValeurs2[4]."', '".$tableauValeurs2[5]."', '".$tableauValeurs2[6]."', '".$tableauValeurs2[7]."')"; 
    $req2=mysql_query($sql2); 
    // la ligne est finie donc on passe a la ligne suivante (boucle)
    }
    ?>	
    		<form method="POST" action="" enctype="multipart/form-data">
    			<div class="bouton2">
    			<label for="fichier2">Choix fichier:</label><input type="file" name="fichier2" value="" id="fichier2" /><br /><br /> 
    			<input type="submit" value="Envoyer Fichier 2" name="envoyer2" id="envoyer2" />
    			</div>
    		</form>	
    	</div>

    pour l'autre partie qui elle fonctionne (et qui est dans la même page, c'est important je pense)
    voici le code qui est peu ou prou identique.

    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
    <div class="instructions4">
    		4) Choisir un fichier à envoyer pour mettre à jour la page comptabilité <br /><br />  
    <?php
    		if(isset($_FILES['fichier'], $_POST['envoyer']))
    {
    //on efface la table compta avant d'inscrire les données
    $sql="TRUNCATE compta";
    $result=mysql_query($sql);
     
     
    $dossier = 'file/';
    $fichier = basename($_FILES['fichier']['name']);
    $taille_maxi = 100000;
    $taille = filesize($_FILES['fichier']['tmp_name']);
    $extensions = array('.csv', '.txt');
    $extension = strrchr($_FILES['fichier']['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 csv...';
    }
    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['fichier']['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;
    }
    }
    	//Le chemin d'acces au fichier sur le serveur
    $fichier = fopen("file/compta.csv", "r"); 
     
    //tant qu'on est pas a la fin du fichier :
    while (!feof($fichier)) 
    { 
    // On recupere toute la ligne
    $uneLigne = fgets($fichier, 1024);
    //On met dans un tableau les differentes valeurs trouvés (ici séparées par un ';') 
    $tableauValeurs = explode(';', $uneLigne); 
    // On  crée la requete pour inserer les donner (ici il y a 4 champs donc de [0] a [3])
    $sql="REPLACE INTO compta VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."')"; 
    $req=mysql_query($sql); 
    // la ligne est finie donc on passe a la ligne suivante (boucle)
    }
    ?>	
    		<form method="POST" action="" enctype="multipart/form-data">
    			<div class="bouton">
    			<label for="fichier">Choix fichier:</label><input type="file" name="fichier" value="" id="fichier" /><br /><br /> 
    			<input type="submit" value="Envoyer Fichier 1" name="envoyer" id="envoyer" />
    			</div>
    		</form>	
    	</div>
    n'hésitez pas si vous avez l'oeil pour voir ou j'ai cafouillé, car là je m'arrache les cheveux !

    merci d'avance.

    Bruno

  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
    Tu y as été un peu fort sur les 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_FILES['fichier2'], $_POST['envoyer2']))
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    c'est possible mais je ne comprend pas tout...

    en fait je voulais bien séparer les 2 formulaires en les rendant bien distincts pour éviter que ça cafouille après

    (je suis un noob bien comme il faut)

    donc j'ai refait les id et divers valeurs et variables et ça fonctionne....

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/04/2012, 10h54
  2. Formulaires envoi de fichiers et infos
    Par ptinavir dans le forum Langage
    Réponses: 1
    Dernier message: 17/10/2010, 10h18
  3. erreur fopen - formulaire + envoi de fichier
    Par koma777 dans le forum Langage
    Réponses: 9
    Dernier message: 20/02/2010, 00h16
  4. envoie de fichiers via les formulaires
    Par fabogranqi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 10/10/2004, 21h34

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