TXT-CSV in Array einlesen

Und es geht noch weiter, jetzt da wir die Daten schön aufgesplittet haben, ist es alles etwas einfacher:

PHP:
<?php
header("Content-Type: text/html; charset=utf-8");

$filename = "daten.csv";

$artikel = array();
$mitarbeiter = array();
$taetigkeiten = array();
$projekte = array();
$kommentare = array();

$fp = fopen($filename, "r");
while( ($csv = fgetcsv($fp, null, ';') ) != false )
{
	switch($csv[0])
	{
		case 'F': 
			// unbedeutend
			break;
			
		case 'K':
			$kommentare[$csv[1]] = $csv[2];
			break;
			
		case 'M':
			$mitarbeiter[$csv[1]] = $csv[2];
			break;
			
		case 'T':
			$taetigkeiten[$csv[1]] = $csv[2];
			break;
			
		case 'P':
			$projekte[$csv[1]] = $csv[2];
			break;
			
		case 'A':
			$artikel[] = array('artikelnummer' => $csv[1], 'artikelname' => $csv[2], 'projekt' => $csv[4]);
			break;
						
	}
}

$aktuelles_projekt = null;

if(isset($_GET['aktuelles_projekt']))
{
	$aktuelles_projekt = $_GET['aktuelles_projekt']; // Evtl. noch sanitizen...
}

echo '<form action="'.$_SERVER['PHP_SELF'].'" method="get">';

echo '<select id="projekt" name="aktuelles_projekt" onchange="submit();">';
foreach($projekte as $projektnummer => $projektname)
{
	if($aktuelles_projekt == null)
	{
		$aktuelles_projekt = $projektnummer;
	}
	
	$selected = "";
	if( $aktuelles_projekt == $projektnummer )
	{
		$selected = 'selected="selected"';
	}
	
	echo '<option value="'.$projektnummer.'"'. $selected .'>' . $projektname . '</option>';
}
echo '</select>';


echo '<select id="artikel" name="aktueller_artikel">';
foreach($artikel as $einzelartikel)
{
	if($einzelartikel['projekt'] == $aktuelles_projekt)
	{
		echo '<option value="'.$einzelartikel['artikelnummer'].'">' . $einzelartikel['artikelname'] . '</option>';
	}
}
echo '</select>';
echo '</form>';
?>
 
Herumspielen xD
du hasts ja übelst druaf, hut ab******
Ein ganz großes Lob an dich... jetzt brauch ich blos noch alles einlesen.... In die Dropdownfelder... das geht ja dann gleich dort wo man das Array ausgibt oder?
Also wirklich nochmal, genial und vielen Dank!
 
jetzt brauch ich blos noch alles einlesen.... In die Dropdownfelder... das geht ja dann gleich dort wo man das Array ausgibt oder?

Wenn ich die Frage richtig verstehe, kannst du dich daran orientieren, wie es im Code-Teil zwischen den <form>-Tags implementiert ist. Es kommt halt vollkommen darauf an, wie die Zuordnung der einzelnen Daten stattfinden soll. Ich habe deine Beschreibung des CSV herangezogen und konnte bisher zwei Select-Felder verknüpfen. Den Rest kannst du evtl. alleine machen, ansonsten frag halt noch mal nach. :-)

Danke für die Blumen ;-)
 
PHP:
<?
echo "Artikel:<br/>";
echo "<pre>";
var_dump($artikel);
echo "</pre>";
 
echo "Mitarbeiter:<br/>";
echo "<pre>";
?>

<select name="Mitarbeiter">
<?
foreach($mitarbeiter AS $mitarbeiter => $value){ 
   echo"<option value='".$mitarbeiter."'>".$value."</option>"; 
} 
?>
</select>
<?
echo "</pre>";
 
echo "Projekte:<br/>";
echo "<pre>";
?>

<select name="Projekte">
<?
foreach($projekte AS $projekte => $value){ 
   echo"<option value='".$projekte."'>".$value."</option>"; 
} 
?>
</select>
<? echo "</pre>";
 
echo "Tätigkeiten:<br/>";
echo "<pre>";
?>

<select name="Taetigkeiten">
<?
foreach($taetigkeiten AS $taetigkeiten => $value){ 
   echo"<option value='".$taetigkeiten."'>".$value."</option>"; 
} 
?>
</select>
<?
echo "</pre>";
?>

So hab ich das jetzt gemacht.... Ja so eine Leistung, echt stark, nur mit denArtikeln seh ich gerade nicht ganz durch... kannst du mir erklären wie du das programmiert hast?
 
Ich versuch es mal anhand des Codes zu erklären:

PHP:
echo '<select id="artikel" name="aktueller_artikel">';
foreach($artikel as $einzelartikel)
{
    if($einzelartikel['projekt'] == $aktuelles_projekt)
    {
        echo '<option value="'.$einzelartikel['artikelnummer'].'">' . $einzelartikel['artikelname'] . '</option>';
    }
}
echo '</select>';

- Zeile 1: Select-Tag erstellen - dürfte klar sein.
- Zeile 2: foreach() ist extra für Arrays gedacht. Wir laufen also über alle Einzelartikel im Array. Diese Einzelartikel sind selbst wieder Arrays und beinhalten die Attribute aus dem CSV für Artikel-Nummer, den Artikel-Namen und die Projekt-Zuordnung.
- Zeile 4: Wir prüfen für jeden Artikel, über den wir laufen, ob dieser Artikel von der Projekt-Zuordnung her zum aktuellen Projekt passt (das haben wir uns weiter oben gemerkt).
- Zeile 6: Wenn der Artikel zum Projekt gehört, stellen wir ihn dar.

Wichtig ist hier eigentlich nur, dass das Script weiß, in welchem Projekt wir gerade unterwegs sind. Wenn noch keines ausgewählt wurde, nehmen wir einfach das erste, das wir im Array $projekte finden und merken uns das. Wenn ein Projekt aus dem Drop-Down gewählt wurde, wird die Projekt-Nummer über GET-Parameter eingelesen und gemerkt.

Beantwortet das deine Frage?
 
Zurück