Exporter en csv [Résolu/Fermé]

massbbc 115 Messages postés jeudi 26 mai 2005Date d'inscription 8 septembre 2015 Dernière intervention - 12 juil. 2011 à 11:52 - Dernière réponse : NHenry 14133 Messages postés vendredi 14 mars 2003Date d'inscription 22 avril 2018 Dernière intervention
- 26 juil. 2011 à 20:48
salut
je suis débutant en programmation php et je voudrais exporter le résultat d'une recherche en csv.
En fait, l'utilisateur fait une recherche(recherche.php) ensuite j'affiche le résultat dans une autre page(resultat.php). Mon objectif est d'exporter ce résultat en fichier csv.
Merci pour votre aide!
Afficher la suite 

16 réponses

cs_stay 496 Messages postés jeudi 7 juillet 2005Date d'inscription 24 mai 2017 Dernière intervention - 13 juil. 2011 à 00:42
0
Utile
Salut,

Sur la page recherche, là ou tu affiches le résultat.
Tu crées un lien qui redirige vers le script ci-dessous.

Je t'ai créé un exemple, tu devras l'adapter à tes besoins.

<?php
ini_set('memory_limit','512M');
header("content-type: application/octet-stream");
header('Content-Type: text/csv; charset=utf-8');
header("Content-Disposition: attachment; filename=user.csv");
flush();

$arrayUser = array(
0 => array('Toto','fr'),
1 => array('Stay','en')
);

echo "SPEUDO;LANGUAGE\n";
foreach ($arrayUser as $items) {
echo join(';',$items)."\n";
}
?>

Et oui, c'est pas plus difficile que ça :).
Commenter la réponse de cs_stay
TychoBrahe 1310 Messages postés samedi 31 janvier 2009Date d'inscription 5 juin 2013 Dernière intervention - 13 juil. 2011 à 18:04
0
Utile
Salut,

Et oui, c'est pas plus difficile que ça :)

Et bien si c'est plus dur que ça. Pourquoi ? Simplement parce que ton script ne gère pas le cas où les données contiennent le caractère de séparation (ici le point-virgule). Quand on veux faire els choses correctement on utilise fputcsv() au lieux de réinventer la roue carrée.

Pour reprendre ton exemple (la flemme de remettre les headers) :
<?php

$arrayUser = array(array('Toto', 'fr'),
                   array('John,;', 'en'));

$fp = fopen('php://output', 'w');
if ($fp === false)
  die();

foreach($arrayUser as $user)
{
  fputcsv($fp, $user);
}

fclose($fp);

?>
Commenter la réponse de TychoBrahe
cs_stay 496 Messages postés jeudi 7 juillet 2005Date d'inscription 24 mai 2017 Dernière intervention - 13 juil. 2011 à 23:04
0
Utile
Par rapport à ton niveau en informatique.

Tu sais ou est là différence entre toi et moi.
C'est la motivation à vouloir aider les autres.

Toi me disant :
1. Et bien si, c'est plus dur que ça
2. Quand on veux faire els choses correctement on utilise
3. au lieux de réinventer la roue
4. la roue carrée
6. la flemme de remettre les headers

Tout çà, en deux phrases.

C'est sur, tu as optimisé mon code.
Car elle avait une faille.
De plus il y a bien une fonction PHP qui gère cela.

Mais voila ce que je vais faire pour toi.
Je vais te donner une leçon de vie devant toute la communauté phpcs.
Tu crois qu'une personne voulant travailler, partager ou simplement dialoguer, voudrait le faire avec une personne comme toi.
Non, car tu es insultant.

Plusieurs collègues qui on voulu ce mettre en compétition avec moi, ce sont toujours cassé les dents.
Au final, des gentils toutou réprimandé par leurs supérieurs à cause de leurs grande gueule.
La majorité des gens comme toi, sont toujours en compétions, alors qu'ils ont suffisamment prouvé comme les codes que tu proposes sur ce site.

J'espère que cela t'a plus ! :)
Commenter la réponse de cs_stay
NHenry 14133 Messages postés vendredi 14 mars 2003Date d'inscription 22 avril 2018 Dernière intervention - 14 juil. 2011 à 12:43
0
Utile
Bonjour,

stay, quand tu vois le nombre de questions postées sans recherches, le nombre de fois où l'on voit des réponses incomplète ou réinventant tout une machinerie déjà existante, il est normal que certains messages soit un peu plus incisifs que d'autres.

