MCTimotheus18 Geschrieben 12. Januar 2005 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
forTeesSake Geschrieben 12. Januar 2005 Teilen 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MCTimotheus18 Geschrieben 12. Januar 2005 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
forTeesSake Geschrieben 12. Januar 2005 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MCTimotheus18 Geschrieben 20. Januar 2005 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DevilDawn Geschrieben 20. Januar 2005 Teilen 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 21. Januar 2005 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MCTimotheus18 Geschrieben 21. Januar 2005 Autor Teilen 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MCTimotheus18 Geschrieben 21. Januar 2005 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
forTeesSake Geschrieben 24. Januar 2005 Teilen 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?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.