Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Variable mit Textdatei vergleichen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




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.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:58 Uhr.