transformé un CSV en tableau php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : transformé un CSV en tableau php

par M@XflY » 05 janv. 2007, 19:45

pour ceux que ça intéresse :

Code : Tout sélectionner

<?php ### Conversion du CSV en tableau PHP ### var_dump(parse_csv_file('C:\graphes.csv', true, ';')); /* selection du fichier */ function parse_csv_file($file, $columnheadings = false, $delimiter = ',', $enclosure = "\"") { $row = 1; $rows = array(); $handle = fopen($file, 'r'); while (($data = fgetcsv($handle, 1000, $delimiter, $enclosure )) !== FALSE) { if (!($columnheadings == false) && ($row == 1)) { $headingTexts = $data; } elseif (!($columnheadings == false)) { foreach ($data as $key => $value) { unset($data[$key]); $data[$headingTexts[$key]] = $value; } $rows[] = $data; } else { $rows[] = $data; } $row++; } fclose($handle); return $rows; } var_dump('<pre>', $data, '</pre>'); /* Affichage du tableau pour vérification */

et la dernière ligne en var_dump à commenter ou non suivant si on veut afficher le CSV pour vérification

par M@XflY » 05 janv. 2007, 16:57

<?php
	/*Script name : Convertir
	* Description : Lit un fichier CSV file et retrourne un fichier TSV. Le fichier CSV doit avoir une extension CSV */
	
	$monfichier = "C:\...\test.csv";
	function convert ($nomfichier)
	{
		if(@$fh_in = fopen("{$nomfichier}.csv","r"))
		{
		$fh_out = fopen("{$nomfichier}.tsv","a");
		while (!feof(($fh_in))
			{
			$ligne = fgetcsv ($fh_in,1024);
			if($ligne[0] == "")
				{
				fwrite($fh_out,"\n");
				}
			else {
				fwrite($fh_out,implode($ligne,"\t),"\n);
				 }
			}
			fclose($fh_in);
			fclose($fh_out);
		}
		else {
			echo "Ce fichier n'exite pas\n";
			return TRUE;
			 }
		convert ($monfichier);
	}
?>
j'ai trouvé ça à voir

par iclo » 05 janv. 2007, 13:58

Je ne connaissais pas fgetcsv() mais en effet, ça devrait faire l'affaire.

par M@XflY » 05 janv. 2007, 13:55

j'avais trouvé ce script :

Code : Tout sélectionner

$fichier = "questionnaire3.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";
mais ça me renvoie ça comme erreur :

Warning: fopen(essai.csv): failed to open stream: Invalid argument in ...\essai.php on line 3

Warning: fgetcsv(): supplied argument is not a valid stream resource in ...\essai.php on line 6

par iclo » 05 janv. 2007, 13:54

Regardes du côté des fonctions qui permettent d'accéder aux fichiers.
Tu peux lire ton fichier ligne par ligne.
Pour chaque ligne tu fais un explode(), qui va te mettre les différentes valeurs de la ligne dans un tableau.
Ensuite un simple parcours du tableau, pour afficher chaque case.

transformé un CSV en tableau php

par M@XflY » 05 janv. 2007, 13:47

voilà bonjour

je cherche à savoir comment on peut transformer un fichier CSV en tableau PHP

mon CSV est du style :

Code : Tout sélectionner

Period end;Duration;Sample;Corner;Line;Nb de Create PDP Roaming In;Nb de Create PDP Roaming In Fail;Ratio Create PDP Roaming In Fail;Nb de Crea PDP Roaming IN GTP V0;Nb T-PDU Roaming In;Nb T-PDU Roaming In UL;Nb T-PDU Roaming In DL;Ratio T-PDU Roaming In UL/DL;Length Roaming In T-PDU;Length T-PDU Roaming In UL;Length T-PDU Roaming In DL;Nb Creat PDP Imsi Non Identifiés;Nb de T-PDU Imsi Non Identifiés;Length T-PDU Imsi Non Identifiés;DR Status;DR Status Nok;Ratio DR Status Nok;DR Status CP;DR Status CP Nok;Ratio DR Status CP Nok 13/11/2006 00:00;900;1;-;all;684;224;32,74;44;202141;91734;110407;83,08;76013478;16343861;59669617;137;890419;287195441;1093381;347;0,03;821;347;42,26 13/11/2006 00:00;900;1;-;Bez3GgsnNok01;0;0;0;0;0;0;0;0;0;0;0;13;168946;47574160;168959;13;0;13;13;100
la première ligne contient les entete des différentes colonne du tableau
les suivantes contiennent les données.

j'aurai voulu éventuellement pouvoir visualiser ce tableau php pour vérifier qu'il est juste. (avec EasyPHP)