Donc, ça ne sert à rien de répondre de la sorte, de plus, quand tu auras l'expérience de TychoBrahe sur les forums CS, tu comprendras mieux.

Calmes-toi, et essayes d'apprendre des autres aussi.

Commenter la réponse de NHenry
cs_stay 496 Messages postés jeudi 7 juillet 2005Date d'inscription 24 mai 2017 Dernière intervention - 14 juil. 2011 à 15:48
0
Utile
Bonjour,

@NHenry : "Calmes-toi, et essayes d'apprendre des autres aussi."

Je crois avoir dit à mon dernier post :
C'est sur, tu as optimisé mon code.
Car elle avait une faille.
De plus il y a bien une fonction PHP qui gère cela.

Mon problème, c'est l’arrogance de ce garçon sur sa façon de communiquer.
-----------


On fait un petit jeu ? Et remplaçons le mot forum par bureau.

Exemple :
-----------
Donc, tu veux dire que si je suis sous tentions au bureau
et que, un de mes collègues me pose une question du genre,
pourquoi mon pc ne fonctionne plus ?
Et que je constate que la prise n'est pas branchée.
Je pourrais être agressif ?

Donc lui répondre (en reprenant quelques termes et fautes d’orthographe) de notre ami :
1. Tu aurais du voir cela par toi même !
2. Quand on veux faire els choses correctement on branche la prise !
3. Rebranche cette prise par toi même, la flemme de remettre la prise !

----------------------

De plus, l'agressivité ne sert à rien car elle se retournera contre toi :).

Pour l'exemple, j'aurai pu prendre l'exemple d'un professeur à l'école avec ses élèves.
On essaye ?
Commenter la réponse de cs_stay
cs_stay 496 Messages postés jeudi 7 juillet 2005Date d'inscription 24 mai 2017 Dernière intervention - 14 juil. 2011 à 16:11
0
Utile
@NHenry

J'ai oublié une phrase, car tu as essayé de retourner la situation.

Donc, ça ne sert à rien de l'aidée, de plus, quand tu auras ma patience (car je ne suis pas grossier) sur les forums CS, tu comprendras mieux.
Commenter la réponse de cs_stay
massbbc 115 Messages postés jeudi 26 mai 2005Date d'inscription 8 septembre 2015 Dernière intervention - 25 juil. 2011 à 14:52
0
Utile
Merci pour le code!
Mais nous sommes une communauté alors vous vous faites quelques remarques et on evolue ok?
Je jveux pouvoir récuperer(exporter) de ma base de donnée mysql seulement les données dont l'utilisateur aura definit l'intervalle de date dans ma page de recherche.
Commenter la réponse de massbbc
massbbc 115 Messages postés jeudi 26 mai 2005Date d'inscription 8 septembre 2015 Dernière intervention - 25 juil. 2011 à 18:03
0
Utile
J'ai fait mon code mais j'arrive a générer un fichier mais il est vide. Je vous met mon code/
recherche.php
<?php
//MX Widgets3 include
require_once('includes/wdg/WDG.php');
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wdg="http://ns.adobe.com/addt">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
<script type="text/javascript" src="includes/common/js/sigslot_core.js"></script>
<script src="includes/common/js/base.js" type="text/javascript"></script>
<script src="includes/common/js/utility.js" type="text/javascript"></script>
<script type="text/javascript" src="includes/wdg/classes/MXWidgets.js"></script>
<script type="text/javascript" src="includes/wdg/classes/MXWidgets.js.php"></script>
<script type="text/javascript" src="includes/wdg/classes/Calendar.js"></script>
<script type="text/javascript" src="includes/wdg/classes/SmartDate.js"></script>
<script type="text/javascript" src="includes/wdg/calendar/calendar_stripped.js"></script>
<script type="text/javascript" src="includes/wdg/calendar/calendar-setup_stripped.js"></script>
<script src="includes/resources/calendar.js"></script>
<link href="includes/skins/mxkollection3.css" rel="stylesheet" type="text/css" media="all" />
</head>


<form action="dl.php" method="get" enctype="multipart/form-data" name="form1" id="form1">
  Date début,
<label>
" wdg:mondayfirst="true" wdg:type="widget" wdg:singleclick="false" wdg:restricttomask="no" />
</label>,

----

Date fin,
<label>
" wdg:mondayfirst="true" wdg:type="widget" wdg:singleclick="false" wdg:restricttomask="no" />
</label>,

----

,
<label>

</label>

   


</form>

</html>



