caractère indésirable dans dans fichier .csv avec var_export

Répondre
Snooze59
le 12/08/2010 à 09:18
Snooze59
bonjour,
voilà 10 jours que je code en PHP et MySQL.
Tant qu'il y avait des erreurs, j'ai pu débugger, mon code fonctionne mais là j'en appel aux anciens.

j'ai des caractères ' qui me pollue mon fichier de sortie, surement une erreur de passage de paramètre entre le tab et la variable, ou la fonction var_export que je ne maitrise pas bien mais sans message d'erreur...

voici mon code
Code :

<?php 
require("connect_meteo.php");
$Touvoir ="";
//recherche dernier enregistrement
$requete = "SELECT * FROM data ORDER BY Full_date_time DESC LIMIT 1";

$result = mysql_db_query("meteo", $requete) or die(mysql_error());


while ($voir = mysql_fetch_array($result))

$datefin = $voir['Full_date_time'];
//Mise en forme de la date et l'heure ,copie de toute les dates dans l'interval dernier enregistrement et moins 23h59
$data_24h = "SELECT * , DATE_FORMAT(date, '%d/%m') AS date, TIME_FORMAT(time, '%H:%i') AS time FROM data WHERE `Full_date_time` BETWEEN ('$datefin' - INTERVAL '23:59' HOUR_MINUTE) AND '$datefin'";

$result2 = mysql_db_query("meteo", $data_24h) or die(mysql_error());

//mise en buffer
ob_start();
define("date","date");
define("time","time");
define("rainfall_relative","rainfall_relative");
define("humidity_2","humidity_2");
define("humidity_outdoor","humidity_outdoor");

while ($Toutvoir = mysql_fetch_array($result2))
{
$date = $Toutvoir[date];
$time = $Toutvoir[time];

var_export($date.' - '.$time.';'.$Toutvoir[rainfall_relative].';'.$Toutvoir[humidity_2].';'.$Toutvoir[humidity_outdoor]."\n");
}
$tab_debug=ob_get_contents();
ob_end_clean();

// ---------------- Création et écriture du fichier local ----------------
//Répertoire de destination
$dirname = "/home/nicolas/Public/php/";
// Fichier de destination
$filename = "data_pluie.csv";
//Ouverture du répertoire de destination
$fichierouvert = fopen ($dirname.$filename, "w+");
//Copie du fichier
if ( !fwrite($fichierouvert, $tab_debug)) {
echo "Impossible d'écrire dans le fichier ($filename)";
exit;
}
//Fermeture du fichier
fclose ($fichierouvert);
?>


voici le résultat

'09/08 - 23:17;0;72;79
''09/08 - 23:22;0;73;79
''09/08 - 23:27;0;73;79
''09/08 - 23:32;0;73;81
''09/08 - 23:37;0;73;82
''09/08 - 23:42;0;73;82
''09/08 - 23:47;0;74;82
''09/08 - 23:52;0;75;83
''09/08 - 23:57;0;75;84
''10/08 - 00:02;0;76;83
''10/08 - 00:07;0;75;84
etc...
''10/08 - 23:12;0;89;98
'

Quel est le paramètre qui m'inclue les ' ' (deux fois la strophe) en début de ligne et la strophe unique en début et fin de fichier ?

merci pour votre aide
Nico
Nico
LA GLOBULE
le 12/08/2010 à 09:53
LA GLOBULE
As tu lu quel était le role de la fonction var_export ?

Elle sert a retourner le code PHP utilisé pour générer une variable.

Comme tu lui passes une chaine de caractères en paramètre, celle ci fonctionnera ainsi :

<?php
$a = 'toto';
var_export($a);
?>


Ce qui affichera :

'toto'


Tes quotes viennent de la. Mais comme tu places un retour chariot dans ta variable, ben les doubles quotes de tes lignes différentes de la première correspondent en fait à la simple quote du var_export de la ligne précédente plus la simple quote du var_export de la ligne courante.

Pour ne plus avoir de problème remplace var_export par echo.

PS : tu as une drôle de facon d'écrire dans un fichier texte. En 10 ans de PHP, c'est la première fois que je vois quelqu'un qui ouvre un buffer pour faire cela.
Snooze59
le 12/08/2010 à 16:22
Snooze59
merci à toi La globule,
1 j'ai résolu mon problème,
2 j'ai compris pourquoi grâce à tes explications
3 je repars faire des essais de la fonction var_export pour comprendre ce qui m'a échappé dans son utilisation...

et pour la mise en buffer, c'est une habitude de j'avais quand je programme en ADA.
Bon dans un mois je pense que j'aurai pris les bonnes habitudes en PHP.
Encore merci à toi
Nico
LupusMic
le 14/08/2010 à 23:33
LupusMic
(La Globule) J'ai déjà fait, et plus d'une fois. C'est très pratique.

(Snooze59) Quelle expression cocasse, « bonnes habitudes en PHP » ;)

Venant d'ADA, dans un mois tu auras commencé à chercher autre chose ;)
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours