Hallo liebe Leute, habe hier ein kleines Problem mit einer PHP-Aufgabe aus der Berufsschule. Mir scheint, als habe mein Script ein Problem, die Textdatei zu lesen. Mein Server läuft mit userdir extension und mein Benutzer ist Angehöriger der www-data Gruppe.
Inhalt von stunden.txt
Inhalt von belegschaft.txt
Eigentlich dürfte das Script für das auslesen doch garnicht so lange brauchen, oder?
PHP:
<?php
class mitarbeiter
{
# Eigenschaften der Mitarbeiter
private $id;
private $name;
private $vorname;
private $bank;
private $blz;
private $konto;
private $stundenlohn;
private $summe_stunden;
# Daten des Mitarbeiters erzeugen
function __construct($info)
{
$this->id = $info[0];
$this->name = $info[1];
$this->vorname = $info[2];
$this->bank = $info[3];
$this->blz = $info[4];
$this->konto = $info[5];
$this->stundenlohn = $info[6];
$this->summe_stunden = 0;
}
function stunden_erfassen($anzahl)
{
$this->summe_stunden=$this->summe_stunden+$anzahl;
}
function __toString()
{
$aus = "Mitarbeiter-ID: $this->id";
$aus .= "Name: $this->name";
$aus .= "Vorname: $this->vorname";
$aus .= "Bank: $this->bank";
$aus .= "Stundenlohn: $this->stundenlohn Euro";
$aus .= "Summe der Stunden: $this->summe_stunden";
}
}
class unternehmen
{
private $name;
private $belegschaft;
private $summe_stunden_unbekannt;
function __construct($na)
{
$this->name = $na;
$this->summe_stunden_unbekannt=0;
#Daten aus Textdatei lesen
$dp = fopen("belegschaft.txt","r");
$zeile = fgets($dp,100);
while(!feof($dp))
{
$info=explode(",",$zeile);
$id=$info[0];
$this->belegschaft[$id] = new mitarbeiter($info);
$zeile=fgets($dp, 100); # Zeile wird wieder eingelesen, Zeiger bleibt auf dem ausgelesenen Datensatz/der Zeile stehen und wird hiermit weitergeschoben
}
fclose($dp);
}
function stunden_erfassen()
{
$dp=fopen("stunden.txt","r");
$zeile=fgets($dp,100);
while(!feof($dp))
{
$info=explode(",", $zeile);
$id=$info[0];
if(array_key_exists($id, $this->belegschaft)){
$this->belegschaft[$id]->stunden_erfassen($info[1]);
}
else{
$this->summe_stunden_unbekannt=$this->summe_stunden_unbekannt+$info[1];
}
}
function __toString()
{
$ausgabe = "Firma $this->name <br />";
foreach($this->belegschaft as $schluessel=> $wert)
{
$ausgabe .= $this->belegschaft[$schluessel];
}
$ausgabe .= "Summe der Stunden unbekannt: $this->summe_stunden_unbekannt <br />";
return ($ausgabe);
}
}
}
# Hauptprogramm
$un=new unternehmen("Marco Hart");
$un->stunden_erfassen();
echo $un;
?>
Inhalt von stunden.txt
Code:
76,5
33,12
33,3
68,44
76,3
68,6
65,7
68,7
Inhalt von belegschaft.txt
Code:
76,Müller,Max,Bayerische Bank,38010050,4848483,15.5
33,Schmitz,Peter,Hessische Bank,36050080,772384,12
68,Maier,Sepp,Sächsische Bank,32020080,2938515,12.5
Eigentlich dürfte das Script für das auslesen doch garnicht so lange brauchen, oder?