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 :

problème d'export du contenu de <textarea> vers un fichier csv [ODBC]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Par défaut problème d'export du contenu de <textarea> vers un fichier csv
    Bonjour,

    Je fait une exportation des résultats d'une requête dans un fichier csv.
    Mon problème se trouve au niveau des données issues d'un formulaire <textarea> où on a écrit à la ligne

    ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $req="select nomP, prenomP, rue from patient where IdPatient=55 or IdPatient=52";
    $res=odbc_exec($connexion, $req);
    résultats :

    nomP prenomP rue
    abdoul jabar 20 av de la pradel bat B2 apt 66 res la source
    rabe toko 20 r de la brousse bat B4 res la belle vue

    C'est la 'rue' qu'on a saisi dans une zone <textarea> et en allant à la ligne

    Code pour l'exportation

    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
     
    header("Content-Type: application/csv-tab-delimited-table");   
    header("Content-disposition: filename=ResultatExtraction.csv");   
     
    //s'il existe des résultats 
    if (odbc_num_rows($res) != 0)
    {   
    	// titre des colonnes   	
    	$fields = odbc_num_fields($res);
    	$i = 1;   
    	while ($i <= $fields)
    	{  
    		//les noms des champs comme titre		
    		print odbc_field_name($res, $i).";"; 		  
    		$i++;   
    	}	
    	print "\n";
     
    	// données de la table
    	while ($arrSelect = odbc_fetch_array($res))
    	{  
    		foreach($arrSelect as $elem)
    		{  	
    			print "$elem;";		
    		}			
    		print "\n";
    	}   	
    }
    résultats dans le fichier csv, dans une table excel, ça donne ça:

    nomP prenomP rue
    abdoul jabar 20 av de la pradel
    bat B2 apt 66 res la source
    rabe toko 20 r de la brousse
    bat B4
    res la belle vue


    pourtant dans internet expolrer, cela donne bien


    nomP;prenomP;rue; abdoul;jabar;20 av de la pradel bat B2 apt 66 res la source; rabe;toko;20 r de la brousse bat B4 res la belle vue;

    Je ne comprend pas pourquoi quand on va à la ligne dans un <textarea>, il va directement à la ligne dans une autre case dans le fichier csv.

    Merci de votre aide

  2. #2
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut
    Lorsque du texte est sais dans un textarea, il est transmis tel quel au serveur.

    Du coup, si tu reviens à la ligne dans un textarea, le navigateur transmet au serveur un caractere de retour à la ligne : \n

    Or, les retours à la ligne ne sont pas interpretés par les navigateurs lors de l'affichage d'informations. Donc, dans IE, tu vois tout sur une meme ligne

    Par contre, Excel les interprete, donc il y a un retour à la ligne.

    Plusieurs solutions :

    Lors de l'export vers le CSV, tu remplace tous les \n par des espaces = plus de retour à la ligne

    Ou alors

    Lors de l'affichage dans le navigateur, tu affiche entre les balises <pre> et </pre> afin d'interpreter tous les caracteres et donc les retours à la lignes.

    Tu verra que le meme probleme se pase avec les espaces : si tu saisi plusieurs espace à la suite dans le textarea, seul excel les affichera.

    En gros, un <textarea> envoit un texte "brut" et non pas formaté en HTML

    Pour mémoire, un retour à la ligne en HTML s'ecrit <br> un espace s'écrit &nbsp; et ainsi de suite...


    PS : je ne suis plus sûr, mais il est possible que tu doive remplacer non seulement le caractere \n mais aussi le caractere \r, l'un est le retour chariot, l'autre le retour à la ligne.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Par défaut
    Merci de ces explication.

    Lors de l'export vers le CSV, tu remplace tous les \n par des espaces = plus de retour à la ligne

    Comment faire ça sur les données provenant de la requete?

  4. #4
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut
    Si tu fait en PHP, l'usage de str_replace devrait le faire

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Par défaut
    Je ne m'en sort pas

    je récupère l'adresse (rue)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $rue=$_POST['rue'];
    puis je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $espace = array("\n", "\r", "\s", "\t");	
    $Ruebase=str_replace($espace, " ", "$rue");
    $_SESSION['rue']=$RueBase;
    puis dans une autre page de script d'insertion dans la base, je fais
    $rue=$_SESSION['rue']

    et c'est $rue que j'insert dans la base. Et il gadre quand même les retours chariot!!!

    pourtant quand j'affiche $RueBase même entre balise <pre></pre>, il m'a bien enlevé le retour chariot.

  6. #6
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut
    Essaie en faisant

    $rueInsertion = $_SESSION['rue'];

    Si ca marche, c'est que tu as register_globals = ON dans la config de ton serveur, sinon je vois pas trop....

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

Discussions similaires

  1. [2008] Problème d'export vers un fichier .csv
    Par Aeltith dans le forum SSIS
    Réponses: 3
    Dernier message: 09/03/2011, 11h20
  2. Exporter le contenu d’une zone de liste vers excel
    Par manguigs dans le forum VBA Access
    Réponses: 1
    Dernier message: 08/02/2010, 16h41
  3. [MySQL] Exporter le contenu d'un champ email dans un fichier csv
    Par thamis dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 12/01/2010, 16h17
  4. [TinyMCE] Problème pour récupérer le contenu d'un textarea
    Par oneTime dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 28/08/2008, 11h19
  5. Exportation du contenu d'un Quick Report vers PDF
    Par sillycoder dans le forum Bases de données
    Réponses: 1
    Dernier message: 05/07/2005, 14h48

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