txt bearbeiten lesen schreiben
Möchte mit PHP eine txt lesen bzw. auswerten und überarbeiten
Hallo Forum
Ich habe eine txt in der stehen 6 Namen mit je einer Zahl dahinter. Diese Zahlen sollen mittels Formular bzw. durch PHP geändert werden.
Die txt sieht so aus:
Svenja H. 51
Svenja Z. 56
Mike 39
Kim 111
Petra 8
Nun kommt aus dem Formular für Petra ein Zähler dazu.
Dann sollte die txt so aussehen:
Svenja H. 51
Svenja Z. 56
Mike 39
Kim 111
Petra 9
Ich denke man müsste den Inhalt der txt in ein Array lesen bearbeiten und dann wieder rein wegschreiben.
Da ich aber nicht so die php Kennerin bin, stehe ich da vor einen großen Problem.
Hat bitte wer einen Lösungsvorschlag für mich.
Liebe Grüsse
Petra
Hallo Forum
Ich habe eine txt in der stehen 6 Namen mit je einer Zahl dahinter. Diese Zahlen sollen mittels Formular bzw. durch PHP geändert werden.
Die txt sieht so aus:
Svenja H. 51
Svenja Z. 56
Mike 39
Kim 111
Petra 8
Nun kommt aus dem Formular für Petra ein Zähler dazu.
Dann sollte die txt so aussehen:
Svenja H. 51
Svenja Z. 56
Mike 39
Kim 111
Petra 9
Ich denke man müsste den Inhalt der txt in ein Array lesen bearbeiten und dann wieder rein wegschreiben.
Da ich aber nicht so die php Kennerin bin, stehe ich da vor einen großen Problem.
Hat bitte wer einen Lösungsvorschlag für mich.
Liebe Grüsse
Petra
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 113343
Url: https://administrator.de/contentid/113343
Ausgedruckt am: 25.11.2024 um 22:11 Uhr
12 Kommentare
Neuester Kommentar
Nabend!
Ja, "Textdatei --> Multidimensionales Array" ist eine Möglichkeit.
Ist aber nicht schön.
Zuerst möcht ich aber eines abklären...
Gibt es einen besonderen Grund Textdateien zu verwenden?
Über eine Datenbank wäre das viel schöner und einfacher zu lösen.
Erzähl doch mal ein bisschen was du damit vorhast.
LG
Florian
Ja, "Textdatei --> Multidimensionales Array" ist eine Möglichkeit.
Ist aber nicht schön.
Zuerst möcht ich aber eines abklären...
Gibt es einen besonderen Grund Textdateien zu verwenden?
Über eine Datenbank wäre das viel schöner und einfacher zu lösen.
Erzähl doch mal ein bisschen was du damit vorhast.
LG
Florian
Hallo,
schau dir mal SQLite an http://de2.php.net/sqlite Das ist eine dateibasierte Datenbank und braucht darum keinen Server.
Wenn du aber auf eine Datenbank (und die Möglichkeiten, die das mit sich bringt) verzichten willst empfehle ich dir mal serialize() und unserialize() in Verbindung mit file_get_contents() und file_put_contents() anzuschauen (das funktioniert natürlich nur, wenn du keinen vorhandenen Datenbestand hast).
Ansonten hat PHP auch einen CSV-Parser http://de.php.net/manual/de/function.fgetcsv.php was hier aber aufgrund der fehlenden Kommas auch problematisch wäre.
Zu guter letzt bleibt natürlich noch die Methode eines eigenen Parsers:
(nicht getestet, so nicht praxistauglich, da Fehlerprüfung fehlt)
Grüße
Max
schau dir mal SQLite an http://de2.php.net/sqlite Das ist eine dateibasierte Datenbank und braucht darum keinen Server.
Wenn du aber auf eine Datenbank (und die Möglichkeiten, die das mit sich bringt) verzichten willst empfehle ich dir mal serialize() und unserialize() in Verbindung mit file_get_contents() und file_put_contents() anzuschauen (das funktioniert natürlich nur, wenn du keinen vorhandenen Datenbestand hast).
Ansonten hat PHP auch einen CSV-Parser http://de.php.net/manual/de/function.fgetcsv.php was hier aber aufgrund der fehlenden Kommas auch problematisch wäre.
Zu guter letzt bleibt natürlich noch die Methode eines eigenen Parsers:
<?php
function read_file($filename) {
$handle = fopen ($filename, 'r');
$matches = array();
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
if(preg_match('/([a-z \.]+)\s+(\d+)/iD', $buffer, $results)) {
$matches[$results[1]] = $results[2];
}
}
fclose ($handle);
return $matches;
}
function write_file($dataArray,$outputfilename)
{
$str = '';
foreach ($dataArray as $key => $value) {
$str .= $key.' '.$value."\n";
}
return file_put_contents($outputfilename, $str);
}
?>
Grüße
Max
Textdatei muss nicht sein, habe aber kein SQL. Es Könnte auch
eine XML oder eine html Seite mit einer Tabelle die durch php dann
gleich gefüllt wird sein. Zweck der ganzen Sache ist so nee Art
voting.
Ok, Lösungen für Textdateien hast du ja bereits.eine XML oder eine html Seite mit einer Tabelle die durch php dann
gleich gefüllt wird sein. Zweck der ganzen Sache ist so nee Art
voting.
Hier noch Varianten in andere Richtungen:
1. Hoster suchen der eine SQL-Datenbank unterstützt. Hetzner bietet das zB bereits um nicht mal 2,-- im Monat an (von der Empfehlung hab ich nichts) mit ner MySQL Datenbank. Für den Zweck reicht definitiv auch schon SQLite - eine kleine File-basierte Datenbank.
2. XML, und zwar zB so: http://www.drweb.de/magazin/php-und-xml-einfach-einfach/
Vorteile von beiden Lösungen:
- Dein Source-Code muss sich nicht um das genaue Handling der Textdatei kümmern, sondern greift nur auf bereits bestehende Resourcen zu.
Noch zwei Vorteile der Datenbank-Lösung:
- Gleichzeigiger Zugriff (die bei einem großen Voting mal passieren können) stellen kein Problem dar.
- Für ne Auswertung ist nur ein SQL notwendig - nicht das durchlaufen der gesamten Datei in einer Schleife.
GLG
Florian http://www.lagg.at
Warum bekomme ich hierbei immer eine Fehlermeldung?
Das ist ganz einfach: Wegen der Funktionsweise von HTTP.
Eine HTTP Antwort sieht immer so aus:
HTTP/1.1 301 Moved Permanently
Date: Thu, 09 Apr 2009 12:54:41 GMT
Server: Apache
Location: next.htm
hallo
Darum produziert dein Code einen Fehler. Ein header darf nicht mehr kommen nachdem bereits der Seiteninhalt angefangen hat.
Du kannst diese Einschränkung aber auch umgehen, indem du ganz an den Anfang deiner Seite
ob_start();
Die Lösung hier für hätte ich aber gerne noch gewusst.
Mein Code hätte die Datei in ein assoziatives Array geladen.
Svenja H. 51
Svenja Z. 56
Mike 39
<code type="plain>
Array
(
[Svenja H.] => 51
[Svenja Z.] => 56
[Mike] => 39
)
Du hättest dann die einzelnen Werte einfach über (z.B.)
$array["Svenja H."];
Grüße
Max
Hab jetzt mit einer SQL Lösung angefangen.
Gute Entscheidung Petra - kommst du voran?
Ich helf dir gern soweit das geht, hab aber schon lange in PHP nix mehr gemacht. Ich verwende TurboGears, ein Python Framework dass für die Datenbankaufgaben SqlAlchemy benutzt. Damit schlag ich mich auch nicht mehr mit joins in SQL-Abfragen herum, sondern greife nur noch auf Objekte zu. Leider mit dem Nachteil, dass die Anforderungen für den Server steigen.
Lange Rede - kurzer Sinn:
Wenn du fragen hast bei der SQL-Lösung: You're welcome. Gibt mir die Chance einer Auffrischung der PHP-Kenntnisse.
LG Florian http://www.lagg.at/
Zitat von @ppmk22:
Da ich ja jetzt mit einer SQL Lösung angefangen bin, und in
dieser Richtung nicht weitermachen werde, markiere ich diesen Beitrag
als gelöst.
Liebe Grüsse noch mal.
Petra
Da ich ja jetzt mit einer SQL Lösung angefangen bin, und in
dieser Richtung nicht weitermachen werde, markiere ich diesen Beitrag
als gelöst.
Liebe Grüsse noch mal.
Petra
Daher closed
masterG(Moderator).