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 :

Extraire contenu tablea en CSV + Header


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Par défaut Extraire contenu tablea en CSV + Header
    Bonjour,

    J'ai un tableau que j'ai placé dans une session :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $TableBody ="
    <tr><td>1</td><td>TOTO</td></tr><tr><td>2</td><td>TUTU</td></tr><tr><td>3</td><td>TITI</td></tr>";
     
    $_SESSION['To Extract'] = $TableBody;
    Je voudrais extraire le contenu du tableau dans un CSV.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if(isset($_POST['ExtractCSV']))
    				{
     
     
    					$ExtractCSV = Extract_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
     
    function Extract_CSV()
    {
    	$datetime = date("Y_m_d - H_i_s");
    	header("Content-Type: application/csv-tab-delimited-table");
    	header("Content-disposition: attachment; filename='$datetime'.csv");
    	//var_dump(htmlspecialchars($_SESSION['To Extract']));
    	//echo htmlspecialchars($_SESSION['To Extract']);
     
    	$test = explode("&lt;/tr&gt;", htmlspecialchars($_SESSION['To Extract']));
    	//on affiche le résultat dans un tableau
     
    	//on affiche tout les résultats
    	foreach($test AS $variable => $valeur)
    	{
    	$valeur = trim(str_replace('&lt;tr&gt;', '', $valeur));
    	$valeur = trim(str_replace('&lt;/tr&gt;', '', $valeur));
    	$valeur = trim(str_replace('&lt;td&gt;', '', $valeur));
    	$valeur = trim(str_replace('&lt;/td&gt;', ';', $valeur));
     
    	//ob_clean();
    	echo $valeur;
    	}
     
    	return $ExtractCSV;
    }
    Ma fonction s’exécute correctement mais en résultat ca m'exporte un csv avec tout mon code HTML dedans et je ne comprend pas.

    Merci d'avance pour votre aide.

  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
    Par défaut
    Ton code tel quel tu l'as ecris, fonctionne chez moi

    Par contre plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $TableBody ="<tr><td>1</td><td>TOTO</td></tr><tr><td>2</td><td>TUTU</td></tr><tr><td>3</td><td>TITI</td></tr>";
     
    $datetime = date("Y_m_d-H_i_s");
    header("Content-Type: application/csv-tab-delimited-table");
    header('Content-disposition: attachment; filename='.$datetime.'.csv');
    preg_match_all('#<td>(.+)</td>#U',$TableBody, $matches);
    echo implode(";",$matches[1]);
    on peut se demander par contre pourquoi tu as besoin de travailler sur un bout de code HTML :
    - soit tu parses un page HTML externe et alors il faut utiliser les bibliothéques prévues pour.
    - soit c'est un tableau dont tu es l'auteur et alors il faut travailler sur les données sources et pas sur un résultat.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Par défaut
    Merci pour ta réponse sabotage.

    Chez moi lorsque j'ouvre le csv dans excel ou avec notepad j'ai bien les données demandées, mais j'ai aussi le code html qui s'affiche dedans :

    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">	
    <html xmlns="http://www.w3.org/1999/xhtml">	
        <head> 	
    "		<meta http-equiv=""content-type"" content=""text/html"	 charset=iso-8859-1" />
    "		<link href=""css/style.css"" rel=""stylesheet"" type=""text/css"" />"	
    "		<title>Patch Management Site</title>"	
    "	</head>"	
    <body>	
    "	<div id=""top""></div>"	
    <div id="menu">	
    "	<ul>"	
    "		<li><a class=""a_bleu"" href=""index.php?page=Home"" title=""Home"">Home</a></li>"	
    "		<li><a class=""a_bleu"" href=""index.php?page=Security Bulletins"" title=""Security Bulletins"">Security Bulletins</a></li>"	
    "		<li><a class=""a_bleu"" href=""index.php?page=Team"" title=""Team"">Servers By Team</a></li>"	
    "		"	
    "		<li> <a class='a_bleu' href='index.php?page=Logon' title='Logon'>Logon</a></li>		"
    Idem avec ton code et la regexp beaucoup plus simple j'avoue.

    Merci d'avance.

  4. #4
    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
    Par défaut
    Comme je t'ai dit, si tu as une page HTML entière, il faut utiliser des bibliothèques de découpage adaptées :
    http://eusebius.developpez.com/php5dom/
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Par défaut
    non, mais tu as raison, c'est une page html que je génère donc je vais travailler sur la source comme ca :

    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
     
    $TableBody .= "
    						<tr>
    						<td>".$count."</td>
    						<td>".$champs[2]."</td>
    						<td>".$champs[4]."</td>
    						<td>".$champs[5]."</td>
    						<td>".$champs[8]."</td>
    						<td>".$champs[9]."</td>
    						<td>".$champs[11]."</td>
    						<td>".$champs[12]."</td>
    						<td>".$champs[14]."</td>
    						<td>".$champs[18]."</td>
    						<td>".$champs[19]."</td>
    						<td>".$champs[20]."</td>
    						<td>".$champs[22]."</td>
    						<td>".$champs[23]."</td>
    						<td>".$champs[25]."</td>
    						<td>".$champs[26]."</td>
    						<td>".$champs[27]."</td>
    						<td>".$champs[28]."</td>						
    						</tr>";	
     
     
    						$File = trim(str_replace('<td>', '', $TableBody));
    						$File = trim(str_replace('</td>', ';', $File));
    						$File = trim(str_replace('<tr>', '', $File));
    						$File = trim(str_replace('</tr>', '\r\n', $File));
    Cependant, peux importe ce que j'exporte j'ai quand même mon code html dedans ...

    Meme si je fais ca j'ai du html dedans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function Extract_CSV()
    {
    	$datetime = date("Y_m_d-H_i_s");
    	header("Content-Type: application/csv-tab-delimited-table");
    	header('Content-disposition: attachment; filename='.$datetime.'.csv');
    	echo "toto";
    }

  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
    Par défaut
    Ta vie doit être compliqué si tu prends les problèmes à l'envers tout le temps ; : tu as des données et tu en fais un tableau HTML ... si maintenant tu veux faire un CSV, repars des données, pas du tableau HTML.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $data = array($count, $champs[2], $champs[4], $champs[5], $champs[8], $champs[9], $champs[11], $champs[12], $champs[14], $champs[18], $champs[19], $champs[20], $champs[22], $champs[23], $champs[25], $champs[26], $champs[27], $champs[27]);
     
    $TableBody = '<tr><td>' . implode('</td><td>', $data) . '</td></tr>';
    Je suppose que tu n'as pas "compartimenté" l'affichage du HTML et du CSV et donc que les deux se font l'un après l'autre.
    Le plus simple est d'arrêter le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function Extract_CSV()
    {
    	$datetime = date("Y_m_d-H_i_s");
    	header("Content-Type: application/csv-tab-delimited-table");
    	header('Content-disposition: attachment; filename='.$datetime.'.csv');
    	$File = implode(';', $data)
            exit();
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Extraire contenu balise XMLNS
    Par SgtBor dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 13/04/2010, 12h05
  2. COPY equivalent WITH CSV HEADER sous postgres 7.4 ?
    Par Yoite dans le forum Débuter
    Réponses: 4
    Dernier message: 07/10/2009, 09h46
  3. Contenu central adaptable avec header et footer fixes
    Par kayoum dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 29/09/2009, 19h39
  4. Extraire contenu texte dans champs objet fichier
    Par marcl1 dans le forum Développement
    Réponses: 7
    Dernier message: 09/06/2009, 23h10
  5. [ODP] extraire contenu odp avec java
    Par diarbenn dans le forum Documents
    Réponses: 1
    Dernier message: 22/01/2009, 23h27

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