Formater fichier CSV

Eléphanteau du PHP | 41 Messages

06 janv. 2008, 11:16

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 ???

Mammouth du PHP | 1885 Messages

06 janv. 2008, 12:07

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?
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphanteau du PHP | 41 Messages

06 janv. 2008, 14:55

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

Mammouth du PHP | 1885 Messages

06 janv. 2008, 23:05

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. :)
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphanteau du PHP | 41 Messages

07 janv. 2008, 00:09

MErci,

Je pense bloquer sur la moyenne !

Je ne vois pas comment faire.

Merci d avance