Ausgabe einer CSV datei PHP

nischtak

Banned
Registriert
Nov. 2005
Beiträge
692
hallo ich sitz seit 3 tagen da und komm nicht weiter und dieses skript muss bis montag fertig werden chef bringt mich um wenn ich nicht fertig werde

also folgendes hab eine csv date (s. anhang) da man nur txt holaden kann hab ich die datei als txt umbenannt einfach wieder umbenen in laender.csv

so folgendes das sind countrycodes für die schifffahrt einmal der 3stellige code, dann das land, dann die 2 stelige ISO-2 ablürzung zb. DE dann die 3 stellige ISO-3 abkürzung zb. DEU

okay man chef will das der browser folgendes anzeigt

$VTS_MID = array(
'000' => array(
'Name' => 'UNKNOWN', 'ISO-2' => 'AA', 'ISO-3' => 'AAA'),
'201' => array(
'Name' => 'Albania (Republic of)',
'ISO-2' => 'AL', 'ISO-3' => 'ALB'),
'202' => array(
'Name' => 'Andorra (Principality of)',
'ISO-2' => 'AD', 'ISO-3' => 'AND'),
);


und natürlich die anderen länder.....
hey bitte hilft mir (sonst wirft der mich während der probezeit noch raus) :freak:
 

Anhänge

okay habs mal geschafft aber eine kleinigkeit stimmt noch net hier mein skript

<?
$fp=fopen("laender.csv","r"); //öffnet länder.csv zum lesen

echo "<pre>";
while (!feof($fp)) // solange nicht das ende der datei erreicht ist !UNGLEICH
{
$zeile = fgets($fp); // weisst der variablen jede einzelne zeile zu
list($MID, $Name, $ISO_2, $ISO_3,) = split(",", $zeile);
$zaehler++; // zählt jede einzelne zeile


$i = 0;
($zaehler > $i);

echo "$VTS_MID = array(
$MID => array
('Name' => $Name,'ISO-2' => $ISO_2, 'ISO-3' => $ISO_3)";


$i++;



}
echo "</pre>";


?>


und hier der browser

