• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

(Hilfe gesucht) Textfeldeintrag in txt mit Zusatz Speicher

du könntest am ende der datei noch einen header einfügen sprich in den php teil sowas:
PHP:
header("location:dein_start.htm");
jedoch musst du dan dein danke fürs eintragen löschen ... gibt sonst nen fehler
Es wird grundsätzlich Fehler geben. Wenn die header()-Funktion genutzt werden soll, darf keinerlei Ausgabe an den Browser geschickt worden sein.
oder nen popup mit dem danke und okay button der auf start.htm leitet. könnte prob auch lösen... *kopfkratz*
Wenn JavaScrip0t im Browser des Users abgeschaltet ist, wird Dein Problem nicht gelöst, sondern wirft unter Umständen nur neue Probleme auf, wenn nicht eine <noscript>-Alternative vorhanden ist. Ich bevorzuge für solche Sachen immer die PHP-Variante mit der Weiterleitung durch die header()-Funktion. Dazu muss Dein Formular-Script aber geringfügig umgebaut werden. Hier mal eine kleine Skizze, wie ich es immer mache.
Code:
php-Anfang
Wenn submit gedrückt
   Daten auf Gültigkeit/Vollständigkeit prüfen
   Wenn Daten gülitg
      Daten verarbeiten
      Weiterleitung auf Danke-Seite / header()-Funktion
      exit
php-Ende
HTML-Anfang
Doctype
head
body
   form
HTML-Ende
Der HTML-Teil wird solange aufgerufen, bis alle nötigen Eingaben gemacht wurden und auch gültig sind. Wenn alle Daten gültig sind, wird durch die header()-Funktoin die Danke-Seite aufgerufen. Im HTML-Teil hast Du dann noch die Möglichkeit auf die Fehler zu reagieren und Fehlermeldungungen auszugeben. Dieser Aufbau nennt sich Affenformular.

Gruß thuemmy
 
Danke für eure hilfe....

mal soin den raum geworfen kann ich nicht 2 oder mehr if befehle eintragen mit &&, or, and, || hab es versucht aber bekomme immer fehler meldung wegen den zeichen, weis auch nicht ob ich es richtig geschrieben hab den php-code. würde es so gehen den empty + ctype_digit + schauen befehl nach einander abarbeiten lassen und wenn nicht leer, nur zahlen und nix doppelt ist erst dann den eintrag starten ansonsten fehler meldung wie "Sorry deine Eingabe ist Falsch!"?
 
Klar geht das mit && (logisches und) und mit || (logisches oder). Zeig mal Dein Script, was Du versucht hast, und die entsprechende Fehlermeldung dazu.

Gruß thuemmy
 
Als erstes SORRY Leute das ich so lange nix von mir hören lassen habe aber ich war die Woche leider kurzfristig unterwegs und hatte keine Zeit um mich um mein Projekt zu kümmern aber danke das ihr mir bis jetzt soweit geholfen habt...

@thuemmy danke für die kurze info aber können wir uns bitte erst um den part "kontrolle auf doppelten eintrag" kümmern? habe es dick rot unterstrichen markiert....

-------------------------------------------------------------------------
<div style="text-align: center;">
<form action="./test2.php" method="get">
<span
style="font-weight: bold; text-decoration: underline;">
Spieler-ID:
</span>
<p><input name="Spieler-ID" size="7"
maxlength="7" type="daten">
</p>
<p><input name="SpielerID" value="Eintragen"
type="submit">
<input value=" Abbrechen" type="reset"></p>
<p>

<?php
$schauen = @file("Server1.txt");
while (list($line_num, $line) = @each($schauen)) {
$teste = explode("index.php?mode=view&user=", $line);
if($teste['1'] == $_GET['Spieler-ID']) {
echo "Diese ID existiert bereits!";
exit();
}

$daten = "http://xxxxx.de/xxxxx/index.php?mode=view&user=". $_GET['Spieler-ID']. "\n";
$daten_name = "Server1.txt";
$fp = fopen($daten_name, "a+");
fwrite($fp, $daten);
fclose($fp);}
?>

</form>
</div>
------------------------------------------------------------------------------------------

wenn ich diesen code benutze passiert es das das vorher und gerade eben eingegebene jeweils 10 - 15 mal in die liste geschrieben wird und wenn der eintrag bereits existiert kommt die fehlermeldung nicht...
 
Zuletzt bearbeitet:
@Brabax, ja diese Abfrage war von mir als Denkansatz mitten in der Nacht geschrieben ;)

Der Grund warum es evt. nicht funktioniert ist, das ich in der Abfrage den Zeilenumbruch "\n", welcher sich noch in $teste['1'] befindet, nicht berücksichtigt habe.
Sprich: Die Abfrage darauf umändern, damit müsste es gehen.

