Page 1 sur 1

Formater fichier CSV

Posté : 06 janv. 2008, 11:16
par jeanmed
Bonjour,

J'ai un fichier enorne de prix et quantité que je dois formater d'une certaine manière pour l intégrer dans ma base de donnée.

Voici le fichier original CSV (il n y a qu 'une ligne mais mon fichier ne contient plus de 13000) :

Code : Tout sélectionner

QT1;QT2;QT3;QT4;POID1;POID2;POID2;POID3;POID4 100,30;167,15;221,24;222,59;1,797;3,434;5,072;6,709
Pour Chaque ligne j ai 4 QT pour les quantité et 4poids.

Je voudrais formater mon fichier sous cette forme (si j ai un tableau Array c est bon aussi):

Code : Tout sélectionner

ID;QT;POID 1;100,3;1,797 2;167,15;3,434 3;221,24;5,072 4;222,59;6,709
Pouvez vous m aider ???

Posté : 06 janv. 2008, 12:07
par Xenon_54
http://www.php.net/manual/fr/function.fgetcsv.php peut-être?

As-tu des notions de PHP et des fonctions de gestion de fichiers?
Peut-être nous donner plus d'informations sur les problèmes rencontrés?

Posté : 06 janv. 2008, 14:55
par jeanmed
Merci pour la reponse,

Oui je connais le PHP et la Fonction fgetcsv qui permet de recreer un tableau du fichier CSV.

Voici mon code :
<?
$fichier = "test.csv";
$fic = fopen($fichier, 'rb');

echo "<table border='1'>\n";
for ($ligne = fgetcsv($fic, 1024); !feof($fic); $ligne = fgetcsv($fic, 1024)) {
  echo "<tr>";
  $j = sizeof($ligne);
  for ($i = 0; $i < $j; $i++) {
    echo "<td>$ligne[$i]</td>";
    }
  echo "</tr>";
  }
echo "</table>\n";

?>
Voici mon fichier CSV :

Code : Tout sélectionner

QT1;QT2;QT3;QT4;POID1;POID2;POID2;POID3;POID4 100,30;167,15;221,24;222,59;1,797;3,434;5,072;6,709
J ai donc un tableau similaire a celui je j ai dans excel.

Je voudrais le formater de cette maniere :

Code : Tout sélectionner

ID;QT;POID 1;100,3;1,797 2;167,15;3,434 3;221,24;5,072 4;222,59;6,709
Mais je n arrive pas trouve le bon mécanisme dans ma boucle pour mettre chaque QT et chaque Poid sur meme ligne.

MErci d avance

Re: Formater fichier CSV

Posté : 06 janv. 2008, 23:05
par Xenon_54
Je voudrais formater mon fichier sous cette forme (si j ai un tableau Array c est bon aussi):

Code : Tout sélectionner

ID;QT;POID 1;100,3;1,797 2;167,15;3,434 3;221,24;5,072 4;222,59;6,709
fgetcsv() retourne un tableau des valeurs des champs de la ligne.
Si tu fais ceci:
<?php

$fp = fopen('test.csv', 'r');

$data = Array();

while (!feof($fp)) {
    $data[] = fgetcsv($gp, 1024);
}

fclose($fp);
?>
Tu auras un tableau avec tes données.

Adapte la ligne $data[] = fgetcsv($gp, 1024); pour faire le formatage que tu veux non?

Est-ce que le champ QT dans la sortie doit être une moyenne des 4 champs QT en entrée? Si oui, fais la moyenne dans la boucle et affiche le résultat.

Concentre toi sur le résultat désiré et pense à tous les traitements que PHP devra faire pour arriver aux résultats. Je ne crois pas que ce soit très compliqué.

1) J'ouvre le fichier
2) Je dois lire les lignes. Donc je boucle avec fgetcsv()
3) Je dois faire une moyenne des 4 champs QT. Donc je récupère les champs retournés par fgetcsv() et je fais le calcul de la moyenne.
4) Je dois formater le résultat. Je prends la fonction echo() je j'affiche le tout comme je veux.
5) Je ferme le fichier.

J'essaie de comprendre à quel étape tu bloques. :)

Posté : 07 janv. 2008, 00:09
par jeanmed
MErci,

Je pense bloquer sur la moyenne !

Je ne vois pas comment faire.

Merci d avance