Ankündigung

Einklappen
Keine Ankündigung bisher.

Formularseite mit mehreren Submit-Buttons -> extreme Verzögerung bei einem Button

Einklappen

Neue Werbung 2019

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

  • Formularseite mit mehreren Submit-Buttons -> extreme Verzögerung bei einem Button

    so, ich hoff mein Titel sagt schon mal genug ...

    Mein Hauptformular für Kundendaten hat - je nach Situation und Rechtestufe des Bedieners - verschiedene Buttons, um Änderungen zu speichern ..

    gemäß dem was ich in diversen Foren und Büchern gelesen habe über mehrere Submits beim gleichen Formular habe ich die jeweils mit einem unterschiedlichen name-Attribut versehen - und die Beschriftung ist auch immer anders..

    beim Verarbeiten der Post-Daten schaue ich daher mit if (isset($_POST[<name>])) nach, welcher der Buttons denn was liefert - und checke obendrein auch noch , ob die Beschriftung des Buttons so aussieht, wie ich sie brauche (weil einige Formulare die gleiche Beschriftung tragen)...

    das klappt soweit ganz gut .. bei den Buttons, die ich btn1 bis btn4 genannt habe (nennt mich ruhig einfallslos) ... komischerweise verhält sich btn9 (Sonderfunktion) komplett anders ..

    nach dem Anklicken vergehen über 2 Minuten, bis sich irgendwas tut - und er kehrt nicht inicht ins Formular zurück, obwohl ich die betreffende Variable setze, mit der er aus den anderen Abschnitten wieder im Formular landet ...

    ich bin ratlos ..

    PHP-Code:
    if (isset($_POST['btn1'])) {
       if (
    $_POST['btn1']=='Kontrakt Speichern') { // Kunden-Daten speichern
          
    ... // behandeln
       
    }
       
    $anzeige=10// wieder ins Kundenformular um Erfolgsmeldung anzuzeigen 
    }
    elseif (isset(
    $_POST['btn2'])) {
     ..... 
    // dito 
    }
    elseif (isset(
    $_POST['btn9'])) { // ewiges warten
         
    ... // behandeln
       
    $anzeige=10// wieder Formular <-- scheint nicht mehr zu passieren

    vielleicht weiß ja jemand, ob "btn9" als name verboten ist, und es deshalb so lang dauert ...?
    "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste


  • #2
    Hm...wäre mir jetzt nicht bekannt, dass das verboten ist. Schon mal einen beliebigen, anderen Namen probiert?! Wie genau sieht das Formular aus?

    Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      in groben Zügen so ..
      HTML-Code:
      <form action="" method="post">
      <input type="hidden" name="sent" value="20" />
      .
      <p class="form">
      <label for="kunde">Kunde:</label>
      <textarea name="kunde" id="kunde" rows="3" cols="60"></textarea>
      </p>
      .
      .
      <p class="form">
      <label for="btn9" class="head" style="color: #FF0000;">Titelzeile</label>
      <input type="submit" name="btn9" class="bigtopbutton" style="css;" value="Beschriftung" />
      </p>
      .
      .
      .
      </form>	
      css; sind ein paar Style-Anweisungen, die dem Button eine Rote Farbe (blass) geben und eine kräftig rote Beschriftung
      "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

      Kommentar


      • #4
        WAS tut sich an der Stelle?

        PHP Code von der Behandlung. Vergleichsweise bitte auch den Code für einen anderen Button (wo sind die Unterschiede?)
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Dann wird vermutlich Deine Behandlungsroutine so inperformant sein?
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            Zitat von eagle275 Beitrag anzeigen
            vielleicht weiß ja jemand, ob "btn9" als name verboten ist, und es deshalb so lang dauert ...?
            Nein, natürlich nicht ...

            Mach an der Stelle ein die("formular wurde mit button 9 abgesandt") o.ä. rein, dann solltest du augenblicklich die entsprechende Anzeige bekommen.

            Und der logische Schluss ist, dass wohl deine weitere Verarbeitung der Daten entsprechend lange dauert.

            Kommentar


            • #7
              das ist ja gerade das merkwürdige @nikosch und istegelitz .....

              ich hab ganz am Anfang meines Skripts, also da, wo es jedesmal losgeht (OOP) ein foreach ($_POST as $key=>$element) echo $key." - ".$element."<br>";( @chris - wenn da Btn9 gedrückt wurde, seh ich es in den Post-Daten - also hab ich im Grunde deine "Forderung" auch erfüllt )
              drin ... und bei allen anderen Buttons kommt sofort die Ausgabe vom debugging und wenige hundertstel später dann die Ausgaben vom erfolgreichen speichern ... (mit firebug überprüft ) - nur bei btn9 passiert gut 2 minuten "überhaupt nichts" - nur im Firefox rotiert die Aktivitätsanzeige des Tabs - unten der Lade-Balken bleibt aber leer ....

              dann nach den 2 minuten kommt die debug-Ausgabe und danach dann Ausgaben, die darauf schließen lassen, dass er im richtigen Abschnitt gelandet ist .. nur dort macht er dann wieder "Mist"

              und zur Behandlung - den Code hab ich doch eigentlich dorthin geschrieben -

              PHP-Code:
              if (isset($_POST['btn1'])) {
                 if (
              $_POST['btn1']=='Kontrakt Speichern') { // Kunden-Daten speichern
                    
              $erfolg=$this->speichern_kunde($_SESSION['ACT'],$ret); //Rückgabe zwischenspeichern
                    
              if ($erfolg[0]!=TRUE) {
                       
              $_SESSION['kopier']='t';
                       
              $_SESSION['ACT']=$new;
                    }
                 }
                 
              $anzeige=10;

              so ähnlich sehen alle diese Abschnitte aus .
              "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

              Kommentar


              • #8
                so ähnlich sehen alle diese Abschnitte aus .
                - Auch der von Button 9?
                - Was heißt so ähnlich?
                - $this->speichern_kunde() - Tja irgendwo hier wirds wohl liegen. Debuggen musst DU aber schon selbst.
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Wenn deine Verarbeitung lange dauert, dann bekommst du die Debug-Ausgaben vermutlich auch nicht vorher zu sehen, so lange du nicht explizit den Buffer flushst.
                  Wie gesagt, ein die direkt hinter die Debug-Ausgaben, so dass vor der eigentliche Verarbeitung abgebrochen wird - dann solltest du recht schnell sehen, was Sache ist. (Bzw. einfaches print_r/var_dump von $_POST und danach die/exit direkt am Scriptanfang.)

                  Kommentar


                  • #10
                    nun eine Funktion zum generieren eines Tickets - wenn der Mitarbeiter einen Kontrakt prüfen soll arbeitet "natürlich" etwas anders - aber ich hab gerade mal testweise den Block innerhalb der Behandlung von btn9 auskommentiert und werd nun mal gucken, ob es schneller geht ....


                    OK .. das geht schneller - also ist der Bock wohl in meinem Code - frag ich mich natürlich warum die Debug-Ausgabe auch erst so spät kommt - oder hängt das an der Arbeitsweise von PHP in Zusammenarbeit mit dem Webserver

                    danke für die Hinweise
                    "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

                    Kommentar


                    • #11
                      Nein, das ist dein Code...

                      Schreib den Log in eine Datei, die du mit einem Editor + Änderungserkennung geöffnet hälst, anstatt auf Bildschirmausgaben zu warten... siehe auch ChrisB' Kommentar in #9
                      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                      Kommentar


                      • #12
                        ja - das mit dem flush() hat er gepostet, als ich meinen Code kurz angepasst habe um zu sehen, ob es wirklich mein Abschnitt ist, der verzögert ..

                        hat sich aber erledigt - und es war doch nicht "mein" CODE - ich hatte mich bei der DB-class darauf verlassen, dass auch ein SELECT mit keinem Ergebnis mit einem FALSE angekündigt wird - was aber nicht der Fall war ..

                        nach dem umschreiben einiger Abfragen, die auf Select mit 0 Ergebnissen angewiesen sind , läuft der Code mit der "normalen" Antwortzeit von wenigen Millisekunden, bis das Formular wieder erscheint
                        "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

                        Kommentar


                        • #13
                          Technisch gesehen ist ein Ergebnis von 0 Zeilen kein Fehler bei einer Abfrage, dann hat die Selektion eben nichts ergeben, aber erfolgreich war die Query ja.
                          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                          Kommentar

                          Lädt...
                          X