resultat.php
<?php
include ("connexion.php");
$connect= mysql_connect($host,$login,$pass);
mysql_select_db($base, $connect);

// Liste les données de la table
// Script permettant d'exporter une table Mysql au format CSV (séparateur
$debut='';
$fin='';

$resQuery = mysql_query("SELECT date_creat AS DATE_DE_CERATION, heure_d AS HEURE_CREATION, creation AS STATUS1, date_upd AS DATE_MODIFICATION, heure_up AS HEURE_MODIFICATION, modification AS STATUS2, societe AS SOCIETE, nom_navire AS NOM_NAVIRE, call_sign AS CALL_SIGN, type_navire AS TYPE_NAVIRE, comment AS COMMENTAIRES FROM navires WHERE date_creat BETWEEN '$debut' AND '$fin' ");

/*
$resQuery = mysql_query("SELECT date_creat, heure_d, creation, date_upd, heure_up, modification, societe, nom_navire, call_sign, type_navire, comment FROM navires WHERE date_creat='09052011'");

$resQuery = mysql_query("SELECT
nom_adherent,prenom_adherent,adresse_adherent,codepostal_adherent,ville_adhe
rent FROM mysite_adherents WHERE annee_echange_adherent = 2006");*/

header("Content-Type: application/csv-tab-delimited-table");
header("Content-disposition: filename=export.csv");

if (mysql_num_rows($resQuery) != 0) {
// titre des colonnes
$fields = mysql_num_fields($resQuery);
$i = 0;
while ($i < $fields) {
echo mysql_field_name($resQuery, $i).";";
$i++;
}
echo "\n";

// données de la table
while ($arrSelect = mysql_fetch_array($resQuery, MYSQL_ASSOC)) {
foreach($arrSelect as $elem) {
echo "$elem;";
}
echo "\n";
}
}
?>
Commenter la réponse de massbbc
massbbc 115 Messages postés jeudi 26 mai 2005Date d'inscription 8 septembre 2015 Dernière intervention - 25 juil. 2011 à 18:12
0
Utile
lORSQUE JE TEST LA PAGE RESULTAT SIMPLEMENT EN RENSEIGNANT LES VARIABLES PAR DES VALEUR COM:
$resQuery = mysql_query("SELECT date_creat AS DATE_DE_CERATION, heure_d AS HEURE_CREATION, creation AS STATUS1, date_upd AS DATE_MODIFICATION, heure_up AS HEURE_MODIFICATION, modification AS STATUS2, societe AS SOCIETE, nom_navire AS NOM_NAVIRE, call_sign AS CALL_SIGN, type_navire AS TYPE_NAVIRE, comment AS COMMENTAIRES FROM navires WHERE date_creat BETWEEN '2011-07-01' AND '2011-07-31' ");

LE FICHIER EST GENERE CORRECTEMENT AVEC LES VALEURS. JE PENSE QUE LE PROBLEME DOIT VENIR DE MON DE MA PAGE RECHERCHE.PHP
Commenter la réponse de massbbc
massbbc 115 Messages postés jeudi 26 mai 2005Date d'inscription 8 septembre 2015 Dernière intervention - 25 juil. 2011 à 18:22
0
Utile
Non c'est pas vrai! c'étais si facile !
En tout cas merci pour tout et vive le PHP!
Commenter la réponse de massbbc
cs_stay 496 Messages postés jeudi 7 juillet 2005Date d'inscription 24 mai 2017 Dernière intervention - 26 juil. 2011 à 00:42
0
Utile
Je vois que tu ne t'es toujours pas remis en question.
Tu aurais dit désolé ou, ...

Je vais te rafraichir la mémoire :
Toi me disant :
1. Et bien si, c'est plus dur que ça
2. Quand on veux faire els choses correctement on utilise
3. au lieux de réinventer la roue
4. la roue carrée
6. la flemme de remettre les headers

Tout çà, en deux phrases.


Exactement. Et tu sais, si tu refuse de prendre en compte les remarques que l'on te fais on risque de ne plus en faire du tout.


Le conseil est (bien adapté) aussi bon pour toi.

---------------

Tu n'ais pas obligé de répondre.
De toute façon, ce forum est un forum commerciale.
Il y a aucun administrateur qui n'a réagi devant ce genre de comportement.
Mais, je crois que @NHenry a raison, il est normal que certains messages soit un peu plus incisifs.
Donc, continue, fait toi plaisir :).
Commenter la réponse de cs_stay
TychoBrahe 1310 Messages postés samedi 31 janvier 2009Date d'inscription 5 juin 2013 Dernière intervention - 26 juil. 2011 à 09:33
0
Utile
De toute façon, ce forum est un forum commerciale.

... ou pas. C'est un forum d'entraide, il n'a rien de commercial.

Il y a aucun administrateur qui n'a réagi devant ce genre de comportement.

Encore faux, NHenry est administrateur. Tu devrais regarder son profil, il contient un petit logo Administrateur CS.

Si j'ai répondu à ces deux points précis c'est pour éviter que des visiteurs soient induits en erreur par tes propos, si tu as quelque chose à me dire à moi et qui ne concerne pas tout le monde (et par extension le sujet de ce thread) je t'invite à m'en faire part via message privé.
Commenter la réponse de TychoBrahe
NHenry 14133 Messages postés vendredi 14 mars 2003Date d'inscription 22 avril 2018 Dernière intervention - 26 juil. 2011 à 12:49
0
Utile
Bonjour,

En reprenant les 2 points marquants de la dernière partie de ton message :
1) "De toute façon, ce forum est un forum commerciale."
2) "Il y a aucun administrateur qui n'a réagi devant ce genre de comportement. "

1) Ce forum n'est pas commercial, les admins (qui sont surtout des modérateurs) ne sont pas rémunérés, seule la publicité (et/ou être membre du club) permet de maintenir en ligne ce (formidable) ensemble de sites.

Ensuite,
2) les admins sont plus présents que tu ne le penses, il y a eu un recrutement récemment, et même si on ne répond pas toujours, on regardes ce qui se passent sur les différents sites.
Même si c'est vrai que certains sites sont plus surveillés que d'autres.

J'espère que ces éclaircissements te seront utiles pour comprendre la philosophie de ce site.

Commenter la réponse de NHenry
cs_stay 496 Messages postés jeudi 7 juillet 2005Date d'inscription 24 mai 2017 Dernière intervention - 26 juil. 2011 à 16:59
0
Utile
Non mais je rêve.

Je vois que vous êtes très précis sur tout les points que j'ai écrits.
Deux tête valent mieux qu'une.
Là dessus, vous allez me répondre, mais non, tu as tort, car TychoBrahe ne s'est pas justifié.
Et oui, il est normal que certains messages soit un peu plus incisifs.
Vous avez la mémoire courte :)

çà c'est pour le comportement.

Là on va discuté de ce qui est commercial :
http://photos.codes-sources.com/photo.aspx?id=xEiEAA
http://www.codes-sources.com/livres/livre-php-ateliers-web-professionnels-avec-php-mysql-javascript-6.aspx

------------------------------------------

Vous essayez de détourner la réalité.
Mais bon, c'est votre choix, (de prendre les gens pour des c..s)

------------------------------------------

C'était la dernière fois pour moi.
Je ne posterais plus rien sur ce forum.
Et oui, ?fsrf!kvf.

Pour les amateurs de cs, bonne chance.
Commenter la réponse de cs_stay
NHenry 14133 Messages postés vendredi 14 mars 2003Date d'inscription 22 avril 2018 Dernière intervention - 26 juil. 2011 à 20:48
0
Utile
Bonjour,

Le sujet dérive trop, je le clos donc, si tu le conteste, ouvres un sujet sur le bar.

Je pense que tu confond avec une possibilité pour les personnes de mettre en avant leurs produits sur CS, rien ne t'oblige à acheter quoi que ce soit.

Commenter la réponse de NHenry
TychoBrahe 1310 Messages postés samedi 31 janvier 2009Date d'inscription 5 juin 2013 Dernière intervention - 25 juil. 2011 à 18:18
-1
Utile
Mais nous sommes une communauté alors vous vous faites quelques remarques et on evolue ok?

Exactement. Et tu sais, si tu refuse de prendre en compte les remarques que l'on te fais on risque de ne plus en faire du tout.

Je en répèterais pas ma remarque sur l'utilisation de fputcsv(), si tu ne l'utilise toujours pas tu cours aux devants de potentiels bugs que tu vas mettre très longtemps à corriger.

Pour ton problème présent, à première vue cela proviendrais du fait que tu initialise tes variables avec une chaine vide :
$debut='';
$fin='';

Si tu veux récupérer les donnés du formulaire, il te faut faire comme suit :
$debut = mysql_real_escape_string($_GET['debut'], $connect);
$fin = mysql_real_escape_string($_GET['fin'], $connect);
Commenter la réponse de TychoBrahe

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.