Mattias: Variablenproblem

Hallo!

Irgendwie bekomme ich ein Problem nicht in den Griff! Ich möchte eine Seite beim ersten Aufruf anders durchlaufen lassen, als beim zweiten Aufruf. Durch das Abschicken des Formulars wird die gleiche Seite wieder aufgerufen, nur soll jetzt mit einem IF-Satz abgeprüft werden, ob man schon auf der Seite war, oder nicht!

Das ist bisher mein Code:

<?

if($status != 1)
{
 echo"Im If-Zweig";
 $status = 1;
}
else
{
 echo"Im Else-Zweig";
}

?>
<form action="statusTest.php" method="post">
<input type="submit">

</form>

Irgendwie geht er am Anfang unerklärlicher immer in den IF-Zweig und geht dort auch beim nächsten Seitenstart hinein! Wie kann ich das am Besten realisieren?

Gruss Matze

  1. Hallo,

    Irgendwie bekomme ich ein Problem nicht in den Griff! Ich möchte eine Seite beim ersten Aufruf anders durchlaufen lassen, als beim zweiten Aufruf.

    Was soll denn wann passieren?

    Durch das Abschicken des Formulars wird die gleiche Seite wieder aufgerufen, nur soll jetzt mit einem IF-Satz abgeprüft werden, ob man schon auf der Seite war, oder nicht!
    Beim ersten Aufruf soll was passieren keine If Abfrage oder was?

    kennst Du Funktionen?

    Das ist bisher mein Code:

    <?

    if($status != 1)
    {
     echo"Im If-Zweig";
     $status = 1;
    }
    else
    {
     echo"Im Else-Zweig";
    }

    ?>
    <form action="statusTest.php" method="post">
    <input type="submit">

    </form>

    Irgendwie geht er am Anfang unerklärlicher immer in den IF-Zweig und geht dort auch beim nächsten Seitenstart hinein! Wie kann ich das am Besten realisieren?

    Er über prüft ob If vorhanden ist soll er doch oder nicht?
    Beschreibe mal Dein Problem genauer.
    Soll ein Formular angezeigt werden ?
    Ja dann wann?
    Wann soll was passieren.
    Übrigens bin ich mir ziemlich sicher, dass Du eine Lösung hast wenn Du das Problem mal versuchst zu beschreiben.

    Viele Grüße TomIRL

    1. Hey, das ist eben nicht so ganz einfach zu beschreiben! Wenn ich alles bis ins kleinste Detail beschrieben hätte, wäre mein Kaffee unten kalt geworden! ;o)

      Also, ich möchte einen Login programmieren. Auf der Seite soll ein Formular mit zwei Eingabefeldern und einem Submit-Button angezeigt werden. Wenn ich jetzt subimt drücke, soll die gleiche Seite nochmal aufgerufen werden, nur soll jetzt zu Beginn eine SQL-Abfrage stattfinden. Soweit alles klar? ... Beim Ersten Seitenaufruf ---> nur Formular anzeigen... ... Beim zweiten Seitenaufruf ---> Formular anzeigen plus anfängliches SQL-Statement...

      Jetzt wollte ich das Anhand einer IF-Abfrage einer Veriablen $status realisieren. Mein Problem ist jetzt, auf welchen Wert ich die Variable beim ersten Seitenaufruf abfragen muss? Was steht da drinnen? Vielleicht wird jetzt durch den folgenden Beispiel-Code-Abschnitt klar, was ich meine:

      <?

      if($status != 1)
      {
       echo"Im If-Zweig";
       $status = 1;
      }
      else
      {
       echo"Im Else-Zweig";
      }

      ?>
      <form action="statusTest.php" method="post">
      <input type="submit">

      </form>

      Meiner Meinung nach müsste jetzt beim ersten Seitenaufruf der IF-Teil durchlaufen werden und dann beim zweiten der Else-Teil, oder nicht? Ist das Problem jetzt klar?

      Viele Grüsse Matze

      1. Hey, das ist eben nicht so ganz einfach zu beschreiben! Wenn ich alles bis ins kleinste Detail beschrieben hätte, wäre mein Kaffee unten kalt geworden! ;o)

        Also, ich möchte einen Login programmieren. Auf der Seite soll ein Formular mit zwei Eingabefeldern und einem Submit-Button angezeigt werden. Wenn ich jetzt subimt drücke, soll die gleiche Seite nochmal aufgerufen werden, nur soll jetzt zu Beginn eine SQL-Abfrage stattfinden. Soweit alles klar? ... Beim Ersten Seitenaufruf ---> nur Formular anzeigen... ... Beim zweiten Seitenaufruf ---> Formular anzeigen plus anfängliches SQL-Statement...

        Jetzt wollte ich das Anhand einer IF-Abfrage einer Veriablen $status realisieren. Mein Problem ist jetzt, auf welchen Wert ich die Variable beim ersten Seitenaufruf abfragen muss? Was steht da drinnen? Vielleicht wird jetzt durch den folgenden Beispiel-Code-Abschnitt klar, was ich meine:

        Wenn dies so sein soll mußt Du irgendwo die Status mitgeben:
        Also in das Form:
        <input type="hidden" name="status" value="1">
        Die status sollte aber auch sonst nichts wichtiges überprüfen.
        Weil jeder der sich den Quelltext anguckt sieht das Ding ja.

        So ich hoffe ich konnte helfen..

        Viele Grüße aus Berlin

        TomIRL

        1. Vielen Dank für Eure Antworten! Ich bin erst neu in PHP und wusste nicht genau, wie das mit der Variablenübergabe klappt!

          Also, danke vielmals....

          Mattias

        2. Hallo Tom,

          auch das funktioniert nicht. Man könnte ja einfach ein ?status=1 noch hinzuhängen und hat die gleichen Probleme wie vorher. Mit $_POST zu arbeiten ist sicherer.

          Grüße,

          Wolfram

          Also in das Form:
          <input type="hidden" name="status" value="1">
          Die status sollte aber auch sonst nichts wichtiges überprüfen.
          Weil jeder der sich den Quelltext anguckt sieht das Ding ja.

          So ich hoffe ich konnte helfen..

          Viele Grüße aus Berlin

          TomIRL

          1. Richtig!
            Ich habe ganz bewust die Problematik aussen vor gelassen!
            Weil er erst einmal rauskriegen muß wie Variablen überhaupt übertragen werden.
            Dehalb noch nichts von Post und Get.
            Ich hatte auch darauf hingewiesen, dass diese Variable für jeden sichtbar ist.
            Übrigens könntest Du mit Deiner Variante von jedem beliebigen Skript einen Post Request senden und würdest auch ein eigentlich falsches Ergebniss haben.
            Richtig ist so oder so, dass er jede Variable initialisieren sollte.
            D. h. bei jedem Aufruf des Eingabeskriptes sollte der Variable ein Standardwert gegeben werden.
            Ich Persönlich würde die ganze Sache über eine Funktion lösen in der ich die Variable auf Gültigkeit überprüfe.
            Aber von diesen Dingen ist der Matze noch meilenweit entfernt.

            TomIRL

  2. Hallo Mattias,

    Deine Variable '$status' bleibt doch gar nicht erhalten. Beim nächsten Aufruf weiß Dein Script nichts mehr von vorher. Du mußt eine Variable im Formular übergeben und im Script abfragen, ob diese Variable vorhanden ist bzw. einen Wert hat.

    Gruß, Andreas

  3. hi,

    Irgendwie bekomme ich ein Problem nicht in den Griff!

    das rechtfertigt trotzdem nicht, dass du zu dieser frage noch einen weiteren thread aufmachst - du hättest gut und gerne in [pref:t=60097&m=337852] weiterfragen können.

    bitte lies </faq/#Q-11>, und unterlasse solche doppelpostings in zukunft.

    gruss,
    wahsaga

  4. Hallo Matze,

    zuertst musst du dir einmal im Klaren sein, was ein Server ist. Dieses Programm kann so nicht laufen, da du die Variable $status nicht initiiert hast und selbst dann wird es nicht laufen, da diese Variable bei jedem Aufruf
    immer mit diesem Wert belegt wird.

    Aber es gibt eine Möglichkeit, dieses zu ändern.
    if(empty($_POST))
    {
            echo "Im If-Zweig";
    }
    else
    {
            echo "Im Else-Zweig";
    }

    <form method="post">
    <input type="submit"  name="status" value="Abschicken"/>
    </form>

    Was macht das Programm. Wenn nichts gesendet worden ist (die $_POST-Variable ist dann leer, befindet es sich im if-Zweig). Wenn du auf den Submit-Button drückst, bekommt beim Neuladen die globale Variable $_POST einen Eintrag "status" mit dem Wert "Abschicken" und springt dann in den else-Teil.

    Grüße,

    Wolfram

    <?

    if($status != 1)
    {
    echo"Im If-Zweig";
    $status = 1;
    }
    else
    {
    echo"Im Else-Zweig";
    }

    ?>
    <form action="statusTest.php" method="post">
    <input type="submit">

    </form>

    Irgendwie geht er am Anfang unerklärlicher immer in den IF-Zweig und geht dort auch beim nächsten Seitenstart hinein! Wie kann ich das am Besten realisieren?

    Gruss Matze