Florian: $PHP_SELF und erneutes Senden ???

Hallo Leute,

Ich habe ein kleines Benutzerformular erstellt.
Der Benutzer gibt sein Kürzel ein (in diesem
Fall habe ich zum Testen einen festen Benutzer
festgelegt -> t.user) und betätigt den "OK"-Button.
Dieser Benutzer sollte, falls er schon bekannt ist,
in die Datenbank eingetragen werden. Falls dieser
nicht bekannt ist, sollte folgende Meldung erscheinen:
"Dieser Benutzer gibt es nicht! Moechten Sie Ihn
trotzdem eintragen". Nach diesem Hinweis sollte es
Ihm trotzdem möglich sein diesen Benutzer in die
Datenbank eintragen zu lassen, indem er nochmals den
"OK"-Button betätigt.
Geht das? Wenn ja würde ich mich über Hilfe, Hinweise
und Tips freuen.
Danke schon einmal im Voraus!

bis denn
Florian

Hier mal mein TestSkript:

<html>
<body>
<form action="<? echo $PHP_SELF ?>" method="POST">
Benutzer: <input type="text" size="12" name="benutzer"><BR>
<input type="submit" name="senden" value="OK">
</form>
<?
$senden   = $_POST['senden'];
$benutzer = $_POST['benutzer'];

