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 :

Recherche de solution concernant un export CSV [PHP 5.0]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 105
    Par défaut Recherche de solution concernant un export CSV
    Bonjour à tous,

    Je rencontre un souci sur un export CSV.
    J'utilise ma fonction sur de nombreux export et fonctionne dans tout les cas,
    sauf 1 seul, lorsque je dois exporter plus de 12000 lignes.

    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
     
     
    // On crée le fichier temp et on l'ouvre en écriture
    		$tmpFile = tempnam('/tmp', 'ExtractionAbonnement--');
    		$handle = fopen($tmpFile, "w");
     
    		// On récupère chaque ligne du résultat
    		$colonne = 0;
    		while($ligne = $sth->fetch(PDO::FETCH_ASSOC)){
    			// On écrit la ligne des colonnes
    			if($colonne == 0){
    				foreach($ligne as  $col => $val){
    					// On écrit une ligne de resultat
    					fwrite($handle, "$col;");
    				}
    				fwrite($handle, "\n");
    				$colonne = 1;
    			}
     
    			// On écrit une ligne de resultat
    			foreach($ligne as  $col => $val){	
    				$val = FormatExport($val);
    				fwrite($handle, "$val;");
    			}
    			fwrite($handle, "\n");
    		}
     
    		//echo $handle;
     
    		// On transfère le contenu du fichier dans un tableau
    		$tabFile = file($handle);
                    //$tabFile = fgets($handle,16384);
    		//$tabFile = fgets($tmpFile);
    		// On parcours le tableau
    		 $i=0;
    		while($i < count($tabFile)){
    			echo $tabFile[$i];
    			$i++;
    		} 
    		//copy($tmpFile,"/tmp/exportAbo.csv");
    		// On ferme et détruit le fichier
    		fclose($handle);
    		unlink($tmpFile);
    Le fichier est correctement créé et rempli dans le dossier /tmp, mais ne s'ouvre pas, contrairement aux autres cas d'utilisation.
    Cette même fonction fonctionne lorsque je réduis le nombre de valeur utilisée en dessous de 12000 lignes.

    J’espère avoir été clair dans mon explication.

    Nheil

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut ajout code
    pourquoi t'utilises pas fputcsv ?
    utilise aussi direct tmpfile


    juste ca suffis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $handle = tmpfile();
     
    while($ligne = $sth->fetch(PDO::FETCH_ASSOC))
    {
        fputcsv($handle, $ligne, ';');
    }

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 105
    Par défaut
    utilise aussi direct tmpfile
    Comment veux tu que j'utilise directement tmpfile?
    Je suis bien obligé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $handle = fopen($tmpFile, "w");
    pour pouvoir écrire dans le fichier.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Nheil Voir le message
    Comment veux tu que j'utilise directement tmpfile?
    Je suis bien obligé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $handle = fopen($tmpFile, "w");
    pour pouvoir écrire dans le fichier.

    non tmpfile te revoie direct la ressource, lis bien la doc

    tmpfile ca reviens a ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function tmpfile() {
        $tmp = tempnam(sys_get_temp_dir());
        $handle = fopen($tmp, 'w+');
        return $handle;
    }

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 105
    Par défaut
    Mais comment expliques tu que l'ensemble de mon code fonctionne, sauf dans le cas ou je retourne plus de 12000 lignes ?

    Comme expliqué précédemment le fichier est bien créé dans /tmp, même avec 12000 lignes, mais l'ouverture ne fonctionne pas, 'la page n'a pas été trouvé'

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Nheil Voir le message
    Mais comment expliques tu que l'ensemble de mon code fonctionne, sauf dans le cas ou je retourne plus de 12000 lignes ?

    Comme expliqué précédemment le fichier est bien créé dans /tmp, même avec 12000 lignes, mais l'ouverture ne fonctionne pas, 'la page n'a pas été trouvé'
    peu etre pas asser de memoire, commence a ecrire ton code en plus simple et plus propre, par exemple a quoi sert ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $tabFile = file($handle);
    //$tabFile = fgets($handle,16384);
    //$tabFile = fgets($tmpFile);
    // On parcours le tableau
    $i=0;
    while($i < count($tabFile)){
        echo $tabFile[$i];
        $i++;
    }
    tu creer un fichier, tu le ferme et tu le reouvre pour allé prendre les meme information que t'as insérer plus haut ???

    EDIT : de plus tu fait file($handle) alors que file attendre le nom du fichier et pas une ressource ? t'es sur d'avoir les erreurs d'active sur ton PHP ?

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/07/2006, 08h06
  2. Export CSV
    Par LeCaméléon dans le forum XMLRAD
    Réponses: 3
    Dernier message: 18/04/2006, 15h32
  3. [EXPORT] CSV
    Par sleepy2002 dans le forum Oracle
    Réponses: 2
    Dernier message: 03/04/2006, 11h14
  4. Export CSV
    Par lapartdombre dans le forum Documents
    Réponses: 12
    Dernier message: 17/10/2005, 15h46
  5. Export CSV de champs qui contiennent des ";"
    Par boteha dans le forum Outils
    Réponses: 4
    Dernier message: 19/09/2005, 20h05

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