Datei-Verzeichnis vergleich
DerDieDas
- perl
0 Steel0 Felix Riesterer0 DerDieDas0 Felix Riesterer0 DDD0 Felix Riesterer0 Beat
0 Struppi
Hi
ich wusste keinen besseren Themennamen sorry.
Meine Frage ist folgende:
Ich möchte eine art Userliste machen. Für jeden User wird eine eigene txt-datei angelegt.
Die Textdatei trägt den Nicknamen des jeweiligen Users. Also würde ich mich mit dem Nicknamen "DerDieDas" anmelden heisst die Datei mit meinen Userinformationen "DerDieDas.txt".
Nun möchte ich, das man nach einem Nicknamen suchen kann und dann die Userinformationen ausgegeben werden. So weit so gut.
Ich bräuchte aber einen vergleich:
Es wird nach dem Nicknamen gesucht. Es sollte der Ordner nach dem genannten Nickname gesucht werden. Ist der User nicht gelistet will ich eine (Else-)Fehlermeldung ausgeben.
Also quasi sowas in der Art:
if ($nickname eq $ordner) {
print $nickinformationen;
} else {
print "User existiert nicht";
}
Wie ich die Informationen ausgebe weiss ich (natürlich nicht wie in meinem Beispiel oben) - Aber wie ich den Ordner mit den Nicknamen vergleichen kann nicht.
Ich habe bereits mit einem Index und mit der opendir experimentiert, jedoch hat nichts geklappt.
Ich hoffe ihr könnt mir weiterhelfen wie ich sowas realisieren kann.
Entschuldigt bitte falls mein Beitrag zu unverständlich sein sollte, wusste nicht wie ich es anders formulieren könnte.
Vielen lieben Dank im vorraus,
lg DDD.
Hi!
Entschuldigt bitte falls mein Beitrag zu unverständlich sein sollte, wusste nicht wie ich es anders formulieren könnte.
Ih denke, jeder versteht, was Du willst: Eine Art eigenes Datenbanksystem. Aber warum? Warum nicht gleich ne DB benutzen?
(Haett' ich Ahnung von pearl wuerde hier noch eine problembezogenere Antwort kommen)
Lieber DerDieDas,
Ich möchte eine art Userliste machen. Für jeden User wird eine eigene txt-datei angelegt.
warum für jeden User eine eigene Datei? Wäre es nicht sinnvoller, alle Userdaten in einer Datei abzulegen? Das geht im Prinzip sehr gut...
Dabei hättest Du sogar die Wahl, ob Du XML als Speicherformat wählst, oder in Art einer .ini-Datei die Eigenschaften ablegst, oder ob Du das Ganze als csv-Datei speicherst, oder oder oder.
Die Textdatei trägt den Nicknamen des jeweiligen Users.
Das ist eine ganz schlechte Idee! Viele Nicknames verwenden Sonderzeichen, um visuell zu beeindrucken. Dabei verwenden sie gerne auch Leetspeek, welches Zeichen enthält, die in einem Dateinamen verboten sind.
Außerdem wird das ganz schön unübersichtlich, wenn Du eine Userverwaltung mittels Verzeichnissen und Dateien realisieren willst. Das solltest Du anders lösen.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Lieber DerDieDas,
Hallo und danke schonmal für deine Antwort ich hätte aber noch einige Fragen bzw. Anregungen bzgl. deinen "Tipps".
warum für jeden User eine eigene Datei? Wäre es nicht sinnvoller, alle Userdaten in einer Datei abzulegen? Das geht im Prinzip sehr gut...
=> Wenn ungefähr pro Person 10 Userdateien eingespeichert werden, wären das bei ungefähr 200 Personen 2000 Zeilen (abgesehen der Programmier-Kommentar-Zeichen). Wäre es dann nicht sinnvoller einen Ordner durchzugehen bei dem nur 200 Dateien durchsucht werden müssen und es dann sofort ausgeben kann anstatt eine große Datei mit 2000 Zeilen zu durchsuchen, den namen finden, die Userdaten einordnen und dann jeweils einzeln die Ausgabe geben lassen? - Das sollte jetzt kein ironisches Kommentar sein nur weiss ich nicht wie sich das auswirkt bei bspw. 200 Usern.
Das ist eine ganz schlechte Idee! Viele Nicknames verwenden Sonderzeichen, um visuell zu beeindrucken. Dabei verwenden sie gerne auch Leetspeek, welches Zeichen enthält, die in einem Dateinamen verboten sind.
=> Da hast du allerdings recht, das hab ich nicht bedacht. Es gäbe da die möglichkeit die Leetspeek's zu verbeieten aber ich weiss nicht. Dann müsste ich das mit einem Index lösen oder? Gäbe es noch eine andere möglichkeit?
Außerdem wird das ganz schön unübersichtlich, wenn Du eine Userverwaltung mittels Verzeichnissen und Dateien realisieren willst. Das solltest Du anders lösen.
=> Würde dir spontan eine andere/bessere/schlauere Idee einfallen?
Ich möchte übrigends nicht mit einer Datenbank arbeiten. Das ist mir zuviel einarbeitung wieder. Das möchte ich nebenbei machen - zuerst möchte ich mein vorhaben in die Tat umsetzen und danach dann immer mal wieder verbessern.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
=> Vielen lieben Dank.
Lieber DerDieDas,
=> Wenn ungefähr pro Person 10 Userdateien eingespeichert werden, wären das bei ungefähr 200 Personen 2000 Zeilen (abgesehen der Programmier-Kommentar-Zeichen).
das klingt jetzt aber nach einem klassischen Datenbank-Fall. Und eine solche muss nicht immer mittels MySQL oder ähnlichen Datenbankservern umgesetzt werden. Das geht auch mit Textdateien und entsprechenden Auslese- und Einfüge-Funktionen. Das Fachwort für sowas nennt sich "Flatfile". Unsere Forumssuche findet da so einiges dazu.
Für mein GB verwende ich z.B. eine XML-Datei, die Suchfunktion meines CMS eine ini-Datei. Wie auch immer Du Dein Flatfile organisierst, letzten Endes ist es eine Datenbank.
Du musst im Prinzip nur darauf achten, dass das Handling mit dem Flatfile performant bleibt. Zum Beispiel könnte es sein, dass das Abbilden der Datenbank-Daten im Speicher zuviel Memory frisst, sodass Dein Handling darauf verzichten sollte. In meinem GB-Script wird immer die komplette XML-Datei in den Speicher eingelesen (also der XML-Code in ein Array umgewandelt), was bei großen Datenmengen als Methode versagen würde, bei einem GB aber gerne ausreicht.
Es gäbe da die möglichkeit die Leetspeek's zu verbeieten aber ich weiss nicht. Dann müsste ich das mit einem Index lösen oder? Gäbe es noch eine andere möglichkeit?
Deine Lösung sollte nichts verbieten müssen, nur weil vielleicht heute Dein Kentnisstand um das Programmieren hier an ein noch unüberwindbares Hindernis stößt.
Außerdem wird das ganz schön unübersichtlich, wenn Du eine Userverwaltung mittels Verzeichnissen und Dateien realisieren willst. Das solltest Du anders lösen.
=> Würde dir spontan eine andere/bessere/schlauere Idee einfallen?
Nimm eine Datenbank!
Ich möchte übrigends nicht mit einer Datenbank arbeiten. Das ist mir zuviel einarbeitung wieder. Das möchte ich nebenbei machen - zuerst möchte ich mein vorhaben in die Tat umsetzen und danach dann immer mal wieder verbessern.
Nimm eine Datenbank! Von mir aus gerne auch in Form eines Flatfiles, aber nimm eine Datenbank!
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hallo,
vielen Dank schonmal für deine Antwort.
Ich hatte auch die Idee mir selbst eine eigene Datenbank bzw. ein "Flatline" zu erstellen. Ich denke ich wüsste auch schon wie ich des am besten mache nur drängt sich bei mir noch eine frage auf für die ich in der Suchfunktion keien Antwort gefunden habe.
Könntest du mir bitte "grob" die Vorteile und die Nachteile einer eigenen Flatline sagen?
z.B. denke ich, dass mit einer Flatline ein Back-up schwieriger wird - jedoch finde ich eine Flatline ist bereits mit ein paar Perl-Kentnissen leichter damit umzugehen als mit einer Datenbank?
Danke, lg.
Lieber DDD,
Ich hatte auch die Idee mir selbst eine eigene Datenbank bzw. ein "Flatline" zu erstellen.
von einer "Flatline" spricht man, wenn beim Patient das Herz zu schlagen aufgehört hat. Dann zeigt das Oszilloskop nämliche eine flache Linie - eine flat line. Nachzusehen im Film "Flatliners".
noch eine frage auf für die ich in der Suchfunktion keien Antwort gefunden habe.
Klar, wenn Du auch den falschen Suchbegriff benutzt hast! Da Dir das gerade nicht so leicht fällt, habe ich für Dich die Suche angeworfen und ein paar schöne Treffer herausgesucht:
</archiv/2005/12/t120351/> Ashura listet hier weitere Suchergebnisse in einem Thread
</archiv/2004/8/t86777/#m514091> Tom zeigt hier eine Idee auf, *.ini-Dateien mit der PHP-Funktion parse_ini_file() (als Datenbank-?)Datei auszulesen
Für weitere Treffer suche bitte nach "flatfile".
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Könntest du mir bitte "grob" die Vorteile und die Nachteile einer eigenen Flatline sagen?
Der offensichtlichste Vorteil eines Flat Files ist, dass normales Lesen auf dem Filehandle geschieht Zeilenweise, das heisst: \n Separiert Datensätze.
Der zweite Vorteil ist, dass Tie::File das ebenso tut. Tie::File löst das Problem grosser Datenfiles bezüglich Speicherverbrauch.
Somit kommen Flatfiles schon mal der Performance entgegen.
mfg Beat
Ich möchte eine art Userliste machen. Für jeden User wird eine eigene txt-datei angelegt.
Die Textdatei trägt den Nicknamen des jeweiligen Users. Also würde ich mich mit dem Nicknamen "DerDieDas" anmelden heisst die Datei mit meinen Userinformationen "DerDieDas.txt".
du willst also einfach prüfen ob eine Datei existiert?
-e
Struppi.