Ludwig Ruderstaller: wie "markiere" ich bestimmete einträge in einer datei...

Beitrag lesen

Hallo,

Auch wenn du schon antworten erhalten hast (die lösungsbeispiele gefallen mir nicht :)

bau deine txt datei als CSV datei auf.

ID;Überschrift;Text

zb.
1;Neue News;Da steht viel text den keiner liest
2;Heute brandaktuell;die zweite news des tages

um die neuws auszugeben genügt ein einfaches:

$file=file('path/to/file.txt');

for($i=0;$i<count($file);$i++){
$data=explode(';',$file[$j]);echo "<h1>".$data[1]."</h1><p>".$data[2]."</p>;
}

Willst du die News hinzufügen bzw ändern solltest du bedenken das die neuerste news oben stehen soll. Und das der User (bzw admin) nur immer eine news ändern kann.

Mit obiger schleife kannst du nun eine tabelle genereriern, bei der der user auswählt welche news er editierien will (dafür hast du die id an erster stelle) ID-1 ist index im array :)

nun ist es ein leichtes wieder mit obiger schleife und einer ifabfrage, nur diese eine news in ein formular zu stellen (header und text getrennt) als hidden feld gibst du die ID der news an.

Wenn du das formular nun wieder erhälst (user drückte auf submit, durchläufst du wieder obige schleife, bis $file[$i][0]==$id ($id, $head, und $subhead kommt aus dem hidden feld bzw aus dem formular. das würde so ausssehen:

$newfile=array();
for($i=0;$i<count($file);$i++){
$data=explode(';',$file[$j]);
if($data[0]==$id){
 $newfile[$i]="$i;$head;$subtext
}else{
 $newfile[$i]=$data[$j];
}
}

Somit steht die news wieder an der gleichen stelle wie vorher.

Um eine neue news an die erste stelle zu setzen verfährst du so ähnlich:

$count=count($file);
$newfile="1;$head;$subhead\n";

for($i=0;$i<count($file);$i++){
$data=explode(';',$file[$j]);
 $newfile.=$data[0]+1";$data[1];$data[2]\n";
}

Somit hast du ein system das du auch leicht um zusätzliche felder erweitern kannst, ohne den ganzen code umschreiben zumüssen. zb wenn du ein Datum, Author name,etc pp hinzufügen willst.

lg
Ludwig

DISCLAIMER: code is untested, sollte aber funktioniern.
Bei fragen, ich schau in ein paar stunden nochmal rein :)