Variable aus Textdatei in Array lesen
Jan
- php
0 Andreas Korthaus0 Jan0 Andreas Korthaus0 Tom0 Jan0 Andreas Korthaus0 Tom
0 Tom
Hallo,
Ich möchte, aus einer Textdatei Variablen für ein PHP-Script verwenden. Dazu habe ich ein Script geschrieben, welches eigentlich funktionieren müsste. Tut es aber nicht.
Was muss ich verflixt nochmal ändern, damit die zugehörigen Daten einer gewünschten Zeile in einem Array gespeichert werden?
Vielleicht könnt ihr mir helfen?
Das Skript:
***********
<?php
$username = "Heinz"; /(Kommt von einem Formular)
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$zerlegen = explode("|", $zeile);
if ($userdata[0]==$username)
{
echo "<b>$zerlegen[0], $zerlegen[1], $zerlegen[2]";
}
}
fclose($userdatei);
?>
Die Daten in der Datei user.txt
*******************************
Test|098f6bcd4621d373cade4e832627b4f6|Blumengasse
Fritz|436e53d48db9a24a3fe18932c00871e9|Sonnenstraße
Hugo|1b3840b0b70d91c17e70014c8537dbba|Straßesoundso
Seppl|a4c2063020abeacda25f3480f167da60|Platz
Heinz|0a8e3638e3c0deb4e5e49c72286a5b83|Ackergasse
Kunz|ea0274c3630e250b6673f849fd6d567b|Blumenstraße
Bunt|30f769fa075f3404f13daef4f4057258|Beispielgasse
Eva|251860a5c4f99be280a6f48fd0c7eb99|Gartenstrasse
Eigentlich müsste dieses Skript doch folgenden Wert zurückliefern:
Heinz,0a8e3638e3c0deb4e5e49c72286a5b83,Ackergasse
Oder habe ich da einen Denkfehler?
Hi!
$zerlegen = explode("|", $zeile);
if ($userdata[0]==$username) {}
Na, fällt Dir da was auf?
Grüße
Andreas
Hi!
$zerlegen = explode("|", $zeile);
if ($userdata[0]==$username) {}Na, fällt Dir da was auf?
Grüße
Andreas
Klar, habe eine Variable zuviel, müsste eigentlich lauten:
$zerlegen = explode("|", $zeile);
if ($zerlegen[0]==$username) {}
Manchmal wird man halt betriebsblind. Jetzt müsste es eigentlich gehen, funktioniert aber immer noch nicht.
Ein kleiner Hinweis vielleicht?
Hi!
$zerlegen = explode("|", $zeile);
if ($zerlegen[0]==$username) {}Manchmal wird man halt betriebsblind. Jetzt müsste es eigentlich gehen, funktioniert aber immer noch nicht.
Ein kleiner Hinweis vielleicht?
Naja, mir fällt nichts mehr auf. Du musst den Fehler halt Stück für Stück einkreisen, vereinfache Dein Script so lange, bis Du die Stelle findest wo der Fehler passiert. Und gebe Dir alles aus was hilfreich sein könnte. Auch wenn Du glaubst zu wissen was in einer Variable stehen müsste (genau dadurch passieren viele Fehler bzw. aus diesem Grund findet man viele Fehler nicht so schnell!), sicher gehen kannst Du nur, wenn PHP selber Dir das bestätigt (echo, var_dump()...).
Z.B. erstmal:
<?php
$username = "Heinz"; //(Kommt von einem Formular)
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
{
$zeile = fgets($userdatei,500);
// echo $zeile;
$zerlegen = explode("|", $zeile);
// var_dump($zerlegen);
// echo "if (".$zerlegen[0]."==".$username.")";
if ($zerlegen[0]==$username)
{
// echo "gefunden";
echo "<b>$zerlegen[0], $zerlegen[1], $zerlegen[2]";
}
// else // echo "nix";
}
fclose($userdatei);
?>
Nur mal als Beispiele, wenn dabei wieder nichts angezeigt wird, füge mal oben kurz ein "echo 1;" ein, und guck ob das angezeigt wird, dann prüfe mit PHP ob die Datei "is_readable".... und sonst wie gesagt - Script so lange vereinfachen bis Du den Fehler gefunden hast.
In so einem Script:
<?php
$userdatei = fopen ("user.txt","r");
$zeile = fgets($userdatei,500);
echo $zeile;
fclose($userdatei);
?>
Sieht man Fehler meist viel leichter, und hat viele Fehlerquellen ausgeschlossen...
Grüße
Andreas
Hello,
und schalte zum Testen alle Fehlermeldungen ein:
error_reporting(E_ALL); # an Scriptanfang
track_errors = on # in der php.ini
usw.
Lies Dir mal das Lapitel über Fehlerbehandlung durch
http://de2.php.net/manual/de/ref.errorfunc.php
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo,
vielen Dank. Ich habe es jetzt rausgefunden. Das fertige Script lautet:
<?php
$username = "Heinz";
$userdatei = fopen ("user.txt","r+");
while ($username!=$zerlegen[0])
{
$zeile = fgets($userdatei,500);
$zerlegen = explode("|", $zeile);
}
echo "<b>$zerlegen[0]</b>, <i>$zerlegen[1]</i>, <u>$zerlegen[2]</u>";
fclose($userdatei);
?>
Hallo!
while ($username!=$zerlegen[0])
{
$zeile = fgets($userdatei,500);
$zerlegen = explode("|", $zeile);
}
Ich würde mal behaupten - "das riecht nach Ärger" ;-)
Geb mal zum Spaß einen $username an, der nicht in der Datei existiert, und gucke was passiert!
Also so:
<?php
$username = "gibbetnich";
$userdatei = fopen ("user.txt","r+");
while ($username!=$zerlegen[0])
{
$zeile = fgets($userdatei,500);
$zerlegen = explode("|", $zeile);
}
echo "<b>$zerlegen[0]</b>, <i>$zerlegen[1]</i>, <u>$zerlegen[2]</u>";
fclose($userdatei);
?>
Grüße
Andreas
Hello,
vielen Dank. Ich habe es jetzt rausgefunden. Das fertige Script lautet:
<?php
$username = "Heinz";
$userdatei = fopen ("user.txt","r+");while ($username!=$zerlegen[0])
{
$zeile = fgets($userdatei,500);
$zerlegen = explode("|", $zeile);
}
echo "<b>$zerlegen[0]</b>, <i>$zerlegen[1]</i>, <u>$zerlegen[2]</u>";
fclose($userdatei);
?>
Wie soll man nun in wenigen Zeilen klar machen, wo der Fehler steckt? Also ich fasse es mal so zusammen: Man kann nicht auf Variablen zugreifen, die noch nicht vorhanden sind. Und wenn man es doch tut, dann sollte man sich ganz besonders klar sein über die Seiteneffekte der verwendeten Programmiersrache.
Du greifst in deinem while-Statement auf zerlegen[0] zu. Die erste Zuweisung an $zerlegen findet aber erst in der Schleife statt. Ich würde (in diesem Beispiel [1]) aus der ganzen Vergleichsgeschichte eine Funktion machen, die einen Datensatz beschafft, ihen zerlegt und vergleicht und das hächstens bis feof() http://de2.php.net/manual/de/function.feof.php
[1] ich würde das gar nicht so lösen, weil es unpraktisch ist.
Mach aus den Userdaten bis ca. 1000 Usern ein mehrdimensionales Array
das Du komplett wegschreiben und wiederholen kannst.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello,
Was steht denn in $zeile drin?
Wie kommen die Daten in $zeile rein?
Was passiert mit dem ggf. vorhandenen Zeilenumbruch?
Wieviele User hast Du denn?
Wäre es da nicht einfacher, gleich ein Mehrdimensionales Array anzulegen und komplett zu speichern und wieder einzulesen?
Liebe Grüße aus http://www.braunschweig.de
Tom