Auf einem anderen php-Forum wollte mir niemand bei der Fehlerbeseitigung helfen - hier habe ich niemanden gefragt - dann fiel es mir wie Schuppen von den Augen - und ich habe das Skript fertigbekommen, dass es auch arbeitet.
Das Problem ist, dass in den meisten Lernprogrammen für php an der Stelle abgebrochen wird, wo man gezeigt bekommen hat, wie man mittels php Daten aus einem html-Formular abfragen und als Array gestaltet in einer Textdatei speichern kann - dann wird einem noch gezeigt, wie man die gesamte Datei ausgeben kann - ja, aber wie bekommt man diese gespeicherten Datensätze da wieder nach bestimmten Kriterien herausgefiltert, denn dann wird im allgemeinen zu sql hinübergewechselt - die SQL-Konfiguration auf Servern bekommt man jedoch regelmäßig nur gegen Bezahlung zur Verfügung gestellt.
Die Ausgangsposition: über ein html-Formular wie dieses:
eine schlichte Angelegenheit bei der man einfach Namen, Vornamen und Postleitzahl eintragen kann - könnte alles andere sein - Haarfarbe, Alter, etc.
wurden die eingetragenen Daten übergeben an eine php-Datei wie diese:
Eingabefelder des html-Formulares tragen die gleichen Namen - dies ist wichtig. Auch wenn hier anhand des Vornamens geprüft wird, ob es einen Eintrag schon gibt, kann man das noch besser gestalten - da mein Problem jedoch an einer ganz anderen Stelle lag, hab ich das als funktionierend hingenommen und mich um die wichtigen Dinge bemüht, denn nachdem man über das Formular einige Eingaben vorgenommen hat, liegt eine "uebung.txt" vor - die sieht dann in etwa so aus:
Udo|RoXXXmel|03XXX
Kerstin|LXXXe|03XXX
Hannelore|HXXXXcke|03XXX
Heinz|KoXXXt|03XXX
Maik|HXXXXcke|03XXX
Die "X" habe ich jetzt zur Verfremdung der Daten verwendet, da diese Personen tatsächlich existieren - in der Datei kommen die nicht vor.
Um nun die Daten aber wieder ordentlich abzufragen, habe ich ein einfaches html-Formular gestaltet - so eins wie dieses hier:
Dort gibt man einen Vornamen ein, der hoffentlich in der Datenbank "uebung.txt" vorkommt und diese Abfrage wird weitergeleitet an die "uebung2.php" - diese findet lediglich den Vornamen, wenn er genau so geschrieben wird, wie er in der "uebung.txt" abgelegt wurde und gibt dann den entsprechenden Datensatz aus - das ist alles noch unformatiert und daher zusammengeklatscht - aber ich will ja hier nicht das Abschreiben fördern sondern lediglich eine Hilfestellung geben - Dinge, wie die Überprüfung des Vornamens ob nun groß- oder kleingeschrieben und die Formatierung der Ausgabe - da kann sich jeder selbst daran versuchen - es gibt da auch noch einen Weg, dies alles in einer Art Kreislauf zu gestalten, damit man von einer html-Seite sowohl Eingaben als auch Abfragen der Datenbank durchführen kann - ja, und was die Anzahl der hintereinander zu setzenden Fakten betrifft, da gibt es wohl erstmal keine Begrenzung - lediglich muss jede der Dateien dafür angepasst werden - diese Dateien hier arbeiten mit 3 übergebenen Daten je Datensatz - eine Erweiterung ist jedoch reine Schreibarbeit - hier also die Datei "uebung2.php", die mich glatt 2 Wochen Arbeit gekostet hat:
Eine Alternativausgabe, wenn es in diesem Fall den Vornamen nicht gibt, habe ich hier nicht eingebaut - aber das ist wohl das geringste Problem.
Und nun hoffentlich viel Spaß damit - muss weitermachen - Anpassungen vornehmen.
Das Problem ist, dass in den meisten Lernprogrammen für php an der Stelle abgebrochen wird, wo man gezeigt bekommen hat, wie man mittels php Daten aus einem html-Formular abfragen und als Array gestaltet in einer Textdatei speichern kann - dann wird einem noch gezeigt, wie man die gesamte Datei ausgeben kann - ja, aber wie bekommt man diese gespeicherten Datensätze da wieder nach bestimmten Kriterien herausgefiltert, denn dann wird im allgemeinen zu sql hinübergewechselt - die SQL-Konfiguration auf Servern bekommt man jedoch regelmäßig nur gegen Bezahlung zur Verfügung gestellt.
Die Ausgangsposition: über ein html-Formular wie dieses:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Uebung</title> <meta name="author" content="Udo"> <meta name="editor" content="html-editor phase 5"> </head> <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000"> <form action="uebung.php" method="post"> Vorname:<br> <input type="Text" name="vorname" size="20"> <br> <br> Nachname:<br> <input type="Text" name="nachname" size="20"> <br> <br> PLZ:<br> <input type="Text" name="plz" size="5"> <input type="submit" value="Eintragen"> </form> </body> </html>
wurden die eingetragenen Daten übergeben an eine php-Datei wie diese:
PHP-Code:
<?php
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"];
$plz = $_POST["plz"];
$vorname_vorhanden = array();
$uebungdatei = fopen ("uebung.txt","r");
while (!feof($uebungdatei))
{
$zeile = fgets($uebungdatei,500);
$uebungdata = explode("|", $zeile);
array_push ($vorname_vorhanden,$uebungdata[0]);
}
fclose($uebungdatei);
if (in_array($vorname,$vorname_vorhanden))
{
echo "vorname schon vorhanden <br> <a href=\"uebung.html\">ein weiterer Eintrag</a>";
}
else {
$eintrag ="$vorname|$nachname|$plz\r\n";
$uebungdatei = fopen ("uebung.txt","a");
fwrite($uebungdatei, "$eintrag");
fclose($uebungdatei);
echo "$vorname, Ihr Eintrag wurde ergänzt
<br><a href=\"uebung.html\">ein weiterer Eintrag</a>";
}
?>
Udo|RoXXXmel|03XXX
Kerstin|LXXXe|03XXX
Hannelore|HXXXXcke|03XXX
Heinz|KoXXXt|03XXX
Maik|HXXXXcke|03XXX
Die "X" habe ich jetzt zur Verfremdung der Daten verwendet, da diese Personen tatsächlich existieren - in der Datei kommen die nicht vor.
Um nun die Daten aber wieder ordentlich abzufragen, habe ich ein einfaches html-Formular gestaltet - so eins wie dieses hier:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Abfrage</title> <meta name="author" content="Udo"> <meta name="editor" content="html-editor phase 5"> </head> <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000"> <form action="uebung2.php" method="post"> Abfrage Vorname:<br> <input type="Text" name="vorname" size="20"> <br> <br> <input type="submit" value="Abfragen"> </form> </body> </html>
PHP-Code:
<?php
$vorname = $_POST["vorname"];
$variable = file("uebung.txt");
$suche = array();
foreach ($variable as $zeile)
{
$term = explode("|", $zeile);
array_push ($suche, $term[0],$term[1],$term[2]);
if ( $term[0]==$vorname )
{
$nachname = $term[1];
$plz = $term[2];
echo $vorname;
echo $nachname;
echo $plz;
exit;
}
}
?>
Und nun hoffentlich viel Spaß damit - muss weitermachen - Anpassungen vornehmen.
Kommentar