Zum Inhalt springen

Datei in Array einlesen


Empfohlene Beiträge

Hallo,

ich möchte gerne ein kleines Newssystem coden, leider funktioniert mein Code nicht so wie ich es möchte, bzw. er geht überhaupt nicht :-). Ich finde Ihn aber eigentlich ganz logisch, kann mir jemand vielleicht kurz auf die Sprünge helfen, ich denke die Struktur was es tun soll kann man erkennen:


//News und Betreff Dateien in ein Array einlesen

for($i=0; $i=9; $i++) {
$array_betreff=file("../../../newssystem/betreff.dat");
$array_news=file("../../../newssystem/news.dat");
}

//Neuer Betreff und News eintragen
$buffer = "$betreff\n";
$fd = fopen("../../../newssystem/betreff.dat","w+");
fwrite ($fd, $buffer);
fclose ($fd);
$buffer = "$news\n";
$fd = fopen("../../../newssystem/news.dat","w+");
fwrite ($fd, $buffer);
fclose ($fd);

//Alte News jeweils eine Position nach unten schieben
for($i=0; $i=8; $i++) {
$buffer = $array_betreff[$i]."\n";
$fd = fopen("../../../newssystem/betreff.dat","a");
fwrite ($fd, $buffer);
fclose ($fd);
$buffer = $array_news[$i]."\n";
$fd = fopen("../../../newssystem/news.dat","a");
fwrite ($fd, $buffer);
fclose ($fd);
}
[/PHP]

Danke,

Gruß MCT

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also mit dem Ausschnitt:


for($i=0; $i=9; $i++) {
$array_betreff=file("../../../newssystem/betreff.dat");
$array_news=file("../../../newssystem/news.dat");
}
[/PHP]

wollte ich eigentlich eine Textdatei mit 10 Zeilen in ein Array mit 10 Plätzen einlesen. Ich befürchte in diesen 2 Zeilen steckt auch das Problem.

Er tut reinweg nichts, wenn ich das Skript ausführe dauert es erst ein wenig und dann erhalte ich eine leere Seite und in den Textdateien hat sich nichts getan.

Ich würde gerne immer in der 1. Zeile der Textdatei eine neue Zeile eintragen und die restlichen 9 um eine Zeile nach unten schieben, die 10. Zeile fällt dann schließlich weg.

Gruß,

MCT

Link zu diesem Kommentar
Auf anderen Seiten teilen

also das einlesen klappt so nicht. du schreibst ja dann einfach 10 mal die gesamten dateien (und zwar immer wieder die selben) in die beiden arrays.

ich mach nie was mit files,

aber das hier solte helfen:

http://php3.de/manual/de/function.file.php

und vor allem:


<?php

// Liest eine Datei in ein Array. Hier gehen wir über HTTP, um die

// HTML Datei einer URL zu bekommen

$lines = file ('http://www.example.com/');


// Durchgehen des Arrays und Anzeigen des HTML Source inkl. Zeilennummern

foreach ($lines as $line_num => $line) {

   echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br>\n";

}


// Ein anderes Beispiel: Einlesen einer Webseite in einen String.

// Siehe auch file_get_contents().

$html = implode ('', file ('http://www.example.com/'));

?> 

statt dem foreach musst du halt deine for 0 - 9 schleife einbauen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

also ich bin heute nochmal mit klareren Gedanken an die Sache ran gegangen, aber irgendwie will der Code nicht so wie ich will:


$array_betreff=file("../../../newssystem/betreff.dat");
$array_news=file("../../../newssystem/news.dat");

for($i=0; $i>=9; $i++) {
echo $array_betreff[i];
echo $array_news[i];
}
echo "test";
[/PHP]

Er tut nicht, noch nicht einmal spuckt er mir das "test" auf den Bildschirm. Die Variablen $betreff und $news werden in einem Formular eingelesen und die Textdateien bestehen auch mit je 10 Zeilen Inhalt.

Was mache ich falsch? Ist bestimmt wieder nur ne Kleinigkeit...

Gruß,

MCT

Link zu diesem Kommentar
Auf anderen Seiten teilen

Er tut nicht, noch nicht einmal spuckt er mir das "test" auf den Bildschirm. Die Variablen $betreff und $news werden in einem Formular eingelesen und die Textdateien bestehen auch mit je 10 Zeilen Inhalt.

Was mache ich falsch? Ist bestimmt wieder nur ne Kleinigkeit...

Ich schätze dein error reporting ist aus. Zum Debuggen würd ichs lieber andrehen. Wenns erlaubt ist (und nen Apache) am besten über .htaccess


php_flag display_errors 1

php_flag error_reporting 1

Ansonsten über die php.ini oder ini_set wie gewöhnlich. Ich schätze er schmeisst dir einen Fehler schon beim file(), der aber unterdrückt wird.

Darf dein php eigentlich auf "../../.." Zugreifen?

Link zu diesem Kommentar
Auf anderen Seiten teilen


error_reporting( E_ALL);

$array_betreff=file("../../../newssystem/betreff.dat") or exit( "Kann betreff.dat nicht öffnen");
$array_news=file("../../../newssystem/news.dat")or exit( "Kann news.dat nicht öffnen");

for($i=0; $i>=9; $i++) {
echo $array_betreff[i];
echo $array_news[i];
}
echo "test";
[/PHP]

Vielleicht solltest du auch prüfen ob du überhaupt diese datei aufrufst oder ob du vielleicht im falschen pfad bist

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nochmal ich,

ich habe nun nochmal den Code überarbeitet und sehr viele Fehler beseitigt. Zuerst einmal der Inhalt der *.dat Dateien vor dem Skriptaufruf:

News:

News1

News2

...

News10

Betreff:

Betreff1

Betreff2

...

Betreff3

Dann kommt folgendes Skript zum Einsatz (Variablen §news und $betreff werden in einem Formular vorher eingelesen):


//News und Betreff Dateien in ein Array einlesen
$array_betreff=file("../betreff.dat");
$array_news=file("../news.dat");

//Neuer Betreff/News in Datei schreiben und alte Datensätze löschen
$buffer = "$betreff\n";
$fd = fopen("../betreff.dat","w+");
fwrite ($fd, $buffer);
fclose ($fd);
$buffer = "$news\n";
$fd = fopen("../news.dat","w+");
fwrite ($fd, $buffer);
fclose ($fd);

//Alte News jeweils eine Position nach unten schieben
for($i=1; $i>=9; $i++) {
$buffer = $array_betreff[$i]."\n";
$fd = fopen("../betreff.dat","a");
fwrite ($fd, $buffer);
fclose ($fd);
$buffer = $array_news[$i]."\n";
$fd = fopen("../news.dat","a");
fwrite ($fd, $buffer);
fclose ($fd);
}
[/PHP]

Nun steht in den *.dat Dateien folgendes:

News:

[color=Teal]NewsTest[/color]

[CURSOR STEHT HIER]

Betreff:

[color=Teal]Betreff Test[/color]

[CURSOR STEHT HIER]

Die farbigen Strings sind vorher in den Variablen $news und $betreff gespeichert worden mittels des Formulars.

Problem:

Normalerweise sollte die neuste News oben in der ersten Zeile der *.dat Datei stehen und der Rest um ein nach unten geschoben werden. Die Zeile 10 fällt dann schließlich weg. Also nach jedem Eintrag fährt der folgende Eintrag eine Zeile runter bis er schließlich nach der 10 Position verschwindet.

Kann mir einer sagen warum das Skript das nicht tut sondern nur die neuste Zeile in der Dtaei speichert und der Rest wegfällt?

MfG and Thanks

MCT

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...