Archiv verlassen und diese Seite im Standarddesign anzeigen : Variable mit Textdatei vergleichen
Astrominus 14-10-2002, 12:44 Folgendes Problem.
Ich habe eine Textdatei in der diverse Namen gespeichert sind.
Die sieht wie folgt aus:
name1
name2
name3
etc
Nun gibt jemand über ein Inputfeld seinen Namen ein, der in der Variblen $name gespeichert wird.
Jetzt soll zuerst geprüft werden, ob der Name schon in der Textdatei existiert, wenn nicht soll er in der Textdatei angefügt werden und existiert er schon soll eine entsprechende Meldung ausgegeben werden.
Wie realisiere ich das am besten.
Danke schonmal im Vorraus.
MelloPie 14-10-2002, 12:52 $liste = file("textdatei.txt");
if (in_array($HTTP_POST_VARS['name'], $liste)){
print "is schon drin";
}
else{
$fp = fopen("textdatei.txt","a");
fwrite($fp,$HTTP_POST_VARS['name']);
fclose($fp);
}
so in etwa...
Astrominus 14-10-2002, 13:12 Danke für deine Antwort, aber das funzt nicht.
ich hatte es mal mit einer Schleife versucht, doch da hat er immer nur auf den letzten Eintrag in der Textdatei reagiert.
So in der art
$fp = fopen("list.txt","r");
if($fp)
{
while (!feof($fp))
{
$zeile = fgets($fp, 100);
if($zeile == "$name")
{
echo "$name existiert schon";
}
}
fclose($fp);
}
Vielleicht gibt es noch andere Lösungsansätze.
MelloPie 14-10-2002, 13:21 habs net getestet is aber klar das hier is vielleicht besser...
Teste mal aus...
$liste = file("textdatei.txt");
foreach($liste as $a){
$drin = (trim($a)==$HTTP_POST_VARS['name'])? true:false;
}
if($drin)echo "Du bist drin";
else{
$fp = fopen("textdatei.txt","a");
fwrite($fp,$HTTP_POST_VARS['name']."\r\n");
fclose($fp);
}
Astrominus 14-10-2002, 13:55 Leider funktioniert auch das bei mir nicht:(
Vielleicht sollte ich doch besser Stricken lernen;)
Trotzdem, vielen Dank für deine Mühe.
BlobBanana 14-10-2002, 14:40 Also bei mir funzt die Loesung von MelloPie:
<?php
// Ab php 4.1.0 das Superglobal benutzen
$name = $_POST["name"];
$liste = file("test.txt");
if (in_array($name, $liste)) {
print "is schon drin";
} else {
$fp = fopen("test.txt","a");
fwrite($fp,$name);
fclose($fp);
}
?>
Astrominus 14-10-2002, 15:06 Das funktioniert bei mir einfach nicht, und die werte werden trotzdem in das txt-file geschrieben, obwohl sie doppelt sind.
Du schreibst etwas von :
// Ab php 4.1.0 das Superglobal benutzen
Was bedeutet das genau ?
Meine PHP-Version ist 4.1.1
BlobBanana 14-10-2002, 15:11 Die "neuen" Superglobals ersetzen die "alten" $HTTP_POST_VARS["VAR"] welches man benutzen musste wenn register_globals auf off steht.
Hmm, warum funzt das bei dir nicht? Hast du vielleicht leerzeichen hinter den Eintraegen in der txt-Datei?
Astrominus 14-10-2002, 16:02 Ich habe es jetzt doch anders gelöst.
Und noch einmal an meiner ersten Idee angesetzt.
Das Problem waren wohl die Zeilenumbrüche, die in der Textdatei enthalten waren.
$fp = fopen("list.txt","r");
if($fp)
{
while (!feof($fp))
{
$zeile = fgets($fp, 100);
if($name==str_replace("\n","","$zeile"))//das ist die geänderte Zeile
{
echo "$name existiert schon";
break;
}
}
fclose($fp);
}
else
echo "Datei wurde nicht gefunden";
Das funktioniert jetzt.
BlobBanana 14-10-2002, 16:09 Viele Wege fuehren nach Rom ;) ;)
Astrominus 14-10-2002, 16:29 Jo - Vor allem bei PHP;)
Trotzdem verstehe ich nicht, wieso eure Version nicht funktionieren wollte:confused:
Na ja - egal, hauptsache es geht jetzt.
|