blättern txtdatei

tuttobene

Grünschnabel
Ich mach irgendwo einen Fehler.
das Resultat sollte, aktuell 3 Einträge pro Seite ausgeben.
Ich versuchs rauszufinden, aber im Moment habe ich wahrscheinlich zuviel hingeschaut und sehs nicht mehr. Mir liests die ganze Datei ein und gibt es als sagen wir mal 20 Seiten aus, immer mit der agnzen Datei.

$inhalt = file("anlasse.txt");
$count = count($inhalt);
$max_entries = 3;
$count_sites = ($count-($count%$max_entries))/$max_entries;
if(empty($site)) {
$site = 0;
}
for($i=($count-($site*$max_entries));$i>($count-($site*$max_entries)-$max_entries);$i--) {
natsort ($inhalt);
foreach($inhalt as $zeile){
$daten=explode(";",$zeile[($i-1)]);
echo $zeile "<table width=760 border=0 align='center' cellpadding=0 cellspacing=0>
<tr valign=top>
<td width=7>$daten[0]</td>
<td width=75>$daten[1]</td>
<td width=202>$daten[2]</td>
<td width=220>$daten[3]</td>
<td width=88 align='right'>$daten[4]</td>
<td width=13>&nbsp;</td>
<td width=155>$daten[5]</td>
</tr>
</table>
</table>
";
}
}
echo "<br><br>Seiten:<br>";
for($i=0;$i<=$count_sites;$i++) {
echo "<a href=\"".$PHP_SELF."?site=".$i."\" target=\"_self\">".($i+1)."&nbsp;</a>";
}

Gruss tuttobene
 
Lösung?

Also, ich hoffe, dass du das so meintest, wie ich es jetzt gemacht hab'.
Du hattest auch mehrere Fehler im Script:

Die Zeile
Code:
echo $zeile "<table width=760 border=0 align='center' cellpadding=0 cellspacing=0>
muss
Code:
echo $zeile ."<table width=760 border=0 align='center' cellpadding=0 cellspacing=0>
oder
Code:
echo "$zeile <table width=760 border=0 align='center' cellpadding=0 cellspacing=0>
heissen.

Zur Zeile:
Code:
$daten=explode(";",$zeile[($i-1)]);

$zeile ist doch gar kein Array!

Das Haupt-Problem war aber folgendes:
Code:
foreach($inhalt as $zeile)

Da wird ja der gesamte Inhalt der Textdatei durch gelaufen. Es sollen ja aber nur die 3 aktuellen Seiten (je nachdem, welche Seite ausgewählt wurde) angezeigt werden.
Deshalb habe ich
Code:
for($i=($count-($site*$max_entries));$i>($count-($site*$max_entries)-$max_entries);$i--) { 
natsort ($inhalt);

in

Code:
for($i=($count-($site*$max_entries));$i>($count-($site*$max_entries)-$max_entries);$i--) { 
	$ShowT[] = $inhalt[$i];
}

umgeschrieben.
Dann müsste das nämlich

Code:
	natsort ($ShowT);
		foreach($ShowT as $zeile){
			$daten=explode(";",$zeile);

heißen (falls ich mich nicht irre:) ).
Was vergessen
Hier nochmal das vollständige Script:

Code:
<?php
$inhalt = file("anlasse.txt");
$count = count($inhalt);
$max_entries = 3; 
$count_sites = ($count-($count%$max_entries))/$max_entries;


if(empty($site)) { 
	$site = 0; 
}

for($i=($count-($site*$max_entries));$i>($count-($site*$max_entries)-$max_entries);$i--) { 
	$ShowT[] = $inhalt[$i];
}
	natsort ($ShowT);
		foreach($ShowT as $zeile){
			$daten=explode(";",$zeile);
			echo $zeile ."<table width=760 border=0 align='center' cellpadding=0 cellspacing=0>
			<tr valign=top> 
			<td width=7>$daten[0]</td>
			<td width=75>$daten[1]</td>
			<td width=202>$daten[2]</td>
			<td width=220>$daten[3]</td>
			<td width=88 align='right'>$daten[4]</td>
			<td width=13> </td>
			<td width=155>$daten[5]</td>
			</tr>
			</table>
			</table>";
		}
 
echo "<br><br>Seiten:<br>"; 
for($i=0;$i<=$count_sites;$i++) { 
	echo "<a href=\"".$PHP_SELF."?site=".$i."\" target=\"_self\">".($i+1)." </a>"; 
} 
?>
 
Na, wenn du schon 'ne Woche nach letzten Beitrag antworten möchtest, dann schau dir das doch mal genauer an:

$daten=explode(";",$zeile[($i-1)]);

oder anders:
$zeile[($i-1)]

Wie kann man denn einer Variablen, die kein Array ist, Dimensionen zuweisen?!
Das muss also

$daten=explode(";",$zeile);

heißen!
Und ich wollte damit nur ausdrücken, dass er durch die Dimensionierung von $zeile davon ausging, dass $zeile ein Array ist. Dem war ja aber garnicht so!
Ich hoffe, du kannst das nachvollziehen!

Und übrigens:
Wenn das falsch gewesen wäre, hätte es wohl kaum funktioniert.
Und ich bin dazu geneigt, etwas das nicht funktioniert, auch nicht zu posten, oder dieses zumindest zu korrigieren.
:rolleyes: ;)
 
Dann von Anfang *ggg* @ rootssw

Weisst Du überhaupt was ein String ist? Ich glaube eher nicht. Ein String ist nichts anderes als eine praktischere Variante eines Char-Arrays (Character = 1 Zeichen). Folglich kann man in vielen Sprachen, u.a. auch PHP, auf die einzelnen Zeichen eines String über einen Index zugreifen. :)

Versuch´s mal selbst:
Code:
$test = "abcdefghij";
echo $test[1];

Als Ergebnis erhältst Du dann b auf dem Bidlschirm. :)

Wobei Du schon Recht hast. Ein explode-Befehl auf ein einzelnes Zeichen bringt auch nicht viel. *ggg* ;)
Außerdem habe ich Deine ursprüngliche Antwort dann echt falsch verstanden.

rootssw schrieb:
Und ich bin dazu geneigt, etwas das nicht funktioniert, auch nicht zu posten, oder dieses zumindest zu korrigieren.

Genau wie ich. *fg* ;)
 
Zuletzt bearbeitet:
Nur zur deiner Information:
Das mit dem String war mir durchaus bekannt!
So d u m m bin ich ja nun auch nicht (zumindest nicht ganz so sehr - also beinahe - vielleicht). :rolleyes: ;)
Ich meinte das aber eher im Gesamten.
Es sollte ja schließlich das explode() auf die ganze Zeile und nicht auf ein Zeichen angewendet werden!
Das meinte ich auch mit GENAUER ANSCHAUEN!
Aber so etwas, was wir hier grad machen, führt sowieso zu nichts. Deswegen sehe ich dieses Post hiermit als erledigt an.
 
Zurück