Mfg
Edit: Und du solltest noch die while-Schleife direkt hinter der Abfrage schliessen, und nicht noch den Eintragungs-Code mit einbinden.
 
@Die Zahl das ist doch nicht wild, bin für alles dankbar auch wenn nen es im Mondenschein geschrieben wurde :D hab es jetzt geändert in

PHP:
 $schauen = @file("Server1.txt");
 while (list($line_num, $line) = @each($schauen)) {
  $teste = explode("index.php?mode=view&user=", $line);
  if($teste['1'] == $_GET['Spieler-ID']. "\n") {
   echo "Diese ID existiert bereits!";
   exit();
  }

und es foktioniert zumindest soweit das es fehlermeldung bringt wenn linkt bereits vorhanden ist und er wird auch nicht geschrieben, nur wenn der linkt noch nicht vorhanden ist dan schreibt er den neuen mehr als 40mal (kann es wirklich nicht zählen) in die txt-datei. das sollte aber denk ich mal nicht an deinem code liegen sondern an diesem code teil oder deren verbindung

PHP:
 $daten = "http://xxxx.de/xxxxx/index.php?mode=view&user=". $_GET['Spieler-ID'].  "\n";
       $daten_name = "Server1.txt";
       $fp = fopen($daten_name, "a+");
       fwrite($fp, $daten);
       fclose($fp);}
 
@Die Zahl *klopfmich* hab jetzt getüftelt und gemacht aber ich bekomme das mit der kontrolle nicht hin. alles andere funktioniert jetzt tiptop, sogar die schlussmeldung wenn der eintrag gemacht wurde kommt.

hier mal der vollständige php-code
PHP:
<div style="text-align: center;">
<form action="./test2.php" method="get">
  <span
 style="font-weight: bold; text-decoration: underline;">
Spieler-ID:
  </span>
  <p><input name="Spieler-ID" size="7"
 maxlength="7" type="daten">
  </p>
  <p><input name="SpielerID" value="Eintragen"
 type="submit">
  <input value=" Abbrechen" type="reset"></p>
  <p>

<?php
   if(empty($_GET['Spieler-ID'])){
       die("Bitte trage deine Spieler-ID ein!");
   }else 
   if(!ctype_digit($_GET['Spieler-ID'])){
           die("Bitte trag nur deine Spieler-ID ein!");
   } else
   $schauen = @file("Server1.txt");
      while (list($line_num, $line) = @each($schauen))
      $teste = explode("/index.php?mode=view&user=", $line);
      if($teste['1'] == $_GET['Spieler-ID']) {
            die("Diese Spieler-ID wurde bereits eingetragen!");
    
   } else    
   $daten = "http://xxxx.de/xxxxx/index.php?mode=view&user=". $_GET['Spieler-ID']. "\n";
   $daten_name = "Server1.txt";
   $fp = fopen($daten_name, "a+");
   {fwrite($fp, $daten);
   fclose($fp);
            die("Danke das du dich eingetragen hast!");
} 
?>
</form>
</div>
 
Du hast dich ja total mit den "{" und den "}" verhaspelt... Bitte setze dich mit diesem Thema nochmal auseinander: PHP: Hypertext Preprocessor

Ich hab hier die Fehler für dich bereinigt:
PHP:
<?php
if(empty($_GET['Spieler-ID'])) {
 exit("Bitte trage deine Spieler-ID ein!");
} elseif(!ctype_digit($_GET['Spieler-ID'])) {
 exit("Bitte trag nur deine Spieler-ID ein!"); 
} else {
 $schauen = @file("Server1.txt");
 while (list($line_num, $line) = @each($schauen)) {
  $teste = explode("/index.php?mode=view&user=", $line);
  $check = $_GET['Spieler-ID']."\n";
  if($teste['1'] == $check) {
   exit("Diese Spieler-ID wurde bereits eingetragen!");
  }
 }

 $daten = "http://xxxx.de/xxxxx/index.php?mode=view&user=".$_GET['Spieler-ID']."\n";
 $daten_name = "Server1.txt";
 $fp = fopen($daten_name, "a+");
 fwrite($fp, $daten);
 fclose($fp);
 exit("Danke das du dich eingetragen hast!");
}
?>
Mfg
 
;Jump;Jump;Jump
juhu ihr seit wirklich spitze es funzt so wie ich es mir gewünscht habe. ohne euch hätte ich es nie hin bekommen *verneigemichvoreuch* klasse jetzt kann ich mich an die nächste seite machen, diese sollte aber *hoffeich* einfacher werden. hab vieles von euch gelernt und auch beim durchlessen der vielen seiten auf die ihr und google mich geschickt habt....

DANKE an euch alle....
@Brabax
 
Zurück
Oben