if ($senden && $benutzer <> 't.user') {
  $fehlermeldung = "Dieser Benutzer gibt es nicht! Moechten Sie Ihn trotzdem eintragen?";
  print $fehlermeldung;
}
elseif ($senden && $benutzer == 't.user') {
  print "Alles ok! Benutzer wird in Datenbank eingetragen.";
}
?>
</body>
</html>

  1. hey,

    natürlich geht das ...
    wenn Du etwas ahnung von PHP und SQL hast, dürfte dies eigentlich kein großes problem darstellen.
    wenn dies allerdings nicht der fall ist, würd ich mir zuerst ma ein tutorial zu beiden anschauen.

    mfG,
        Markus.

    1. Hallo Markus,

      Danke für Deine Antwort.
      Ich arbeite schon ein wenig mit PHP und SQL. Die
      Datenbankanbindung ist kein Problem und die SQL Statements
      auch nicht. -> ist schon realisiert.

      Mein Problem beschränkt sich auf das wiederholte Absenden
      des Formulars, nach dem Hinweis. Danach sollte der Benutzer
      durch Aufrufen des jeweilige Skripts: "benutzer_eintragen.php"
      den Benutzer in die Datenbank einfügen.
      (Das benutzer_eintragen.php Skript existiert schon und
      funktioniert. -> nur zur INFO)
      Wie kann ich dieses Problem angehen?

      bis denn
      Florian

      1. hey,

        ich weiß wirklich nicht, ob ich Dich richtig verstehe, aber versuchs mal...

        falls der user noch nicht bekannt ist, leite auf eine seite weiter und frag da, ob er sich eintragen will oder nicht und reagier dementsprechend darauf...

        eine bessere lsg. ("grad eingefallen...) ist meiner meinung nach folgende:
        öffne über javascript eine popup mit den buttons "eintragen" und "nicht eintragen" ... über javascript kannst Du ja dann auf die Formular-elemente zugreifen (... . submit() ) !

        mfG,
           Markus

  2. hi,

    ganz einfach ..

    <?php
    if ($senden && $benutzer != 't.user') {
       $fehlermeldung = "Dieser Benutzer gibt es nicht! Moechten Sie Ihn trotzdem eintragen?";
       print $fehlermeldung;
     }
     elseif ($senden && $benutzer == 't.user') {
       print "Alles ok! Benutzer wird in Datenbank eingetragen.";
    // hier den input-befehl an die datenbank eintragen ..
     }
    ?>
    <html>
    <body>
    <form action="<? echo $PHP_SELF ?>" method="POST">
    Benutzer: <input type="text" size="12" name="benutzer"><BR>
    <input type="submit" name="senden" value="OK">
    </form>
    </body>
    </html>

    gruß
    chris

    1. Hi Chris und Markus,

      ich glaube wir schreiben aneinander vorbei.
      @Markus: JavaSkript kommt nicht in Frage.
      -> kann man deaktivieren. Dann ist nichts
      mit PopUp.

      @Chris
      Dein Skript ist doch identisch zu meinem.
      Oder irre ich mich? Wenn ja kläre mich auf.

      @an alle
      Ich möchte falls der Benutzer <> zu dem
      in der Datenbank (Dies wird beim ersten
      Senden überprüft -> funktioniert) ist, dass
      es trotzdem möglich sein durch erneutes Klicken
      auf den OK-Button, dass der Benutzer in die
      Datenbank eingetragen wird. Es sollte nur
      vorher dieser Hinweis erfolgen, dass dieser
      Benutzer noch nicht in der Datenbank vorhanden
      ist. (NUR HINWEIS -> muss sein)

      Danke für Eure Hilfe

      Florian

      1. hi florian,

        @Chris
        Dein Skript ist doch identisch zu meinem.
        Oder irre ich mich? Wenn ja kläre mich auf.

        es ist identisch .. NUR die abfrage if - elseif muss VOR dem formular stehen .. du schickst das formular ja an sich selbst, d.h. das die daten erst NACH dem versenden zur verfügung stehen und in dem fall in der if - elseif analysiert werden können ..

        zum besseren verständnis:

        1. schritt - formular wird zum ersten mal angezeigt

        • if & elseif können nicht analysieren, da keine daten vorhanden

        2. schritt - formular wird ausgefüllt und an sich selbst geschickt

        • if & elseif haben jetzt daten zum analysieren und handeln entsprechend ..

        gruß
        chris

  3. Hallo Florian,

    hab zwar nicht genau verstanden was du gemeint hast, aber mal bischen antwort...
    wahrscheinlich ziemlich unübersichtlich und vielleicht auch tippfehler drin aber vielleicht hilfts dir trotzdem..

    $senden   = $_POST['senden'];
    $benutzer = $_POST['benutzer'];

    // für was braucht man diese zwei zeilen?? haben die variablen nicht automatisch den wert?

    if ($senden && $benutzer <> 't.user') {

    // diesen Test wirst du dann wahrscheinlich über eine Datenbank Abfrage durchführen müssen.. weiß jetzt nicht ob du weißt wie das geht? ;-)
    Struktur könnte dann ungefähr so ausschauen:

    1. Verbindung zur Datenbank herstellen
    2. Aus der Tabelle mit den Benutzern versuchen den eingegebenen Namen zu finden
      [mysql-Befehl SELECT]
      2a) ist dieser vorhanden --> ok
      2b) ist dieser nicht vorhanden -->

    $fehlermeldung = "Dieser Benutzer gibt es nicht! Moechten Sie Ihn trotzdem eintragen?";
      print $fehlermeldung;

    für eine zweite bestätigung könntest du hier entweder nochmal ein Formular hinmachen oder einen einfachen link der den User-Namen als Parameter übergibt..
    am besten so in der art..
    ?>
    <form action="<?php echo $PHP_SELF?>" method="post">
    <input type="hidden" name="benutzer" value="<?php echo $benutzer?>">
    <input type="submit" name="eintragen" value="Eintragen">
    </form>
    <?php

    }
    elseif ($senden && $benutzer == 't.user') {
      print "Alles ok! Benutzer wird in Datenbank eingetragen.";
    }

    hier dann noch das Eintragen eines neuen Benutzers (nach der zweiten Abfrage):
    [mysql-Befehl INSERT INTO]
    wenn erfolgreich:

    print "Alles ok! Benutzer wird in Datenbank eingetragen.";

    wenn nicht:
    print "Es ist ein Fehler aufgetreten";

    ?>
    </body>
    </html>

  4. machs über session...
    falls variable noch nicht registriert ist, meldung und variable registrieren...
    falls variable registriert, Eintrag in DB durch drücken des OK-Button erlauben...

    ... jetz aber ...;)

    mfG,
       Markus.