Inhalt einer Textdatei mittels schleife ausgeben

dragonlord

Erfahrenes Mitglied
Hallo zusammen,

ich schreibe daten in eine Textdatei. Der Aufbau dieser Datei sieht folgendermassen aus:
Code:
Christian Testuser|||test@web.de|||biete|||Futterelefanten|||Bitte Futtertiere für Riesenreptos. Preis je Kilo. Mailt mir einfach.|||---end---|||Markus Mustermann|||keine@mail.mir|||suche|||Terrarium|||Suche 10x10 m Terrarium. Tele: 123-234|||---end---|||

Ich möchte die Daten jetzt in Tabellen ausgeben.
Mit $zeile=explode("|||",$a); kann den String ja in ein Array schreiben.

Nur wie geht das mit der Schleife. Ich will nämlich ein kleines Kleinanzeigensystem
schreiben. Jede Anzeige steht später in einer Tabelle. In der Textdatei haben ich das ende jeder Anzeige mittels dem String : "---ende---" gekenzeichnet.

Leider kenn ich mich mit for und/oder foreach gar nicht aus. Kann mir da jemand Helfen?

Gruss dragonlord
 
Versuchs mal so:

PHP:
$string="Christian Testuser|||test@web.de|||biete|||Futterelefanten|||Bitte Futtertiere für Riesenreptos. Preis je Kilo. Mailt mir einfach.|||---end---|||Markus Mustermann|||keine@mail.mir|||suche|||Terrarium|||Suche 10x10 m Terrarium. Tele: 123-234|||---end---|||";
$zeile=explode("|||",$string);
foreach($zeile AS $var)
{
	echo $var . "<br>";
}

Ich bin davon ausgegangen, dass du die Datei bereits in die Variable $string eingelesen hast.
 
Hab es ausprobiert. Leider klappt das nicht. So gibt er mir etliche mal immer wiedern den "Ersten Eintrag zurück". Der andere wird gar nicht berücksichtigt.

Hier mal mein Code:

Code:
//Anzeigen ausgeben
$fp=fopen("anzeigen.txt","r");
$inhalt=fgets($fp,64000);
$anzahl=count("anzeigen.txt");
$zeile=explode("|||",$inhalt);
//while (!feof("anzeigen.txt'))
foreach($zeile AS $var)
{
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]&nbsp;&nbsp;&nbsp;<a href=\"<A href="mailto:$zeile[1]\">$zeile[1]</a></font></td>n">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=\"#CCCCCC\">\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";
}
 
Was hast du da unten denn auch fürn KuddelMuddel reingebastelt?
Versuchs mal so:

PHP:
//Anzeigen ausgeben
$fp=fopen("anzeigen.txt","r");
$inhalt=fgets($fp,64000);
$zeile=explode("|||---end---|||",$inhalt);
foreach($zeile AS $eintrag)
{
	$wert = explode("|||",$eintrag); ?>
	<br>
	<table width="90%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC">
	 <tr>
		<td width="12%"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong><?PHP echo $wert[2]; ?></strong></font></td>
		<td width="56%"><font color="#FF0000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong><?PHP echo $wert[3]; ?></strong></font></td>
		<td width="32%"><font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif">von: 
		 <?PHP echo $wert[0]; ?>&nbsp;&nbsp;&nbsp;<a href="mailto:<?PHP echo $wert[1]; ?>"><? echo $wert[1]; ?></a></font></td></td>
	 </tr>
	</table>
	<table width="90%" border="0" cellpadding="0" cellspacing="0" bgcolor="#EFEFEF">
	 <tr>
		<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><?PHP echo $wert[4]; ?></font></td>
	 </tr>
	</table>
	<table width="90%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC">
	 <tr>
		<td width="68%">&nbsp;</td>
		<td width="32%"valign="top"><div align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="admin.php">-Eintrag 
			l&ouml;schen-</a></font></div></td>
	 </tr>
	</table>
<?
}

Ich übernehme keine Haftung, ist ungetestet! ;-)
 
versuch mal:
PHP:
$string="Christian Testuser|||test@web.de|||biete|||Futterelefanten|||Bitte Futtertiere für Riesenreptos. Preis je Kilo. Mailt mir einfach.|||---end---|||Markus Mustermann|||keine@mail.mir|||suche|||Terrarium|||Suche 10x10 m Terrarium. Tele: 123-234|||---end---|||";
$anzeigen = explode("|||---end---|||",$string);
foreach($anzeigen AS $anz) {
    $anz = explode('|||', $anz);
    echo "$anz[0] ($anz[1]) <br>";
    echo "$anz[2] $anz[3] <br>";
    echo "$anz[4] <br><br>";
}
 
Leider geht das auch nicht.
Jetzt seigt er mir 3 mal den ersten EIntrag an, aber die Tabellen sind total verschoben.
Ausserdem sind die eMail links ect. jetzt der Text (?) und umgekehrt. ()

Das muss aber auf jeden Fall irgendwie so gehen. Aber wie ?
 
@BobDerMeister

So sind wir auf jeden Fall auf dem richtigen Weg. Es sieht so aus als würde es laufen.
Wenn nicht meld ich mich nochmal. Danke
 
schau dir am besten mal den Inhalt der Variablen mittels print_r() an. ich denke dann soltest du auch verstehen wie du die eMail in den Link und Text ins richtige Feld bekommst.
 
Sorry dragonlord...
Aber vom verhalten her müsste mein letzter Code genau dasselbe ausspucken wie der von Bob.
Das mit dem vertauschten usw, kannst du ja wohl anpassen? Anhand der Nummern innerhalb von $wert[]. Guck dir einfach an an welcher Stelle sie in der txt eingetragen werden und pass das an.

Und das mit dem Verschieben der Tabellen liegt am HTML, das kannst du wohl auch selbst?!
 
@Lars

weiss nicht. Vieleicht habe ich ja beim Einfügen auch einen Fehler gemacht.

@Alle
Also, sind auf dem richtigen Weg. Quasi läuft es. Das einzige was ich festgestellt habe ist das er nach dem 5. o. 6. Eintrag die Sachen nicht mehr ausgibt. Die Daten werden zwar korrecktt in der Datei abgelegt, aber die Ausgabe Funktioniert dann nicht mehr.
Das Script liegt zum test auf diesen Server:
http://www.tuerlingedv.de/kleinanzeigen/anzeige.html

Ausserdem zeichnet er noch einen Leere Tabelle da hin. Weiss nicht wieso.
Hier nochmal mein Code:
PHP:
<?php

//Anzeigen ausgeben
$fp=fopen("anzeigen.txt","r");
$inhalt=fgets($fp,6400000);
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");
$inhalt=fgets($fp,64000); 
$anzeigen = explode("|||---end---|||",$inhalt); 
foreach($anzeigen AS $zeile) {
$zeile = explode('|||', $zeile); 

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";
}
}
?>

Werde mal morgen weiterschauen. gute Nacht zusammen.
 
Zurück