Inhalt einer Textdatei mittels schleife ausgeben

schau dir den Inhalt von $anzeigen mit
PHP:
echo '<pre>';
print_r($anzeigen);
echo '</pre>';
an. Da siehst du zum einen ob alle Datensätze korrekt ausgelesen wurden und zum anderen solltest du da auch sehen wo die leere Tabelle am Ende herkommt.

btw: schau dir mal die Funktion file_get_contents() an.
 
$datei = "anzeigen.txt";
$open = fopen($datei, "r");

while (!feof($open))
{
$string = fgets($open,1000);
$string = explode("|||", $string);

echo "Hier den HTML Code eintragen und die Werte mit $string[0], $string[1] etc. aufrufen";
}

fclose($open);
 
dragonlord hat gesagt.:
Ausserdem zeichnet er noch einen Leere Tabelle da hin. Weiss nicht wieso.

Naja überprüfe mal deine txt Datei, ob dort am Ende vielleicht ein Leerzeichen ist.
Wenn dort eins ist, dann wird dies nämlich am Ende ausgegeben. Entferne es einfach.
Aber schau danna uch auf deiner Eintragungsseite nach, dass er nicht immer ein hinten dran setzt.

Bei der Ausgabe hilft aber auch schon

PHP:
if( $zeile[0] != "" && $zeile[0] != " " )
{
//Ausgabe
}
 
Zuletzt bearbeitet:
Habe mal den Vorschlag von droni ausprobiert. Da war wieder alles total verschoben. Das ist doch eigendlich komisch, da ich die Tabelle ja nicht verändert habe.

Habe jezt was anderes Probiert:
PHP:
//Anzeigen ausgeben
$fp=fopen("anzeigen.txt","r");
$inhalt=fgets($fp,640000);
if ($inhalt ==""){
 echo "<font color=\"#333333\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"><strong>Es \n";
 echo "sind leider noch keine Anzeigen vorhanden</strong></font> \n";
 
} else {
//$fp=fopen("anzeigen.txt","r");
file_get_contents ("anzeigen.txt",$inhalt);
//$inhalt=fgets($fp,640000); 
$anzeigen = explode("---end---|||",$inhalt); 
foreach($anzeigen AS $zeile) {
$zeile = explode('|||', $zeile); 
// $anzeigen wird zum testen ausgegeben.
echo '<pre>'; 
print_r($anzeigen); 
echo '</pre>'; 
 
echo "<br>\n";
echo "<table width=\"90%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"#CCCCCC\">\n";
echo "  <tr>\n";
echo "	<td width=\"12%\"><font color=\"#000000\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"><strong>$zeile[2]</strong></font></td>\n";
echo "	<td width=\"56%\"><font color=\"#FF0000\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"><strong>$zeile[3]</strong></font></td>\n";
echo "	<td width=\"32%\"><font color=\"#000000\" size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\">von: \n";
echo "	  $zeile[0]<br><a href=\"mailto:$zeile[1]\">$zeile[1]</a></font></td>\n";
echo "  </tr>\n";
echo "</table>\n";
echo "\n";
echo "<table width=\"90%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"#EFEFEF\">\n";
echo "  <tr>\n";
echo "	<td><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">$zeile[4]</font></td>\n";
echo "  </tr>\n";
echo "</table>\n";
echo "<table width=\"90%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"#EAF4DF\">\n";
echo "  <tr>\n";
echo "	<td width=\"68%\">&nbsp;</td>\n";
echo "	<td width=\"32%\"valign=\"top\"><div align=\"right\"><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"><a href=\"admin.php\">-Eintrag \n";
echo "		l&ouml;schen-</a></font></div></td>\n";
echo "  </tr>\n";
echo "</table>\n";
}
}
Er gibt mir immer nur die ersten beiden "Datensätze" aus. Warum? Ich lese die Datei doch komplette mit dem Befehl, file_get_contents, ein ?!
 
Warum setzt du in der Datei die einzelnen biete/suche untereinander...(hatte das erst später gesehen dass du das anders gemacht hast.)

Max Mustermann|||email@adresse.de|||biete|||irgendeintier|||hiernochntexthin
Eva Musterfrau|||andere@emailadresse.de|||suche|||anderestier|||undnochntext
...
...


dann kannste doch viel einfach den einzelnen txt einlesen und verarbeiten.
Und was meinst du mit verschoben?
 
@droni

wie setze ich den den Text der einzelnen Bieter untereinander? Oder wie meinst Du das?
Ich schreibe die Daten folgendermassen in die Datei:
PHP:
$ende="---end---|||";
$neu="$name|||$email|||$status|||$ueberschrift|||$text|||$ende";
$fp = fopen("anzeigen.txt", "a+");
fwrite($fp,$neu);
fclose($fp);
Dann schreibt er doch immer ans Dateiende usw...
Es währe natürlich eine gute Idee die Daten Zeilenweise in die Datei zu schreiben und auch zeilenweise wieder auszulesen. Aber wie geht sowas?
Oder habe ich jetzt einen denkfehler?

Mit verschoben meinte ich, das auf einmal die Zuordnungen $zeile[1],$zeile[2] usw. nicht mehr gestimmt haben und alles durcheinander war.
 
dragonlord hat gesagt.:
@droni
PHP:
$ende="---end---|||";
$neu="$name|||$email|||$status|||$ueberschrift|||$text|||$ende";
$fp = fopen("anzeigen.txt", "a+");
fwrite($fp,$neu);
fclose($fp);
OK. Das mit Zeilenweise schreiben habe ich hinbekommen. Und zwar habe ich an die Variable $ende einfach ein \n drangehängt. Jetzt schreibt er die Daten Zeilenweise.
Aber wie lese ich die jetzt auch zeilenweise aus
 
OK. Hab es hinbekommen:

PHP:
$fp=fopen("anzeigen.txt","r");
while($line=fgets($fp,1024)) {
$zeile = explode('|||', $line);

Läuft super.
Danke an alle. Es kommen mit sicherheit noch einige Fragen von mir :-)
 
Zurück