Von txt Dateien die Auslesepunkte bestimmen

melistik

Erfahrenes Mitglied
von txt Datein die Auslesepunkte bestimmen

Ich möchte ein Archiv erstellen und habe mir gedacht,
dass man das Auslesen der txt Datei wo in jeder Zeile ein neuer Eintrag steckt
bestimmen könnte und somit sagen könnte:
lese bis zeile 10 dann mach man einen Link zb Archiv und dort wird erst ab Zeile
11 angefangen auszulesen. Gibt es hierfür einen Befehl/Funktion dies soetwas bewirkt ?
 
Ich habe es nun ein wenig anders gemacht es klappt !
Doch nun wird immer eine "Tabelle" zuviel ausgegeben und ich weiss nicht wieso.
Könnte mir dabei bitte einer helfen danke.
PHP:
$lines = file("edit.txt");
$a = count($lines);


$u = $a - 2;
for ($i = $a; $i >= $u ;$i--)
{ $zeile = $lines[$i];
    list($user,$topic,$text,$datum,$icon,$link,$na2) = explode ("|--|", $zeile);

    echo "<center> <table border='1' cellpadding='2' cellspacing='0' style='border-collapse: collapse' bordercolor='$border' width='$width' bgcolor='$bg_table' >";
    echo "<tr><td bordercolor='$bg_table' colspan='2'><img border='0' src='img/$icon' align='absmiddle' width='33' height='33'><font size='$text_size'> $topic</td></tr>";
    echo "<tr><td bordercolor='$bg_table' colspan='2'><font size='$text_size'> $text</td></tr>";

    empty($link)
          ? $link = "&nbsp;"
          : $link = "<p><font face='Verdana' size='$size_down'>links: </font><a target='_blank' href='http://$link'><font size='$size_down' face='Verdana'>$link</font></a></p>";

    echo "<tr><td bordercolor='$bg_table' width='33%'><font size='$size_down'>name: $user</td>";
    echo "<td bordercolor='$bg_table' width='33%'>$link</td>";
    echo "<td bordercolor='$bg_table' width='33%'><p align='right'><font size='$size_down'>date: $datum</td></tr></table><center>";
    echo "<br><br>";}
an der for-Anweisung liegt es zumindest nicht, da wenn ich anstelle von >= nur
> einsetze, wird zwar nur ein Eintrag angezeigt, aber immer noch diese "extra Tabelle" hinzu wo nichts drinne steht. Es ist sozusagen die Ausgabe nochmal ohne Inhalt.
 
Das du immer eine Tabelle zuviel bekommst liegt schon an der for schleife:
http://www.php.net/manual/de/control-structures.for.php
angenommen a=40 ,also ist die bedingung beim ersten Durchlauf erfüllt, die
tabelle wird ausgeben.
Beim 2. Durchlauf ist i=39 also ist die Bedingung wieder erfüllt.
Beim 3. Durchlauf ist i=38 und wird zu 37 also ist die bedingung noch einmal erfüllt.
Das die erste Tabelle immer leer ist liegt daran, das dir count() zurück gibt wiviele
Zeilen es sind, da im array die Zählerei immer bei 0 begonnen wird, ist deine
Arrayfelder im ersten durchlauf leer, sind es 40 Zeilen gibt es im array $lines nur
die Elemente 0-39.
wenn du den code so umschreibst:
$zeile = $lines[$i-1];
müssten alle 3 Tabellen mit daten gefüllt sein.


gruß tob
 
Great Thanks
Ich muss sagen das diese Variante eine bestimmte Anzahl von Einträgen auszulesen
und dann noch von unten nach oben hierfür mit eine der einfachsten Varianten ist.
PHP selber scripten macht echt Spaß :)

PHP:
$lines = file("edit.txt");  //ließt die datei ein und jede neue zeile einen lines[1] .. array ist das
$a = count($lines); //werden die anzahl der zeilen gezählt


$u = $a - 2;  //-2 gibt an wieviel zeilen ausgegeben werden sollen
for ($i = $a; $i >= $u ;$i--)
{ $zeile = $lines[$i];  //ließt zeile ein
    list($user,$topic,$text,$datum,$icon,$link,$na2) = explode ("|--|", $zeile);  //unterteilt dieses nochma in mehrere Arrays die durch |--| getrennt sind
.. echo wird man selber können
für die die Funktion auch verwenden möchten und sie auch verstehen wollen
mfg melstik
 
Zurück