PHP Laufschrift
-
Seit wann kann eine Laufschrift Daten aus Dateien einlesen?
Laufschrift und PHP?
Mhh ...
-
$file = fopen("laufschrift.txt","r"); $str=fread($file,1000); $str = explode("|",$str); $x=0; while($str[$x]!="") { $laufschrift = $str[$x]." "; $x++-, } echo '<marquee>>> '.$laufschrift.'<< | >>.......<<</marquee>';
probier das ma
-
Ok Danke probier ich mal.
Hab jetzt aber noch n neues Problem.
Handelt sich um die selbe Datei. also mit blubb und so.
Die ersten beiden Werte sind Datumswerte. Sprich 12. oder sowas.
Der erste Wert ist der Tag, der zweite ist der Monat. Jetzt will ich per PHP Script da weis einfügen lassen. Also das Script soll gucken, wie das Datum ist und denn in die richtige Stelle das Datum schreiben. Wie mache ich das??
Zur Not kann ich den Punkt ja weglassen und einfach nacher im Script das die Datei ausliest wieder dazu setzen.
MFG
-
Desert Storm schrieb:
Ok Danke probier ich mal.
Hab jetzt aber noch n neues Problem.
Handelt sich um die selbe Datei. also mit blubb und so.
Die ersten beiden Werte sind Datumswerte. Sprich 12. oder sowas.
Der erste Wert ist der Tag, der zweite ist der Monat. Jetzt will ich per PHP Script da weis einfügen lassen. Also das Script soll gucken, wie das Datum ist und denn in die richtige Stelle das Datum schreiben. Wie mache ich das??
Zur Not kann ich den Punkt ja weglassen und einfach nacher im Script das die Datei ausliest wieder dazu setzen.
MFGdas code ich dir jetzt nicht hin aber theoretisch kann ichs erklären
wenn du in eine datei die ersten 3 sachen also mit trennzeichen meinetwegen |
27|09|1990
indiesem fall tag|monat|jahr
wenn du das immer am anfang hast ...
du kannst ja dann exploden mit trennzeichen in $str;
dann ist $str[0] der tag $str[1] der monat und $str[2] das jahrverstanden?
-
Ja das verwernde ich ja schon immer wenn ich die Datei auslese. Da werden halt die Daten in ein array kopiert wobei jede Spalte in der Datei einer Array Spalte entspricht.
Das du mir das codest verlang ich auch nich.
Die Theorie reicht schon.
Weil nach meiner Theorie müsste ich erstmal nach dem Monat vergleichen, weil ich ja mehrere Einträge haben kann, die am 12. Tag des Monats sind oder so.
Und denn müsste ich ja irgendwie abspeichern wo ich bin, damit ich den Monat nicht verliere und weiß wo ich einfügen muss und denn muss ich ja noch nach dem Tag vergleichen und denn irgendwann einfügen.
Weiß nur nicht wirklich wie ich das machen soll.
Das was mir dazu einfällt, das man es mit einer while Schleife machen könnte oder?
-
dann vergleich doch ersten den monat geht doch mit if's
-
Also ich habs jetzt mal das so probiert, aber es klappt nicht. Er fügt nichts in die Datei ein.
while($zeile = fgets($fo2, 500)) { $daten = explode(" | ", $zeile); if ($daten[2] <= $Monat AND $daten[1] <= $Tag) { fputs($fo2, $copy3_str); } }
-
bitte bedenke das du die datei mit w öffnen musst für write^^
-
So viel ich weiß kannst du auch nicht einfach irgendwo zwischendrin Daten einfügen, da dadurch der darauffolgende Inhalt überschrieben wird. Du musst also erst alles auslesen und danach wieder alles (inkl. des neuen Datensatzes) zurückschreiben - den Text vor dem neu einzufügenden kannst du auch lassen wie er ist, aber zumindest für den Text ab der Stelle wo du in die Datei hineinschreibst musst du vorher sichern, damit er nicht weg ist.
Und natürlich - wie BG-World schon sagte - musst du die Datei auch mit Schreibrechten geöffnet haben...
-
Ok also habs nochmal überarbeitet, aber es funktioniert immernoch nicht. Irgendwie komme ich nie in die If-Anweisung, weil die Bedingungen nicht erfüllt sind.
Das einzige was ich mir vorstellen kann, wodran es liegt ist, dass er alles als Text einliest und denn halt der Vergleich als Zahl nicht funktioniert.while($zeile = fgets($fo2, 500)) { $daten = explode(" | ", $zeile); fputs($fo3, $zeile); if ($daten[2] <= $Monat && $daten[1] <= $Tag) { fputs($fo3, $copy3_str); } }
Gruß
-
Kann es sein, dass du den Index falsch zählst?! Müsste nicht Tag in 0 und Monat in 1 stehen?!
-
Hmm ok dummer Fehler von mir geb ich zu.
Jetzt ist hab ich aber das Problem, dass er nach der Zeile, die er eingefügt hat, keinen Zeilenumbruch macht. Wie kann ich den noch einfügen?
-
Ok habs jetzt gelöst. Danke für eure Hilfe. Aber jetzt nochmal zurück zum ursprünglichen Thema dieses Threads.
Was genau das Problem ist, habe ich ja vorher schon beschrieben und das ich mich eventuell etwas unklar ausgedrückt habe.
Also ich habe halt wie auch mit dem kopieren eine Datei, wo 4 Spalten drin sind und ca 30 Zeilen.
Jetzt wollte ich das in der Form eine Laufschrift machen.> daten[0] daten[1] daten[2] << | >> daten[0] daten[1] daten[2] << | >> usw.
Wobei in jedem von diesen Pfeilen jeweils die Daten aus einer Zeile stehen. Wie kann ich das umsetzen. Ich kann ja wie vorher eine Schleife verwenden. Weiter weiß ich aber nich.
MFG
-
Was genau ist denn dein Problem? Wenn du in einer Schleife die einzelnen Einträge mit explode zerlegt hast, musst du sie doch nur noch mit einem echo ausgeben? Und wenn er sich bewegen soll machst du einfach ein marquee außenrum...
-
Aber wenn ich das marquee in ein echo mit in die Schleife packe, wird doch bei jedem Durchlauf der Schleiße eine neue marquee angelegt oder?
Und ich brauch ja nur eine.
-
dann gib es doch einfach vor (<marquee>) bzw. nach (</marquee>) deiner Schleife aus...
-
Aso meinst du das.
OK Danke für die Hilfe auch wenn das eine Thema nicht in den Thread gehörte. Ohne euch wäre ich jetzt noch genauso dumm wie vorher!
MFG
-
das mit dem marquee hatte ich aber schon in meinem code drin den ich gepostet hatte^^
-
Sorry wenn ich den Thread nochmal aufgreifen muss aber ich hab noch ein Problem bei dem Einfügen in die Datei.
Also ich hab folgenden Code.while($zeile = fgets($fo2, 500)) { $daten = explode(" | ", $zeile); fputs($fo3, $zeile); if ($daten[1] <= $Monat) { if ($daten[0] <= $Tag) { fputs($fo3, $copy3_str); } } }
Und ich habe 2 Zeilen die wie folgt beginnen:
01 | 10 | ...
14 | 10 | ...
Und da soll jetzt nach der 14 folgendes eingefüt werde
20 | 10 | ...
Ich hab das denn in meine Masek eingegeben und das einfügen lassen.
Nur leider wurde das einmal nach der 01 und einmal nach der 14 eingefügt, was ja nach dem Code her auch völlig korrekt ist, aber ich wills nur einmal nach der 20 eingefügt haben.
Wie mache ich das?MFG
PS: Nochmal sorry
-
Versuche es mal irgendwie so (ungetestet)...
$inserted = false; while($zeile = fgets($fo2, 500)) { $daten = explode(" | ", $zeile); // Wenn es noch nicht eingefügt wurde und jetzt ein neueres Datum kommt, dann muss es hier eingefügt werden if( !$inserted && ( ($daten[1] > $Monat) || (($daten[1] == $Monat) && ($daten[0] >= $Tag)) ) ) { fputs($fo3, $copy3_str); $inserted = true; } fputs($fo3, $zeile); } // falls es hier noch nicht eingefügt wurde, dann gehört es ganz ans Ende if(!$inserted) { fputs($fo3, $copy3_str); $inserted = true; }