Titre: Problème conversion champ en longueur fixe
Posté par: roseline le le 09-03-2012 a 16:39:31
Bonjour,
Cela fait quelques jours que je cherche des infos, mais là je sèche :-( J'espère que quelqu'un aura une solution ;-)
Mon problème est le suivant: Je dois exporter des données dans un fichier txt = j'y arrive. Mais je dois "manipuler" un champ comme suit - dans la table, j'ai un champ qui comprend une valeur, p.ex. 100.00 ou 20.50 - dans le fichier txt, il doit apparaître 1) sans le point 2) sur une longueur fixe de 9 caractères; ce qui devrait me donner 000010000 ou 000002050
Je pense que je dois utiliser des string et des array, mais je n'y arrive pas :-(
Voici ci-dessous mon code qui me génère bien le fichier txt mais avec 20.50 au lieu de 000002050...
Merci d'avance pour votre aide!
<?php $UserID = $_GET['UserID']; ?> <?php include "config.inc.php"; // la variable qui va contenir les données CSV $outputCsv = '';
///////////////////////// VALEURS Society ET SiteCode A CHANGER //////////////////////////////////// $requete = "SELECT CheckID, CheckValor, StatutID, CustomerNumber, Society, SiteCode, SiteCountry FROM base WHERE StatutID = 'U' AND Society = '1' AND SiteCode = '000' AND SiteCountry = 'CH'"; $sql = mysql_query($requete); if(mysql_num_rows($sql) > 0) { $i = 0;
while($Row = mysql_fetch_assoc($sql)) { $i++;
// On parcours $Row et on ajout chaque valeur à cette ligne foreach($Row as $clef => $valeur) $outputCsv .= trim($valeur).'';
// Suppression du ; qui traine à la fin $outputCsv = rtrim($outputCsv, '');
// Saut de ligne $outputCsv .= "\n";
}
} else exit(''); /// DONNEES $Date= date("Y-m-j H:i:s");
/// Ecriture du fichier header("Content-disposition: attachment; filename=\"ACH0001".date("YmdHis").".txt\""); header("Content-Type: application/force-download"); header("Content-Transfer-Encoding: application/vnd.ms-excel\n"); header("Pragma: no-cache"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); header("Expires: 0");
echo $outputCsv; exit(); ?> |
Titre: Re:Problème conversion champ en longueur fixe
Posté par: roseline le le 13-03-2012 a 16:13:47
J'ai trouvé la solution grâce à un autre forum ;-)
Pour info, il faut utiliser: sprintf Exemple: $num = 23.50; echo sprintf('%09u',$num*100); // affiche 000002350 |
Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.
|