MCTimotheus18 Geschrieben 12. Januar 2005 Geschrieben 12. Januar 2005 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
forTeesSake Geschrieben 12. Januar 2005 Geschrieben 12. Januar 2005 was genau geht denn nicht? $buffer = "$betreff\n"; könnte schonmal ein register_globals problem sein und for($i=0; $i=9; $i++) { $array_betreff=file("../../../newssystem/betreff.dat"); $array_news=file("../../../newssystem/news.dat"); } verstehe ich ehrlich gesagt im moment nicht...
MCTimotheus18 Geschrieben 12. Januar 2005 Autor Geschrieben 12. Januar 2005 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
forTeesSake Geschrieben 12. Januar 2005 Geschrieben 12. Januar 2005 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
MCTimotheus18 Geschrieben 20. Januar 2005 Autor Geschrieben 20. Januar 2005 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
DevilDawn Geschrieben 20. Januar 2005 Geschrieben 20. Januar 2005 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?
kills Geschrieben 21. Januar 2005 Geschrieben 21. Januar 2005 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
MCTimotheus18 Geschrieben 21. Januar 2005 Autor Geschrieben 21. Januar 2005 So, habe jetzt die *.dat Dateien mal in ein anderes Verzeichnis getan, bzw. ins gleiche wo auch der Code liegt. Jetzt bekomme ich mein "test" ausgegeben aber keinesfalls das Array. Das kann doch nicht sein, was ist denn da los :confused: :confused: Please help...
MCTimotheus18 Geschrieben 21. Januar 2005 Autor Geschrieben 21. Januar 2005 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
forTeesSake Geschrieben 24. Januar 2005 Geschrieben 24. Januar 2005 for($i=0; $i>=9; $i++) { wird nur einmal ausgeführt. sollte es nicht for($i=0; $i<=9; $i++) { heissen??
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden