fgetcsv() Ausgabe bereitet Kummer

PhaseV

Mitglied
Hallo TuTorianer :D

ich hab ma wieder n kleenes problemchen, ich arbeite grade an eine art katalog, wo in einer tabelle sortiert nach kategorien ausgegeben werden soll.

dies ist der aufbau meiner katalog.txt datei:
Code:
kat1;produkt1;beschreibung von produkt1; UVP
kat2;produkt2;beschreibung von produkt2; UVP
kat1;produkt3;beschreibung von produkt3; UVP
...

und so ist der aufbau der ausgabe:
PHP:
<?php
 error_reporting(E_ALL);
 
 $datei = fopen($katFile, 'r');
 echo '<table>';
 while ($daten = fgetcsv($datei, 1000, ';')) {
  if($daten[0] == 'Kategorie1') {
   echo '<th>Pasta</th>';
   echo '<tr><td>'.$daten[1].'</td><td>'.$daten[2].'</td><td>'.$daten[3].'</td></tr>';
  }
  elseif($daten[0] == 'Kategorie2') {
   echo '<th>Pizza</th>';
   echo '<tr><td>'.$daten[1].'</td><td>'.$daten[2].'</td><td>'.$daten[3].'</td></tr>';
  }
 }
 echo '</table>';
 fclose($datei);
?>
mein Problem iss jetzt, dass die ausgabe weder sortiert, noch aufgeteilt nach den Kategorien ist. Ich versuche schon seit ein paar Tagen eine optimale lösung zu finden, aber ich seh den Wald vor lauter bäumen nicht.

Wer kann mir helfen oder hat n Lösungsansatz für mich?

ich danke schonmal im vorraus
 
Zuletzt bearbeitet:
Das dürfte dir mit einem Array sehr viel einfacher gelingen.

PHP:
<?php
 error_reporting(E_ALL);
 
 $datei = fopen($katFile, 'r');
 echo '<table>';
 while ($daten = fgetcsv($datei, 1000, ';')) {
  $catalog[$daten[0]][]['produkt'] = $daten[1];
  $catalog[$daten[0]][]['beschreibung'] = $daten[2];
  $catalog[$daten[0]][]['UVP'] = $daten[3];
 }
 fclose($datei);
 sort($catalog);
 var_dump($catalog);
?>
 
@Felix Jacobi:
also dein code-schnipssel, bringt irgendwie nicht den gewünschten erfolg.

gibt es denn keine weitere möglichkeiten Ich würde ja eine MySQL Datenbank Abfrage machen, aber meine vorgabe für diesen Abschnitt der Seite iss ohne DB-Query :(

Das macht das etwas komplizierter für mich. wer kann helfen?
 
Bei mir funktioniert der Codeschnipsel. Wenn du statt sort() asort() nimmst, kannst du als array-index auch weiterhin kat1/kat2 benutzen ;)
 
hmm, ich weiß nicht wie ihr das macht, mit der echo() ausgabe, aber bei mir iss mix sortiert

hier nochmal mein derzeitiger source-code:
PHP:
<?php
error_reporting(E_ALL);

$datei = fopen($katFile, 'r');
echo '<table>';
while ($daten = fgetcsv($datei, 1000, ';')) {
	$kat[$daten[0]][]['produkt'] = $daten[1];
	$kat[$daten[0]][]['beschreibung'] = $daten[2];
	$kat[$daten[0]][]['preis'] = $daten[3];
	echo '<th>'.$daten[0].'</th>';
	echo '<tr><td>'.$daten[1].'</td><td>'.$daten[2].'</td><td>'.$daten[3].' €</td></tr>';
}
asort($kat);
echo '</table>';
fclose($datei)
?>
 
Zuletzt bearbeitet:
Zurück