zeilenweises Schreiben
Patrick Schröder
- php
0 Cheatah
Hallo an alle!
Ich habe folgendes Problem:
Ich lese zeilenweise Daten aus einer Datei aus, gebe die über ein Formular aus, um sie gegebenenfalls zu ändern. Dazu werden die einzelnen Zeilen in ein Array geschrieben. Jede Zeile entspricht dann einem Array-Teil.
Nach der Änderung bekomme ich es irgendwie nicht hin, das Array auch wieder zeilenweise in die Datei zu schreiben! Was immer ich ausprobiere, es wird in die erste Zeile geschrieben, aber nicht untereinander.
Mittlerweile bin ich zu dem Schluss gekommen, dass implode(...) wohl der falsche Weg ist! Welcher ist der Richtige?
Ein Tipp wurde mir im Bezug auf eine Schleife gegeben, die dann zeilenweise schreibt, aber wieso auch immer, verstehe ich dabei nur Bahnhof! Gibt es noch ne einfachere Möglichkeit?
Gruß Patrick
P.S. Auf meinem Server ist PHP in der Version 4.0.6
Hi,
Nach der Änderung bekomme ich es irgendwie nicht hin, das Array auch wieder zeilenweise in die Datei zu schreiben! Was immer ich ausprobiere, es wird in die erste Zeile geschrieben, aber nicht untereinander.
schreibst Du denn am Ende jeden Textes, den Du als "Zeile" betrachtest, auch einen Zeilenumbruch?
Mittlerweile bin ich zu dem Schluss gekommen, dass implode(...) wohl der falsche Weg ist! Welcher ist der Richtige?
implode() ist richtig. Verknüpfungszeichen sollte der bei Dir gültige bzw. von Dir erwünschte Zeilenumbruch sein.
Cheatah
Hallo Cheatah,
Hi,
Nach der Änderung bekomme ich es irgendwie nicht hin, das Array auch wieder zeilenweise in die Datei zu schreiben! Was immer ich ausprobiere, es wird in die erste Zeile geschrieben, aber nicht untereinander.
schreibst Du denn am Ende jeden Textes, den Du als "Zeile" betrachtest, auch einen Zeilenumbruch?
Ja, schreibe ich, wobei das ja kein zusammenhängender Text ist, sondern einzelne Teile, wo jeder Teil in eine bestimmte Zeile gehört.. und innerhalb von implode wird kein zeilenumbruch angenommen! Jedenfalls keiner, der auch zum tatsächlichen Zeilenumbruch (in der Datei) führt.
Mittlerweile bin ich zu dem Schluss gekommen, dass implode(...) wohl der falsche Weg ist! Welcher ist der Richtige?
implode() ist richtig. Verknüpfungszeichen sollte der bei Dir gültige bzw. von Dir erwünschte Zeilenumbruch sein.
$daten[0] = $daten00; // der Teil ist da, um die Variablen des
$daten[1] = $daten01; // Formulars nach der Übergabe wieder an
$daten[2] = $daten02; // die richtige Stelle zu setzen. Hatte
$daten[3] = $daten03; // vorher nicht so geklappt, wie ich das
$daten[4] = $daten04; // wollte.
$daten[5] = $daten05;
$daten[6] = $daten06;
$daten[7] = $daten07;
$daten[8] = $daten08;
$daten[9] = $daten09;
$fileopen = fopen("daten/$NICK.txt", "w+");
$DATEN_NEU = implode('\n', $daten);
echo $DATEN_NEU;
fwrite($fileopen, $DATEN_NEU);
fclose($fileopen);
?>
Das ist der Teil, der das Problem betrifft. In $DATEN_NEU sind die Daten hinterher nie untereinander, sondern immer hintereinander!
und innerhalb von implode habe ich schon einige Varianten ausprobiert.
Danke dir soweit...
Gruß Patrick
Hi,
innerhalb von implode wird kein zeilenumbruch angenommen!
der Funktion ist es egal, womit Du die Listenelemente zusammenfügen willst.
Jedenfalls keiner, der auch zum tatsächlichen Zeilenumbruch (in der Datei) führt.
Die Frage lautet: Was genau ist ein Zeilenumbruch?
$DATEN_NEU = implode('\n', $daten);
echo $DATEN_NEU;
Und was steht im Quellcode der Ausgabe? (Eine gekürzte Fassung mit zwei oder drei kurzen Elementen genügt.)
In $DATEN_NEU sind die Daten hinterher nie untereinander, sondern immer hintereinander!
Gemäß wessen Interpretation?
und innerhalb von implode habe ich schon einige Varianten ausprobiert.
Beispielsweise?
Cheatah
Hallo Cheatah,
--------------------------------------------
innerhalb von implode wird kein zeilenumbruch angenommen!
der Funktion ist es egal, womit Du die Listenelemente zusammenfügen willst.
Jedenfalls keiner, der auch zum tatsächlichen Zeilenumbruch (in der Datei) führt.
Die Frage lautet: Was genau ist ein Zeilenumbruch?
$DATEN_NEU = implode('\n', $daten);
echo $DATEN_NEU;
Und was steht im Quellcode der Ausgabe? (Eine gekürzte Fassung mit zwei oder drei kurzen Elementen genügt.)
In $DATEN_NEU sind die Daten hinterher nie untereinander, sondern immer hintereinander!
Gemäß wessen Interpretation?
und innerhalb von implode habe ich schon einige Varianten ausprobiert.
Beispielsweise?
Cheatah
----------------------------------------
Ich sollte vielleicht dazusagen, dass ich alles andere als ein Programmierer bin und von daher mit gewissen Fachworten rein gar nichts anfangen kann. Von daher habe ich auch keine Ahnung, was du mit der Interpretation usw. meinst.
Ich möchte eigentlich nur, das folgendes Problem gelöst wird:
$DATEN_NEU = implode('\n', $daten);
Herauskommen tut etwas wie: Hase\nNase\nKasper\nTest
wenn ich schreibe: $DATEN_NEU = implode('<br>', $daten);
Optisch ist die Ausgabe dann natürlich untereinander wegen dem <br>-Tag, inder Datei steht dann widerum: Hase<br>Nase<br>Kasper<br>Test, um bei dem Beispiel zu bleiben.
Mein Ziel ist aber:
Hase
Nase
Kasper
Test
So soll es hinterher in der Datei stehen. Nur finde ich keinen Anhaltspunkt wie ich das hinbekomme. Auch habe ich noch nicht verstanden, wie ich den Dateizeiger von Zeile zu Zeile bewegen kann um so dann per Schleife etwas in die Datei zu schreiben. Und davon mal abgesehen bin ich durch die genaue Handhabung von bestimmten Schleifen auch noch nicht durchgestiegen.
Das Problem ist hauptsächlich, dass ich von bestimmten Dingen einfach keine Ahnung habe und mir alles mühsam zusammenlese und stundenlang am ausprobieren bin, weil ich nur selten das finde, was ich suche!
Wäre nett, wenn du mir nen direkten Tipp geben kannst, wie ich implode() oder ne andere Funktion verwenden muss, damit ich zu dem genannten Ziel komme! Ich habe Mühe die Dinge aus Büchern und so zu verstehen. Nachvollziehen, warum sich etwas wie bei bestimmten Veränderungen verhält, das klappt einigermaßen! Aber lesen, verstehen und dann selber umsetzen und anwenden können, geht bei mir meist in die Hose.
Bin halt nicht der typische Programmierer, der vielleicht nur zu faul ist etwas nachzulesen. Ich verstehe einfach nicht wenn z.B. bei implode() sowas steht wie
string implode(string glue, array pieces)
Wäre nett, wenn du mir da nen Tipp geben kannst, welche Funktionen ich mir mal genauer angucken sollte, oder was ich ändern sollte, um zu meinem Ziel zu kommen!
LG Patrick
Hi,
Ich sollte vielleicht dazusagen, dass ich alles andere als ein Programmierer bin
hm, dann hast Du ein Problem - das "Self" im Namen dieses Projektes wird hier sehr ernst genommen. Wer ist denn der Programmierer bei euch?
und von daher mit gewissen Fachworten rein gar nichts anfangen kann. Von daher habe ich auch keine Ahnung, was du mit der Interpretation usw. meinst.
Ich habe eigentlich gar keine Fachbegriffe benutzt. "Interpretation" bedeutet genau das, was Du in der Schule gelernt hast.
$DATEN_NEU = implode('\n', $daten);
Herauskommen tut etwas wie: Hase\nNase\nKasper\nTest
Hast Du in der Doku Deiner Programmiersprache nachgesehen, was die einzelnen Elemente - eventuell bis runter zu den Zeichen - des Codes bedeuten?
Optisch ist die Ausgabe dann natürlich untereinander wegen dem <br>-Tag, inder Datei steht dann widerum:
Das beispielsweise meinte ich mit Interpretation: Der Browser interpretiert anders als eine textbasierte Software.
Auch habe ich noch nicht verstanden, wie ich den Dateizeiger von Zeile zu Zeile bewegen kann
Der Begriff "Zeile" ist etwas, was nur der Mensch versteht. Aus Computersicht gibt es sowas nicht; insbesondere nicht aus Dateisicht. Daher gibt es auch keinen Dateizeiger, der irgendwie zeilenweise bewegt werden könnte - höchstens beim Lesen, wenn Du ihm sagst, welche Elemente des (existierenden) Inhalts ein Zeilenende bedeuten.
Und davon mal abgesehen bin ich durch die genaue Handhabung von bestimmten Schleifen auch noch nicht durchgestiegen.
Wo genau hast Du Probleme?
Das Problem ist hauptsächlich, dass ich von bestimmten Dingen einfach keine Ahnung habe und mir alles mühsam zusammenlese und stundenlang am ausprobieren bin, weil ich nur selten das finde, was ich suche!
Man findet am effizientesten etwas, wenn man die zu durchsuchenden Quellen kennt. Daher solltest Du Dich intensiv mit der Doku Deiner Sprache beschäftigen, und zwar nicht nur auf dieses Problem bezogen. Besonders langfristig hilft Dir das mehr als alles andere.
Wäre nett, wenn du mir nen direkten Tipp geben kannst, wie ich implode() oder ne andere Funktion verwenden muss, damit ich zu dem genannten Ziel komme!
Schau Dir vor allem an, was 'Singlequotes' und "Doublequotes" machen, und wo ihre Unterschiede liegen.
Bin halt nicht der typische Programmierer, der vielleicht nur zu faul ist etwas nachzulesen. Ich verstehe einfach nicht wenn z.B. bei implode() sowas steht wie
Erfahrung ist der beste Lehrmeister.
string implode(string glue, array pieces)
^ ^ ^ ^ ^ ^
| | | | | Name des zweiten Arguments
| | | | Variablentyp
| | | Name des ersten Arguments (wird im Doku-Text benutzt)
| | Variablentyp
| Funktionsname
Variablentyp des Ergebnisses
Cheatah