Von allein wäre ich nie darauf gekommen, wie man es anstellen kann - man hat mich günstigerweise nochmal auf den richtigen Weg geschubbst, das Skript welches ich hierdurch zusammenstellen konnte, wirkt nach dem Prinzip, einen Array in einer Text-Datenbank anhand eines vorzugebenden Suchbegriffes ausfindig zu machen und zu löschen, indem die Text-Datenbank - hier die "uebung.txt" zeilenweise eingelesen wird, befindet sich an erster Stelle im Array nicht der Suchbegriff für den Array, der gelöscht werden soll, dann wird der Array in einem größeren Array zwischengelagert - in diesen großen Array wird alles hineingegeben, was eben nicht an Position 1 das Suchkriterium enthält - so gesehen kann man also auch gleich mehrere Datensätze selektieren, die an einer bestimmten Position das gleiche Suchkriterium haben.
Anschließend wird der große Array wieder zeilenweise in die Datei "uebung.txt" hineingeschrieben.
Hier mal das Skript:
Was dieses Skript gleich noch miterledigt - es nimmt die Zeilenumbrüche mit, so musste ich diese bei Zusammensetzung des Eintrages nicht noch extra ergänzen.
Das Suchkriterium für Position 1 eines jeden Arrays ist hier Udo als Vorname - dieser Wert wurde hier direkt eingetragen, kann und wird freilich auch über ein Drop-Down-Menü oder ein Eingabefeld an diese Datei übergeben werden - da hier sämtliche Kontrollmechanismen fehlen, was die Schreibweise angeht, ist es lediglich für ein Drop-Down-Menü verwendbar - wie man ein solches Drop-Down-Menü aus einer Text-Datenbank automatisch erstellen lassen kann, hatte ich bereits in einem anderen Beitrag beschrieben.
Hierüber wird geprüft, ob der erste Array-Eintrag nicht mit dem Suchbegriff übereinstimmt:
Nur wenn diese Bedingung erfüllt ist, dann wird die durchsuchte Zeile - bereits in Einzelteile zerlegt - in ein großes Array eingefügt, das hier den Namen uebertrag trägt, $suche bezeichnet das zuvor gebildete Array:
An dieser Stelle wird der Inhalt der Text-Datenbank nicht mehr benötigt, da sich alle Daten in dem großen Array befinden - würde jetzt an dieser Stelle aber der Server abstürzen, hätte man möglicherweise ein Problem - da wir aber alle clever sind, haben wir ja die Website-Dateien nochmals auf dem eigenen PC hinterlegt, denn nun wird die Text-Datenbank über w+ aufgerufen, was zum sofortigen Löschen des vorhandenen Inhaltes führt.
Da sich in dem großen Array nun lauter kleine Arrays befinden, hat man ein mehrdimensionales Array, und dieses wird jetzt aufgelöst, so dass nur noch die kleinen Arrays übrigbleiben:
Da bereits vorher die einzelnen Arrays aufgeteilt wurden, bekamen alle Bestandteile der kleinen Arrays einen Schlüsselwert - hier jeweils von [0] - [2] zugewiesen, worüber sie jetzt direkt angesprochen werden können - und das beste dabei - jeweils der Eintrag mit dem Schlüsselwert 2 - also der letzte Eintrag, bringt den Zeilenumbruch mit.
Unter Verwendung des Trennzeichens "|" wird wieder ein Array zusammengefügt, das hier den einfachen Namen "eintrag" erhält.
Mit
wird in die zuvor geöffnete uebungdatei der Eintrag hineingeschrieben und anschließend über fclose die Datei wieder geschlossen.
Solange man selbst und direkt die Textdatenbank bearbeiten kann, ist es bei übersichtlichen Datenbanken sicher einfacher, die Zeilen über den Editor rauszulöschen - dies hier soll lediglich dazu dienen, dass sich ein einzelner User aus der Textdatenbank mitsamt seinen Daten selbst löschen kann - die Berechtigung hierzu kann man ja über die Hinterlegung des Usernamens und des hoffentlich codierten Passwortes innerhalb des jeweiligen Arrays vereinfachen, da man so recht schnell eine Passwortabfrage für den Fall aufrufen kann, wenn jemand von außen den Array löschen möchte.
Noch weiß ich nicht, was einfacher zu gestalten ist - lediglich der Grundgedanke war, berechtigten Usern Änderungen am eigenen Datenbankeintrag zu ermöglichen und dies dann über Löschung des bisherigen Datensatzes und den Neueintrag des veränderten Datensatzes zu realisieren.
Anschließend wird der große Array wieder zeilenweise in die Datei "uebung.txt" hineingeschrieben.
Hier mal das Skript:
PHP-Code:
<?php
$vorname = Udo;
$variable = file("uebung.txt");
$suche = array();
foreach ($variable as $zeile)
{
$term = explode("|", $zeile);
if ( $term[0]!=$vorname )
array_push ($suche, $term);
$uebertrag = array_merge($suche);
}
$uebungdatei = fopen ("uebung.txt","w+");
foreach ($uebertrag as $mein_uebertrag)
{
$eintrag ="$mein_uebertrag[0]|$mein_uebertrag[1]|$mein_uebertrag[2]";
fwrite($uebungdatei, "$eintrag");
}
fclose($uebungdatei);
?>
Das Suchkriterium für Position 1 eines jeden Arrays ist hier Udo als Vorname - dieser Wert wurde hier direkt eingetragen, kann und wird freilich auch über ein Drop-Down-Menü oder ein Eingabefeld an diese Datei übergeben werden - da hier sämtliche Kontrollmechanismen fehlen, was die Schreibweise angeht, ist es lediglich für ein Drop-Down-Menü verwendbar - wie man ein solches Drop-Down-Menü aus einer Text-Datenbank automatisch erstellen lassen kann, hatte ich bereits in einem anderen Beitrag beschrieben.
Hierüber wird geprüft, ob der erste Array-Eintrag nicht mit dem Suchbegriff übereinstimmt:
PHP-Code:
if ( $term[0]!=$vorname )
PHP-Code:
$uebertrag = array_merge($suche);
Da sich in dem großen Array nun lauter kleine Arrays befinden, hat man ein mehrdimensionales Array, und dieses wird jetzt aufgelöst, so dass nur noch die kleinen Arrays übrigbleiben:
PHP-Code:
foreach ($uebertrag as $mein_uebertrag)
Unter Verwendung des Trennzeichens "|" wird wieder ein Array zusammengefügt, das hier den einfachen Namen "eintrag" erhält.
PHP-Code:
$eintrag ="$mein_uebertrag[0]|$mein_uebertrag[1]|$mein_uebertrag[2]";
PHP-Code:
fwrite($uebungdatei, "$eintrag");
Solange man selbst und direkt die Textdatenbank bearbeiten kann, ist es bei übersichtlichen Datenbanken sicher einfacher, die Zeilen über den Editor rauszulöschen - dies hier soll lediglich dazu dienen, dass sich ein einzelner User aus der Textdatenbank mitsamt seinen Daten selbst löschen kann - die Berechtigung hierzu kann man ja über die Hinterlegung des Usernamens und des hoffentlich codierten Passwortes innerhalb des jeweiligen Arrays vereinfachen, da man so recht schnell eine Passwortabfrage für den Fall aufrufen kann, wenn jemand von außen den Array löschen möchte.
Noch weiß ich nicht, was einfacher zu gestalten ist - lediglich der Grundgedanke war, berechtigten Usern Änderungen am eigenen Datenbankeintrag zu ermöglichen und dies dann über Löschung des bisherigen Datensatzes und den Neueintrag des veränderten Datensatzes zu realisieren.
Kommentar