PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : letzte Zeile nicht auslesen



Joki
20.07.2005, 11:35
Hi Leute,

wie kann ich verhindern, dass die letzte Zeile einer Textdatei ausgelesen und angezeigt wird?



$i = 0;
$dateiname = "../../../buchungen/$buchungen".".txt";
if(file_exists($dateiname)){ //prüfe ob Datei vorhanden
$datei = fopen($dateiname, "r+"); //öffne Datei zum lesen
if($datei){
echo "<table width='100%' border='0'>";
echo "<tr><td class='abfrage' width='2%'>Nr.</td><td class='abfrage' width='12%'>Res-Nummer</td><td class='abfrage' width='5%'>Herkunft</td><td class='abfrage' width='10%'>Gastname</td><td class='abfrage' width='6%'>Anreise</td><td class='abfrage' width='6%'>Abreise</td><td class='abfrage' width='2%'>Nächte</td>";
echo "<td class='abfrage' width='6%'>Preis Kat1</td><td class='abfrage' width='8%'>Gesamt Kat1</td><td class='abfrage' width='6%'>Preis Kat2</td><td class='abfrage' width='8%'>Gesamt Kat2</td><td class='abfrage' width='8%'>12% Komm</td><td class='abfrage' width='8%'>Status Kat1</td>";
echo "<td colspan='2'class='abfrage' width='8%'>Status Kat2</td></tr>";
echo "<tr><td colspan='15' class='abfrage'>&nbsp;</td></tr>";
$nr = 0;
$gesamtkommi = 0;
$gesamtkat1 = 0;
$gesamtkat2 = 0;
while(!feof($datei)){ //mache bis Datei zu Ende
$zeile = fgets($datei, 255); //lese zeilenweise aus
$liste[] = explode(",",$zeile); //zerlege Zeile in einzelne Werte
$nr++;
echo "<td class='abfrage' width='2%'>".$nr."</td><td class='abfrage'width='12%'>".$liste[$i][0]."</td><td class='abfrage' width='5%' align='center'>".$liste[$i][1]."</td><td class='abfrage' width='17%'>".$liste[$i][2]." ".$liste[$i][3]." ".$liste[$i][4]."</td>";
echo "<td class='abfrage' width='6%'>"." ".$liste[$i][5]."</td><td class='abfrage' width='6%'>".$liste[$i][6]."</td><td class='abfrage' align='center' width='2%'>".$liste[$i][7]."</td>";
if($liste[$i][9] == "wurde nicht gewählt" || ($liste[$i][8] == " ")){//Wenn Kat 1 nicht gewählt
echo "<td class='abfrage' align='right' width='5%'>&nbsp;</td><td class='abfrage' align='right' width='8%'>&nbsp;</td>";
}
else{
echo "<td class='abfrage' align='right' width='5%'>".$liste[$i][8]." €"."</td><td class='abfrage' align='right' width='8%'>".$liste[$i][9]." €"."</td>";
}
if($liste[$i][11] == "wurde nicht gewählt" || ($liste[$i][10] == " ")){// Wenn Kat 2 nicht gewählt
$kom1 = $liste[$i][12];
$kom = sprintf("%01.2f", $kom1)." €";
echo "<td class='abfrage' width='5%'>&nbsp;</td><td class='abfrage' width='8%'>&nbsp;</td><td class='abfrage' align='right' width='6%'>".$kom."</td><td class='abfrage' width='6%'>&nbsp;&nbsp;".$liste[$i][13]." ".$liste[$i][14]."</td>";
echo "<td class='abfrage' width='6%'>&nbsp;&nbsp;".$liste[$i][15]." ".$liste[$i][16]."</td><td class='abfrage' width=''>&nbsp;</td></tr>";

}
else{
$kom1 = $liste[$i][12];
$kom = sprintf("%01.2f", $kom1)." €";
echo "<td class='abfrage' align='right' width='5%'>".$liste[$i][10]." €"."</td><td class='abfrage' align='right' width='8%'>".$liste[$i][11]." €"."</td><td class='abfrage' align='right' width='6%'>".$kom."</td><td class='abfrage' width='6%'>&nbsp;&nbsp;".$liste[$i][13]." ".$liste[$i][14]."</td>";
echo "<td class='abfrage' width='6%'>&nbsp;&nbsp;".$liste[$i][15]." ".$liste[$i][16]."</td><td class='abfrage' width=''>&nbsp;</td></tr>";
}
$test = $liste[$i][11];
$gesamtkommi1 += $liste[$i][12];
$gesamtkommi = sprintf("%01.2f", $gesamtkommi1);
$gesamtkat11 += $liste[$i][9];
$gesamtkat1 = sprintf("%01.2f",$gesamtkat11);
$gesamtkat21 += $liste[$i][11];
$gesamtkat2 = sprintf("%01.2f", $gesamtkat21);

$i++;
}
fclose($datei);
}
else
echo "Datei wurde nicht gefunden!";


Danke und Gruss Joki

imported_Conan
22.07.2005, 17:37
Hallo

Du könntest Zeilenweise in einen Array lesen und dabei einen Zähler mitlaufen lassen.
Dann Zähler-- und erst dann die Ausgabeschleife machen.

Ausgabeschleife:
Entweder for($i=0;$i<=$Zähler;i++) { Ausgabe } oder while($Zähler) { Ausgabe $Zähler--; }

mfg Conan

MS78FTL
29.07.2005, 00:38
textdatei umgekehrt auslesen (vom ende) und die 1. zeile überspringen so würde die letzte zeile wegfallen...

MfG,

Micha

P.S. hier noch nen LINK (http://www.php-area.de/tutorien.php?module=tut_show&id=7)

st0n3
04.08.2005, 22:37
Am schnellsten geht es mit.


if (is_file($file) && is_readable($file)) {
$lines = file($file);
array_pop($lines);

foreach ($lines as $line) {
printf("%s <br />\n", $line);
}
}

file (http://de.php.net/manual/de/function.file.php)
array_pop (http://de.php.net/manual/de/function.array-pop.php)