= array(
401 => array
('Name' => Afghanistan,'ISO-2' => AF, 'ISO-3' => AFG
)
= array(
201 => array
('Name' => Albania (Republic of),'ISO-2' => AL, 'ISO-3' => ALB
)
= array(
605 => array
('Name' => Algeria (People's Democratic Republic of),'ISO-2' => DZ, 'ISO-3' => DZA
)

aber ein problem gibt es noch der Browser muss mir $VTS_MID vor dem ersten "=array" anzeigen
was muss ich im skript ändern
 
okay das mit den hochzeichen hab ich dann auch mal geschafft (sowas gabs noch nie das ich so schnell fertig wurde

hier mein skript

<?
$fp=fopen("laender.csv","r");

echo "<pre>";
while (!feof($fp))
{
$zeile = fgets($fp);
list($MID, $Name, $ISO_2, $ISO_3,) = split(",", $zeile);
$zaehler++;

$i = 0;
($zaehler > $i);

echo " \$VTS_MID = array(
$MID => array
('Name' =>'$Name','ISO-2' => '$ISO_2', 'ISO-3' => '$ISO_3'),";
$i++;
}
echo "</pre>";
?>

okay ein problem gibt es noch so zeigt es mir mozilla

$VTS_MID = array(
401 => array
('Name' =>'Afghanistan','ISO-2' => 'AF', 'ISO-3' => 'AFG
'), $VTS_MID = array(
201 => array
('Name' =>'Albania (Republic of)','ISO-2' => 'AL', 'ISO-3' => 'ALB
'), $VTS_MID = array(
605 => array
('Name' =>'Algeria (People's Democratic Republic of)','ISO-2' => 'DZ', 'ISO-3' => 'DZA
'),

wie man sieht ist die geschlossene klammer in der nächsten zeile da gehört sie nicht hin die muss oben hin hinter den 3zeiligen ländercode, wie schreib ich in den skript das er bei der $ISO_3 nach 3 zeilen auföht zu lesen und keinen zeilenumbruch macht
auf wenigstens hier ein wenig hilfe
 
Ich glaube hinter dem ISO3 stehen noch die Zeilenumbrüche aus der .csv
guck dir das mal an:
http://selfphp.de/funktionsreferenz/string_funktionen/chop.php

überhaupt solltest du doch selfphp kennen...

naja mfg

PS: Geduld mein Freund ;). Wir kommen hier zu einem großen Teil von Schule oder Arbeit und können nunmal so früh noch nicht helfen :). Naja was tut man nicht alles um nen Arbeitsplatz zu behalten? :D
 
Zuletzt bearbeitet:
vielen vielen dank das hilft schon mal weiter, falls meien datei fertig ist schreib ich es hier rein!!!

danke nochmals
 
Hallo nischtak,

hab mich mal deines Problems angenommen. Ich denke mal, dass dein Ansatz im Moment eher suboptimal ist. Wenn ich Deien Probeaufgabe richtig verstanden habe, möchte Dein Chef die Inhalte der csv-Datei als Array haben. Das ist bei deinem jetzigen Ansatz nicht der Fall. Du erzeugst lediglich eine Ausgabe, als ob es ein Array wäre. Hier mal ein etwas anderer Ansatz.

PHP:
<?php
	/* Das Array initialisieren. */
	$VTS_MID = array();
	/* Die Datei öffnen. */
	$fp = fopen('laender.csv', 'rb');
	/* Jede einzelne Zeile einlesen. */
	while (!feof($fp)) {
		$zeile = fgets($fp);
		$arrFields = explode(',', $zeile);
		/* Als Array-Element speichern. */
		$VTS_MID[$arrFields[0]] = array('Name' 	=> $arrFields[1],
										'ISO-2' => $arrFields[2],
										'ISO-3' => $arrFields[3] );
		unset($arrFields, $zeile);
	}
	fclose($fp);
	echo "<pre>\n";
	echo '$VTS_MID = ';
	print_r($VTS_MID);
	echo "\n</pre>\n";
?>

Das erzeugt folgende Ausgabe:
Code:
$VTS_MID = Array
(
    [401] => Array
        (
            [Name] => Afghanistan
            [ISO-2] => AF
            [ISO-3] => AFG

        )

    [201] => Array
        (
            [Name] => Albania (Republic of)
            [ISO-2] => AL
            [ISO-3] => ALB

        )

    [605] => Array
        (
            [Name] => Algeria (People's Democratic Republic of)
            [ISO-2] => DZ
            [ISO-3] => DZA
        )

)

Dieser Ansatz hat den entscheidenden Vorteil gegenüber Deinem, dass die Daten weiterhin im Script als Array gespeichert sind. Das ist bei Dir wie gesagt nicht der Fall. Schau es dir halt mal an.


Ciao
 
so hatte ich es am anfang auch aber so will er das net so wie ich es oben angeschrieben habe so soll es ausehen! nur das die endung ') auch oben sein muss hinter der ISO-3

hey giny vielen dank für deinen bemühungen weiss ich echt zu schätzen (sitz selber seit ner weile dran)

kannst du vielleicht mein skript so abändern das die" ') in der gleichen zeile ist und nicht unten an der $VTS_MID
so ist es falsch (für meinen chef) wäre dir echt dankbar sitz seit heute morgen dran und es haut nicht hin

vielen dank nochmal
 
Na gut, dann eben so. Hat sich ohnehin nur die Ausgabe geändert.

PHP:
<?php
	/* Das Array initialisieren. */
	$VTS_MID = array();
	/* Die Datei öffnen. */
	$fp = fopen('laender.csv', 'rb');
	/* Jede einzelne Zeile einlesen. */
	while (!feof($fp)) {
		$zeile = fgets($fp);
		$arrFields = explode(',', $zeile);
		/* Als Array-Element speichern. */
		$VTS_MID[$arrFields[0]] = array('Name' 	=> trim($arrFields[1]),
										'ISO-2' => trim($arrFields[2]),
										'ISO-3' => trim($arrFields[3]) );
		unset($arrFields, $zeile);
	}
	fclose($fp);
	echo "<pre>\n";
	echo '$VTS_MID = array('."\n";
	foreach (array_keys($VTS_MID) as $key) {
		$extern =& $VTS_MID[$key];
		echo '\''.$key.'\' => array('."\n";
		$inString = '';
		foreach ($extern as $iKey => $iValue) {
			$inString .= '\''.$iKey.'\' => \''.$iValue.'\', ';
		}
		echo substr($inString, 0, (strlen($inString) - 2)).'),'."\n";
	}
	echo ');';
	echo "\n</pre>\n";
?>


Viel Glück damit. Hab übrigens etwa 5 Minuten gebraucht. Wenn Du an so einem kleinen Problem schon so lange hängst, solltest Du dringend darüber nachdenken, ob du nicht irgendwo einen Lehrgang für Porgrammierung in Anspruch nimmst, damit Du wenigstens die Grundkonzepte nochmal genau vermittelt bekommst.


Ciao
 
langsam wirst du mir richtig sympatisch (bist du das auf dem foto)

mist..................... deins sieht so professionel aus, wenn das mein chef sieht dann gibt er mir erst recht fett aufgaben! wie lange machst du das schon also ich seit 6 wochen (bin total der anfänger in sachen php und co)
 
Hi, nein das auf dem Foto ist Salma Hayek, aber von meiner Freundin wurde mal behauptet, dass sie so aussähe. :)

Also PHP-Programmierung mach ich bereits seit 2000, also etwa 6 Jahre und lerne jeden Tag was dazu. Im Moment bin ich dabei, mich stärker mit OO und Referenzen zu beschäftigen, da sie den Programmablauf und die Bearbeitung stark vereinfachen. Mache das natürlich auch beruflich (Fachinformatiker / Anwendungsentwicklung), also ist das mein täglich Lohn und Brot. ;)


Die Aufgabe von Deinem Chef ist schon etwas ungewöhnlich gewesen, weil letztendlich niemand solche Daten, so darstellen würde. Aber wenn ich Dir damit geholfen habe, umso besser. Mein Tipp: Gewöhne Dir gleich das Arbeiten mit Objekten und Referenzen an. Dann fällt Dir später der Umstieg auf komplexere Sprachen wie Java oder C++/C# leichter und deine Programme bleiben übersichtlicher. Außerdem, solltest Du immer die Funktionsreferenz auf http://www.php.net im Browser geöffnet haben.

Also viel Spaß noch bei der Arbeit (Ausbildung).


Ciao
 
Zurück
Oben