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 :

Exportation en csv


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 51
    Points : 40
    Points
    40
    Par défaut Exportation en csv
    bonjour comment faire pour exporter des données Mysql sous forme CSV en PHP5 selon l'architecture MVC ? dans le Controlleur qu'est ce que j'écris ? et comment je fais l'appel pour que le fichier soit généré?

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Exemple d'un script qui exporte un compteur de visites mysql en proposant un téléchargement de fichier au format csv :

    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
    require('fonctions.php');
    //contient la connexion
     
    $date = date("y-m-d-H-i-s");
     
    $fichier_de_sauvegarde = 'Compteur_Visites-'.$date.'.csv'; 
     
    $sav = filter_input(INPUT_GET, 'sav', FILTER_VALIDATE_INT);
     
    if ($sav == 1)
    {
    	$handle = tmpfile();
    	$info = stream_get_meta_data($handle);
     
    	if($handle)
    		{
    			try
    			{
    				$ressource = \C_PDO::getC()->prepare("SELECT * FROM compteur_visiteurs");
    				$ressource->execute();
     
    				// PDO::FETCH_ASSOC pour récupérer le nom des colonnes avec array_keys
    				$first_line = $ressource->fetch(\PDO::FETCH_ASSOC);
     
    				// Pour indiquer les colonnes avec la première lettre en majuscule
    				$colonnes = array_map('ucfirst',array_keys($first_line));
    				fputcsv($handle, $colonnes, ';');
    				// Première ligne de données
    				fputcsv($handle, $first_line, ';');
     
    				while ($line = $ressource->fetch(\PDO::FETCH_NUM)) 
    				{
    					fputcsv($handle, $line, ';');// notation française avec le point virgule
    				}
     
    				$ressource->closeCursor();
    			}
    			catch(\PDOException $e)
    			{
    				fclose($handle);
    				exit("Erreur de sauvegarde du compteur. Avertir l'administrateur si le problème persiste");
    			}
    		}	 
     
    	$filesize = filesize($info['uri']);
     
     
    	header("Content-Type: application/force-download; name=\"".$fichier_de_sauvegarde."\"");
     
    	header("Content-Transfer-Encoding: text/csv");
    	header("Content-Length: ".$filesize);
    	header("Content-Disposition: attachment; filename=\"".$fichier_de_sauvegarde."\"");
    	header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public");
    	header("Pragma: no-cache"); 
    	header("Expires: 0"); 
     
    	rewind($handle);
    	fpassthru($handle);
    	fclose($handle);
    	exit;
    }

  3. #3
    Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    D'accord merci bien ,ça marche, ça me donne un fichier Excel c'est vrai, mais il y est affiché des messages d'erreurs comme suit :
    <br />
    <b>Notice</b>: Undefined variable: info in <b>C:\xampp\htdocs\Test\models\disque.php</b> on line <b>164</b><br />
    <br />
    <b>Notice</b>: Undefined variable: handle in <b>C:\xampp\htdocs\Test\models\disque.php</b> on line <b>172</b><br />
    <br />
    <b>Warning</b>: rewind() expects parameter 1 to be resource, null given in <b>C:\xampp\htdocs\Test\models\disque.php</b> on line <b>172</b><br />
    <br />
    <b>Notice</b>: Undefined variable: handle in <b>C:\xampp\htdocs\Test\models\disque.php</b> on line <b>173</b><br />
    <br />
    <b>Warning</b>: fpassthru() expects parameter 1 to be resource, null given in <b>C:\xampp\htdocs\Test\models\disque.php</b> on line <b>173</b><br />
    <br />
    <b>Notice</b>: Undefined variable: handle in <b>C:\xampp\htdocs\Test\models\disque.php</b> on line <b>174</b><br />
    <br />
    <b>Warning</b>: fclose() expects parameter 1 to be resource, null given in <b>C:\xampp\htdocs\Test\models\disque.php</b> on line <b>174</b><br />
    sachant que j'ai écrit tous ça dans une fonction Outcsv() au niveau du modéle et au niveau du controleur j'ai écrit une autre fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    au niveau Controleur :
    function generatecsv(){
    	$this->layout = 'layout';
    		$this->loadModel('disque');
    		$dis = new Disque();
    		$disque = $dis->OutCSV();
    		echo jason_encode(0);
    		exit;
    	}
    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
     au niveau Model:
    function OutCSV() {
    	$cnx = new Connection();
    	$date = date("y-m-d H:i:s");
    	$fichier_de_sauvegarde = 'Test '.$date.'.csv'; 
    	$sav = filter_input(INPUT_GET, 'sav', FILTER_VALIDATE_INT); 
    	if ($sav == 1)
    	{
    	$handle = tmpfile();
    	$info = stream_get_meta_data($handle);
    	if($handle)
    	try
    	 {
    	$ressource = \C_PDO::getC()->prepare("SELECT * FROM disque");
           // $stmt =$cnx->getDB()->query("SELECT * FROM disque");
    		$ressource->execute();
    		$first_line = $ressource->fetch(\PDO::FETCH_ASSOC);// PDO::FETCH_ASSOC pour récupérer le nom des colonnes avec array_keys
    		// Pour indiquer les colonnes avec la première lettre en majuscule
    		$colonnes = array_map('ucfirst',array_keys($first_line));
    		// Pour indiquer les colonnes avec la première lettre en majuscule
    		fputcsv($handle, $colonnes, ';');
    		// Première ligne de données
    		fputcsv($handle, $first_line, ';');
     		while ($line = $ressource->fetch(\PDO::FETCH_NUM)) 
    				{
    					fputcsv($handle, $line, ';');// notation française avec le point virgule
    				}
    				$ressource->closeCursor();
    			}
    		catch(\PDOException $e)
    			{
    				fclose($handle);
    				exit("Erreur de sauvegarde du compteur. Avertir l'administrateur si le problème persiste");
    			}
    		}	 
    		$filesize = filesize($info['uri']);
    	header("Content-Type: application/force-download; name=\"".$fichier_de_sauvegarde."\"");
    	header("Content-Transfer-Encoding: text/csv");
    	header("Content-Length: ".$filesize);
    	header("Content-Disposition: attachment; filename=\"".$fichier_de_sauvegarde."\"");
    	header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public");
    	header("Pragma: no-cache"); 
    	header("Expires: 0"); 
    	rewind($handle);
    	fpassthru($handle);
    	fclose($handle);
    	exit;
    }

  4. #4
    Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    les variables handle et infos sont inconnus pour lui , je les déclare ou quoi!

Discussions similaires

  1. [SQLEXP2005]Import / Export depuis csv ou texte
    Par Davboc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/04/2007, 11h29
  2. Réponses: 1
    Dernier message: 26/03/2007, 10h47
  3. [sql][débutant] export de csv vers ftp ?
    Par Christophe93250 dans le forum Access
    Réponses: 1
    Dernier message: 25/06/2006, 13h50
  4. export fichier csv
    Par moncanard dans le forum Documents
    Réponses: 14
    Dernier message: 18/05/2006, 13h37
  5. [10g] Outil import/export DB/CSV, XML => BPEL ?
    Par lex0072 dans le forum Oracle
    Réponses: 2
    Dernier message: 28/09/2005, 10h38

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