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 :

Upload fichier CSV


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 105
    Points : 49
    Points
    49
    Par défaut Upload fichier CSV
    Bonjour je rencontre un petit souci pour un upload de 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
     
     
    <html>
    <body>
          <!-- Formulaire -->
          <!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" -->
          <form method="POST" action="data/eligibilite/uploadcsv.php" enctype="multipart/form-data">
          <!-- Limiter la taille des fichiers à 500Ko -->
          <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
          <fieldset>
          <legend>Envoi de fichiers</legend>
          <!-- champs d'envoi de fichier, de type file -->
          <p><label for="fichierCsv">Photo :</label><input type="file" name="fichierCsv" /></p>
          <!-- bouton d'envoi -->
          <p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
          </legend>
          </fieldset>
          </form> </body>
    	  </html>
    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
     
    include ('../../include.php');
     
    // Vérification de l'existance d'une session
    VerifSession();
     
    echo $_FILES['fichierCsv']['tmp_name'];echo'<br>';
    echo $_FILES['fichierCsv']['error'];echo'<br>';
    if(isset($_FILES['fichierCsv']))
    {
        $upload='./csv';
        $temp=$_FILES['fichierCsv']['tmp_name'];
        if(move_uploaded_file($temp, $upload.'/'.$_FILES['fichierCsv']['name']))
            {
                $handle=fopen($upload.'/'.$_FILES['fichierCsv']['name'], 'r');
                while (($line = fgetcsv($handle, 1000, ";")) !== FALSE)
                {
                    $i=0;
    				while($i<count($line))
    				{
    				echo $line[$i].' ';
                    $i++;
    				}
    				echo '<br/>';
                }
                fclose($handle);
            }
           else
           {
               echo 'Echec lors de l\'envoie du fichier';
           }
    }
     
          ?>
    Et voila le retour que j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    /tmp/php4aNlaW
    0
    Echec lors de l'envoie du fichier
    Que pourrais vérifier afin de comprendre pourquoi mon upload ne se fait pas?

  2. #2
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Peut-être que l'accès en écriture au répertoire ./csv/ est impossible.

    Quels sont ses droits actuels ?

  3. #3
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 105
    Points : 49
    Points
    49
    Par défaut
    Les accès sont correct.
    Mais je viens de penser à quelque chose.
    Suis-je obligé de déplacer mon fichier pour en afficher son contenu?
    Ne puis-je pas directement le traité au moment de l'upload?

  4. #4
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 105
    Points : 49
    Points
    49
    Par défaut
    J'ai résolu mon souci.
    Un problème dans l'accès au fichier.

    Merci je passe en résolu

  5. #5
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 105
    Points : 49
    Points
    49
    Par défaut
    Je réouvre mon sujet car finalement je me suis caché le problème en travaillant toujours sur le même fichier qui était présent déjà dans mon dossier.

    J'ai un formulaire d'upload de fichier avec une vérif javascript:

    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
     
     
    	var contentDemandeurHtml = '<form method="POST" name="formulaire" id="form" action="data/eligibilite/uploadcsv.php" enctype="multipart/form-data">'
    		  +'<table>'
    		  +'<tr>'
    		  +'<td><div style="font-family: Arial;font-size:12px;"> Email : </div></td><td><input type="text" name="email" /></td>'
    		  +'</tr><tr>'
              +'<td><div style="font-family: Arial;font-size:12px;">Fichier CSV : </td><td><input type="file" name="fichierCsv" id="csv"/> <a href="include/commun/fichierCSV.csv"><img src="include/images/page_excel.png" title="Fichier CSV type"></a></td>' 
    		  +'</tr><tr>'		  
              +'<td></td><td></td><td><input type="button" value="Envoyer votre fichier" onclick="verifier();"/></td>'
    		  //+'<td></td><td></td><td><div id="test" name="test" />'
    		  +'</tr>'
    		  +'<table>'
    +'</form>';
     
     
    function verifier()
                {
    				var email = document.formulaire.email.value;
    				var verif = /^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$/
    				var typemime=document.getElementById('csv').value.split('.');
     
    				if(verif.exec(email) == null)
    				{
    					Ext.Msg.alert('Erreur formulaire', 'Email non valide');
     
    				}
                    if(typemime.length!=0 && verif.exec(email) != null)
                        {
                            if(typemime[typemime.length-1].toLowerCase()!='csv')
                            {
    							Ext.Msg.alert('Erreur formulaire', 'Fichier csv Invalide');
    						}
                            else
                            {
                                document.forms[0].submit();
                            }
                        }
                }
    Et ensuite je traite les données de mon formulaire en php.
    Le but est de récupéré les valeurs de mon fichier csv et de les insérées en base.


    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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
     
    <?php
     
    include ('../../include.php');
     
    // Vérification de l'existance d'une session
    VerifSession();
    $email = $_POST['email'];
    $idtable = uniqid();
    $idtable = $email.'|'.$idtable;
    // Connexion à la base de donnée
    $dbh = ConnectDB();
     
    //echo $_FILES('fichierCsv');
     
    if(isset($_FILES['fichierCsv']))
    {	
    	// Récupération du fichier passer en upload dans le formulaire
        $handle=fopen($_FILES['fichierCsv']['name'], 'r');
        while (($line = fgetcsv($handle, 1000, ";")) !== FALSE)
    	{
    			$tab[0] = $line[1];
    			$tab[1] = $line[2];
     
    		// CONVERSION LAMBERT
     
    		//0)degres-minutes-secondes + orientation (d,m,s,o) en radian
    	      $lambda_w = $tab[1] * pi()/180 ;
    	      $phi_w =  $tab[0] * pi()/180 ;
     
    	      //1) coordonnées géographiques WGS84 (phi_w,lambda_w) en coordonnées cartésiennes WGS84 (X_w,Y_w,Z_w)
    	      $a_w = 6378137.0;
    	      $b_w = 6356752.314;
    	      $e2_w = ($a_w*$a_w-$b_w*$b_w)/($a_w*$a_w);
     
    	      //et on a la grande normale de l'ellipsoide WGS84
    	      $N = $a_w/sqrt(1-$e2_w*pow(sin($phi_w),2));
     
    	      //ainsi on obtient
    	      $X_w = $N * cos($phi_w) * cos($lambda_w);
    	      $Y_w = $N * cos($phi_w) * sin($lambda_w);
    		 $Z_w = $N * (1-$e2_w) * sin($phi_w);
     
    	      //2) coordonnées cartésiennes WGS84 (X_w,Y_w,Z_w) en coordonnées cartésiennes NTF (X_n,Y_n,Z_n)
    	     $dX = 168.0;
    	     $dY = 60.0;
    	     $dZ = -320.0;
    	     $X_n = $X_w + $dX;
    	     $Y_n = $Y_w + $dY;
    	     $Z_n = $Z_w + $dZ;
     
    	      //3) coordonnées cartésiennes NTF (X_n,Y_n,Z_n) en coordonnées géographiques NTF (phi_n,lambda_n)
    	      $a_n = 6378249.2;
    	      $b_n = 6356515.0;
    	      $e2_n = ($a_n*$a_n-$b_n*$b_n)/($a_n*$a_n);
     
    	      //on définit une tolérance de convergence
    	      $epsilon = pow(10,-10);
     
    	      //puis on amorce une boucle de calcul        
    	      $p0=atan($Z_n/sqrt($X_n*$X_n+$Y_n*$Y_n)*(1-($a_n*$e2_n)/(sqrt($X_n*$X_n+$Y_n*$Y_n+$Z_n*$Z_n))));
     
    	      $p1=atan(($Z_n/sqrt($X_n*$X_n+$Y_n*$Y_n))/(1-($a_n*$e2_n*cos($p0))/(sqrt(($X_n*$X_n+$Y_n*$Y_n)*(1-$e2_n*pow(sin($p0),2))))));
     
    	      while(!(abs($p1-$p0)<$epsilon)){
    	         $p0 = $p1;
    	         $p1 = atan(($Z_n/sqrt($X_n*$X_n+$Y_n*$Y_n))/(1-($a_n*$e2_n*cos($p0))/(sqrt(($X_n*$X_n+$Y_n*$Y_n)*(1-$e2_n*pow(sin($p0),2))))));
    	       }
     
    	       $phi_n = $p1;
    	       $lambda_n = atan($Y_n/$X_n);
     
    	      //4) coordonnées géographiques NTF (phi_n,lambda_n) en coordonnées projetées en Lambert II étendu (X_l2e, Y_l2e)
    	       $n = 0.7289686274;
    	       $c = 11745793.39;
    	       $Xs = 600000.0;
    	       $Ys = 8199695.768;
     
    	       $e_n = sqrt($e2_n);
    	       $lambda0 = 0.04079234433198;   //correspond à la longitude en radian de Paris (2°20'14.025" E) par rapport à Greenwich
     
    	       //puis on calcule la latitude isométrique
    	       $L = log(tan(pi()/4 + $phi_n/2) * pow(((1-$e_n*sin($phi_n))/(1+$e_n*sin($phi_n))),($e_n/2)));
     
    	       //enfin on projette
    	       $X_l2e = $Xs + $c*exp((-$n*$L))*sin($n*($lambda_n-$lambda0));
    	       $Y_l2e = $Ys - $c*exp((-$n*$L))*cos($n*($lambda_n-$lambda0));
     
    		   $X_l2e = round($X_l2e,2);
    		   $Y_l2e = round($Y_l2e,2);
     
    		   $tab[0] = $X_l2e;
    		   $tab[1] = $Y_l2e;
     
    		$id = $line[0];
    		$dept = $line[3];
    		//requete d'insertion en base
    		//$req = "EXEC sp_Extranet_InsertEligCSV '$id','$tab[0]','$tab[1]','$dept','$idtable'";
    		// Insertion en base de donnée
    		// Execution de la requête
    					echo $id;
    			echo $tab[0];
    			echo $tab[1];
    			echo $dept;
    			echo $idtable;
    		//$sth = $dbh->query($req);
    		//$result = $sth->fetchAll(PDO::FETCH_ASSOC);  
    	}
    	fclose($handle);
    }
    // Deconnexion de la base de donnees
    $dbh = null;
    ?>
    Et je me récupère des erreurs de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Warning: fopen(eligmasse.csv): failed to open stream: No such file or directory in /srv/www/extranet-dev/data/eligibilite/uploadcsv.php on line 18 Warning: fgetcsv() expects parameter 1 to be resource, boolean given in /srv/www/extranet-dev/data/eligibilite/uploadcsv.php

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

Discussions similaires

  1. [PrestaShop] Upload fichier CSV
    Par Merevinh dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 12/03/2013, 12h25
  2. Réponses: 3
    Dernier message: 01/09/2012, 10h30
  3. [MySQL] upload fichier format csv au lieu jpg es possible ?
    Par Debutant10 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/05/2012, 23h15
  4. [PHP 5.1] Upload d'un fichier CSV de taille importante et temps d'exécution.
    Par marcandre dans le forum Langage
    Réponses: 2
    Dernier message: 10/11/2011, 13h01
  5. [Struts][Oracle]Upload fichier word dans une base
    Par Maximil ian dans le forum Struts 1
    Réponses: 7
    Dernier message: 10/02/2004, 16h52

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