sven32
Goto Top

PHP: Wert nur in bestimmter Zeile erhöhen

Hallo Zusammen,

ich habe mir ein kleines Script gebastelt, dass mir in einer Textdatei die als Datenbank fungiert
einen Wert hochzählt. Das heißt jedesmal wenn diese PHP-Datei aufgerufen wird, wird in der Datenbank
fürs aktuelle Jahr, eine Zahl um einen Zähler erhöht. Ansich funktioniert soweit erst einmal alles so
wie gewünscht, allerdings schaffe ich es nicht das Script dazu zu bringen nur Zeile 16 zu ändern
bzw. hochzuzählen, alles andere in der Textdatei soll unverändert bleiben.
Wie ich einen Wert aus Zeile 16 auslesen kann weiß ich bereits aber ich bekomme mein Script einfach
nicht so angepasst das, dass von mir gewünschte Ergebniss eintritt.
Ich hoffe das mir jemand von euch weiterhelfen kann.

Hier mein bisheriges Script


<?php
$datei= "Datenbanken/Datenbank ". date('Y').".txt";
$stellen = 5;
if(file_exists($datei)){
$fp=fopen($datei,"r+");
$zahl=fgets($fp,$stellen);
$zahl++;
rewind($fp);
flock($fp,2);
fputs($fp,$zahl,$stellen);
flock($fp,3);
fclose($fp);
}else{
// do nothing
}
?>


Herzlichen Dank für eure Hilfe.
Sven

Content-Key: 256986

Url: https://administrator.de/contentid/256986

Printed on: April 23, 2024 at 13:04 o'clock

Member: falscher-sperrstatus
falscher-sperrstatus Dec 07, 2014 at 13:01:05 (UTC)
Goto Top
Hallo Sven,

warum nicht ein "strukturierteres" Format wie XML ovgl.?

Beste Grüße,

Christian
certified IT
Member: Sven32
Sven32 Dec 07, 2014 at 13:45:51 (UTC)
Goto Top
Hallo Christian

An sich ist das bestimmt ein guter Lösungsansatz nur ist es in meinem Fall so,
dass ich nur ein bestehendes System bearbeite bzw. pflege und da möchte ich die
Strukturen so weit es geht beibehalten.
Zumal ich nicht der Einzige bin der auf diese Textbasierten Datenbanken zugriff
hat, also einfach umstellen auf etwas anderes ist hier leider nicht so einfach.

Mann müsste halt mal komplett alles überarbeiten aber du weißt ja wie das bei
manchen Firmen ist, da werden bestimmte Dinge immer wieder hinausgeschoben
und hinausgeschoben bis irgendwann mal was passiert oder eben nichts mehr geht
und dann werden plötzlich alle ganz schnell face-wink
Member: falscher-sperrstatus
falscher-sperrstatus Dec 07, 2014 at 14:00:33 (UTC)
Goto Top
Deswegen machst du dich selbst zum kleinsten Teil, dass nur in seinem Mausrädchen rennt? ;)
Member: colinardo
Solution colinardo Dec 07, 2014 updated at 16:09:55 (UTC)
Goto Top
Hallo Sven,
da gibt es mehrere Möglichkeiten, das wäre z.B. eine Methode:
<?php
$datei= "Datenbanken/Datenbank ". date('Y').".txt";  
if (file_exists($datei)){
        // Datei in ein Zeilenarray zerlegen
  	$lines = file($datei);
        // Wert der Zeile 16 um eins erhöhen
  	$lines[15] = (doubleval($lines[15]) + 1) . "\r\n";  
        // gendertes Array wieder in die Datei zurückschreiben
  	file_put_contents($datei,join("",$lines));  
}
?>
Grüße Uwe
Member: Sven32
Sven32 Dec 07, 2014 updated at 15:23:58 (UTC)
Goto Top
Hallo Uwe,

vielen Dank für die schnelle Hilfe
Das ist genau wonach ich gesucht habe, allerdings bekomme ich jetzt nach
der erhöhten Zahl so ein Symbol und direkt dahinter die nächsete Zahl.

Hier ein Beispiel

Voher

15
16
17

Nachher

15
1717
18

Liegt das womöglich an meiner Textdatei ( Formatierung ) oder ist das aufgrund
des Scriptes so ?
Member: colinardo
Solution colinardo Dec 07, 2014 updated at 16:10:13 (UTC)
Goto Top
Liegt das womöglich an meiner Textdatei ( Formatierung ) oder ist das aufgrund
des Scriptes so ?
Hmm hier läuft es einwandfrei, da muss bei dir irgendwas nicht stimmen.
Womit schaust du das File an ? Mit Notepad unter Windows ? Dann brauchst du stattdessen einen DOS Zeilenumbruch "\r\n" hinter dem hochgezählten Wert, Zeile 7.

Datei-Kodierung ?(ASCII/UTF8/etc.)
Member: Sven32
Sven32 Dec 07, 2014 at 15:58:44 (UTC)
Goto Top
Sorry, du hast natürlich recht.
Ich habs vorhin in XAMPP kurz getestet und das läuft hier unter Windows
und da lag das öffnen mit Notepad nahe.

Danke nochmals für deine Hilfe