Ankündigung

Einklappen
Keine Ankündigung bisher.

Array mit mehreren Formularen füllen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array mit mehreren Formularen füllen

    Hallo PHP-User.

    Folgendes Problem hat sich bei mir aufgetan:

    Ich möchte zu jedem Wochentag Mo-Fr für jeden Tag mehrere Werte in ein Array schreiben. Hierzu habe ich ein mehrdimensionales $_SESSION-Array erstellt. Das funktioniert auch alles einwandfrei. Damit ich dieses Array füllen kann, habe ich für jeden Tag ein eigenes Formular eingebaut. Dieses Formular schickt die Werte mittels post immer wieder auf sich selbst, bis der User alle Werte eingetragen hat und dann ebenfalls mittels formular post auf die nächste Seite gelangt, wo alle Werte in eine Datenbank geschrieben werden.

    seite1.php
    PHP-Code:
    <?php
    $montagwert1 
    mysql_escape_string($_POST['montagwert1']);
    if (isset (
    $montagwert1))
        {
        
    $_SESSION['input'][montag][$arraycountmontag][0] = $montagwert1;
        }

    $dienstagwert1 mysql_escape_string($_POST['dienstagwert1']);
    if (isset (
    $dienstagwert1))
        {
        
    $_SESSION['input'][montag][$arraycountmontag][0] = $dienstagwert1;
        }
    ?>

    Montag: 
        <form method="POST" action="seite1.php">
        
            
        <input type="hidden" name="montagwert1" value="montagwert1">
            
        <input type="submit" value="hinzufügen" name="B2">
        </form>

    Dienstag: 
        <form method="POST" action="seite1.php">
        
            
        <input type="hidden" name="dienstagwert1" value="dienstagwert1">
            
        <input type="submit" value="hinzufügen" name="B2">
        </form>
    Problem bei der Sache ist jetzt das isset:
    Wenn ich einmal eine post_Übergabe auf die Seite1.php übergeben habe und ich als nächstes die Dienstagvariablen füllen möchte mit dem zweiten Formular, ist die $_post-Variable vom Montag anscheinend immer noch gesetzt und es wird ungewollt auch immer wieder die Montagsvariable mit den vorangegangenen Werten gefüllt. Was tun?
    Für Hilfe bin ich sehr dankbar!

  • #2
    Eine Session hat u.a den fantastischen Zweck, daß Variablen übergreifend erhalten bleiben!

    Egal ob Du das mit Sessions lösen möchtest oder ohne, Du kannst anhand der Formulare unterscheiden.
    Gib Deinen Form´s ein name-Attribut und unterscheide danach...

    Beitrag editiert:
    Alternativ: In jede Form ein Input type="hidden" mit value="{wochentag}".

    Kommentar


    • #3
      Zitat von Arne Drews Beitrag anzeigen
      Alternativ: In jede Form ein Input type="hidden" mit value="{wochentag}".
      Ich würd noch weiter gehen, nur 1 Formular mit dem hidden name="wochentag", dieser dient sozusagen als selector. Die Inputfelder werden in Abhängigkeit vom Wochentag ausgegeben.

      Kommentar


      • #4
        In ein Formular kann ichs nicht packen, das gibt meine Codearchitektur nicht her. Aber das mit den name-Attribut hört sich interessant an. Kannst du mir anhand meines Codes ein Beispiel geben, wie das aussehen müsste?

        Kommentar


        • #5
          Öhm... Nö, das sind nun wirklich Dinge, die Du wissen solltest.
          Aber falls Du nur kurz auf'm Schlauch stehst, mal ganz allgemein:
          Code:
          <HTMLELEMENT attribut=""></HTMLELEMENT>
          Funktioniert bei allen HTML-Elementen, die das entsprechende Attribut unterstützen...

          Kommentar


          • #6
            Zitat von Arne Drews Beitrag anzeigen
            Gib Deinen Form´s ein name-Attribut und unterscheide danach...
            Kann man auch falsch verstehen, denn das name-Attribut einer Form wird beim Absenden nicht mit übertragen oder liege ich da falsch?
            Aber wenn er das hidden-feld wie vorgeschlagen nutzt, hat er auch eine Identifizierung der Form.

            Kommentar


            • #7
              Allein dieser Codeabschnitt enthält schon unglaublich viele Fehler:
              PHP-Code:
              $montagwert1 mysql_escape_string($_POST['montagwert1']);
              if (isset (
              $montagwert1))
                  {
                  
              $_SESSION['input'][montag][$arraycountmontag][0] = $montagwert1;
                  } 
              1. Zugriff auf $_POST['montagwert1'] ohne Existenzprüfung
              2. Dafür isset später, da wurde aber schon zugewiesen
              3. mysql_escape_string hat hier überhaupt nichts zu suchen
              4. … und ist veraltet
              5. [montag] - Konstante nicht definiert. String verwenden!
              6. [$arraycountmontag] - Variabler nicht definiert
              7. session_start fehlt
              8. Dasselbe kopiert für Dienstag… erzeugt unnötoge Code-Rendundanz

              Kommentar


              • #8
                @nikosch: Danke für den Hinweis. Hab ich echt nicht gewusst, dass mysql_escape_string veraltet ist. Ich lerne grad php mit einem Skript von 2003 und da bin ich schon über ein paar so veraltete Code-Befehle gestolpert. Muss ich gleich mal ändern.
                Nochmals Danke an alle, die mir geantwortet haben. Aber um die Sache auf den Punkt zu bringen: Ich bin noch nicht wirklich schlauer. Zu wissen, wie es nicht geht ist ja schon mal gut - zielführend ist das leider nicht. Ich will ja nicht, dass mir jemand meinen Code schreibt, ich will nur verstehen, wie mans richtig macht. Vergesst bitte nicht, dass ich hier in der Gruppe PHP-Einsteiger bin. Gruß Zapper

                Kommentar


                • #9
                  Zitat von Zapper
                  ich will nur verstehen, wie mans richtig macht.
                  Sorry, aber das ist dann jedenfalls der falsche Weg:
                  Zitat von Zapper
                  Ich lerne grad php mit einem Skript von 2003
                  Die Problematik an sich ist nicht die PHP-Programmierung im tieferen Sinne, sondern das (Un-)Verständnis von HTML-Formularen.
                  Lies Dich dort ein, dann solltest Du es hinbekommen.
                  Wenn nicht, kannst immer noch Fragen stellen. Aber das Verständnis mußt Du Dir selbst aneignen:
                  HTML-Formulare

                  Kommentar

                  Lädt...
                  X