daten in dateischreiben - neustes immer oben
stefan
- php
Hi leute
ich bin nicht gard so der PHP checker, jedoch möchte ich mir ein kleines newsscript schreiben.
mein problem ist nun, wenn ich etwas in eine txt datenbank schreibe, und ich dann wieder etwas draufposten will.. erscheint das neuste nicht oben sonder eben unten wies bei txt datenbanken soüblich ist..
wie kann ich das nun machen das die neustens postings oben stehen?
wär nett wenn ihr mir helfen könntet.
danke ciao stefan
Hi leute
ich bin nicht gard so der PHP checker, jedoch möchte ich mir ein kleines newsscript schreiben.
mein problem ist nun, wenn ich etwas in eine txt datenbank schreibe, und ich dann wieder etwas draufposten will.. erscheint das neuste nicht oben sonder eben unten wies bei txt datenbanken soüblich ist..
wie kann ich das nun machen das die neustens postings oben stehen?
wär nett wenn ihr mir helfen könntet.
danke ciao stefan
HI!
Wie machst Du das denn bisher?
Wahrscheinlich einfach ans Ende dran hängen?
Wie wäre sowas:
Lies die alten Einträge aus und speichere diese temporär (als String), lösche dann den ganzen Inhalt des Files, schreib den neuen Eintrag rein und dann das Temporäre hintendran.
Schon hast du es richtig herum.:)
Grüße, Buergle
PS: Mit ein wenig Quelltext könnte man sicher etwas konkreter antworten...
Hi..
ja wär cool wennst mir des genauer zeigen könntest.. wobei ich jetzt dein prinzip schon verstanden hab.
quelltextz wär dann so:
<?
//Inistialisierung
$dateiname = "news.txt";
//Schreiben
if(isset($text) && $text <> "")
{
$zeile = "<b>News:</b> $news <br>";
$datei = fopen ($dateiname, "a");
if($datei)
{
fputs($datei, $zeile);
fclose($datei);
}
}
//Lesen
if(file_exists($dateiname))
{
$datei = fopen ($dateiname, "r");
if($datei)
{
while($zeile = fgets($datei, 255))
{
echo stripslashes($zeile) . "<br>\n";
}
fclose($datei);
}
}
?>
Hi..
<?
$dateiname="test.txt"; //leg so eine datei ins selbe verzeichnis wie dieses script und achte auf die schreibrechte auf dem server!
$text="blahblah"; //für was ist diese variable ($text) nötig?
$news="Neuigkeit";
if(isset($text) && $text <> "")
{
$datei = fopen($dateiname,"r+");
if($datei)
{
$inhalt= fread($datei,filesize($dateiname));
fclose($datei);
}
$eintrag = "<b>News:</b> $news <br> \n $inhalt";
//das alte wurde oben ausgelesen und hier hinter(unter) das neue gehängt
$datei = fopen($dateiname,"w+");
//öffnen, pointer auf dateianfang setzen
if($datei)
{
fputs($datei,$eintrag); //alles reinschreiben
fclose($datei);
}
}
//Lesen
if(file_exists($dateiname))
{
$datei = fopen ($dateiname, "r");
if($datei)
{
while($zeile = fgets($datei, 255))
{
echo stripslashes($zeile) . "<br>\n";
}
fclose($datei);
}
}
?>
Testen musst Du es selbst :)
Grüße, Buergle
Hallo
Das Sortieren muß nicht unbedingt beim Schreiben passieren.
Alternativvorschlag:
<?
//Inistialisierung
$dateiname = "news.txt";//Schreiben
if(isset($text) && $text <> "")
^^^^
Was ist das? Wenn du abfragen willst, ob $text nicht leer ist, benutze !empty($text)
{
$zeile = "<b>News:</b> $news <br>";
Mit $zeile = $news;, wobei du dir das auch klemmen kannst,
hättest du eine flexiblere, einer Datenbank nähere Struktur.
$datei = fopen ($dateiname, "a");
if($datei)
{
fputs($datei, $zeile);
Ginge halt auch mit:
fputs($datei,$news."\n");
...
fclose($datei);
}
}
...
dann könntest du nämlich mit
$inhalt = file($dateiname);
die News in ein Array einlesen, und zwar jede News in eine Zeile (ein Arrayelement).
Und das Array kannst du dann sortieren, oder halt auch "umdrehen".
Dann steht der letzte (neueste) Eintrag oben und der Älteste unten.
Das Ganze würde mit einer Schleife ausgegeben, z.B. so:
echo "<b>News:</b><br>"; // Überschrift vor der Schleife
for($i=0;$i<count($inhalt);$i++)
{
$zeile = stripslashes($inhalt[$i]); // zur puren Anzeige in einer HTML-Seite nicht nötig
echo $zeile."<br>";
}
?>
Tschö, Auge