Aktualisierung eines Wertes in gleichem Dokument bei submit

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

  • Aktualisierung eines Wertes in gleichem Dokument bei submit

    Hallo Community.

    Ich habe jetzt schon mehrere Scripte, in denen ganz oben ein Wert aus der DB ausgelesen wird.
    Das Problem, was ich jetzt habe, ist folgendes.
    Weiter unten im Script hat der User die Möglickeit, diese Wert zu verändern, sprich über UPDATE mysql_querys und mit einem submit Button diesen zu aktualisieren. Die gleiche Datei, in der dieser obenstehende Wert ausgegeben wird, dient auch zur Verarbeitung des Scripts.
    Das heißt im Klartext, nach klicken des Submitbutton wird zwar der neue Wert an die DB übergeben, aber erst in dieser Datei nach erneutem aktualisieren dargestellt.

    Ich kann ich das machen, dass der Wert in jedem Fall neu geladen und somit korrekt dargestellt werden kann ?

  • #2
    Den Updatequery vor den Abfragequery platzieren?

    Kommentar


    • #3
      Ich fürchte, das funktioniert in meinem Fall nicht so einfach, weil ich mit vielen Funktionen arbeite, wie auch wieder Update-und Abfragequerys beinhalten. Und diese Funktionen benötige ich teileweise wieder vor anderen Querys.

      Gibt es denn keine andere Möglichkeit, dem Script oder der Funktion zu sagen, du sollte nach dem submit neu abfragen ?

      Kommentar


      • #4
        Da bliebe noch die Methode mit einem Refresh bzw Location-Header.
        Einfach mal nach "http header" googlen
        //geht natürlich auch nur, wenn keine Ausgabe erzeugt wurde.
        Aber warum solltest du in diesem Fall von Funktionen abhängig sein? Eine Anfrage kann auch prozedural gestaltet werden, sobald die Verbindung offen ist
        Zuletzt geändert von $_Baker; 19.03.2008, 19:21.

        Kommentar


        • #5
          Ich weiß nicht ganz, ob ich die Problematik richtig verstanden habe, aber wenn Du die Darstellung in eine function packst?

          Also z.B. beim Absenden ist $action="update"

          Und Deine Darstellung ist

          deineliste();

          Dann eine Abfrage

          if(!isset($action))
          {
          deineliste();
          }

          if($action=="update")
          {
          // der ganze updatekram
          deineliste();
          }

          Dann wird die Darstellung immer dann angezeigt, wenn der Vorgang rum ist, also aktuell, oder hab ich Dein Problem falsch verstanden?

          Kommentar


          • #6
            Was genau meinst du mit prozedural. Die Definition bei Wikipedia sagt mir nicht so wirklich viel.

            Also die Sache ist ja die, dass ich ein Formular habe. Über dieses Formular werden neue Daten, in dem Falle ein neuer Wert, per UPDATE in die DB geschrieben. Auf der gleichen Seite lass ich über dem Formular über echo den aktuellen DB Wert anzeigen.
            Wenn ich also jetzt das Formular submitte, wird zwar der UPDATE query bearbeitet, aber es wird keine neue Anfrage gemacht, die sich ja über dem Formular befindet. Somit entsprich der Wert der in echo geschrieben ist, nicht dem tatsächlichen Datenbestand.

            Beispiel:
            PHP-Code:
            //Hier ist die Abfrage-Query, der mit den aktuellen Wert der DB ausliest
            echo "Hier ist der Wert";

            //An dieser Stelle wird das Formular mit if (isset($_POST blablabla)) bearbeitet und der
            //Wert in die DB geschrieben.

            //Hier ist das Formular, ebenfalls in der if-schleife mit diversen echos dazwischen. 
            Ich kann also das echo, das ganz oben steht, nicht einfach in einer if-bedingung schieben, weil das ganze sonst nicht mehr son funzt wie ich es möchte....

            Hier mal mein Code:

            PHP-Code:
            <?php
            error_reporting
            (E_ALL);

                
            $punkte checkPunkte();

                echo 
            "Hier die Ausgabe ".$punkte['user_punkte'];
                
                
            $gegenstand showgegenstand();
                
            $inventar checkGegenstandMenge();
                    
                echo 
            htmlentities($gegenstand['bla'][1]).": ".$inventar['geg1']."<br/>";
                echo 
            htmlentities($gegenstand['bla'][2]).": ".$inventar['geg2']."<br/>";
                echo 
            htmlentities($gegenstand['bla'][3]).": ".$inventar['geg3']."<br/>";
                echo 
            htmlentities($gegenstand['bla'][4]).": ".$inventar['geg4']."<br/>";
                echo 
            htmlentities($gegenstand['bla'][5]).": ".$inventar['geg5']."<p/>";
                
                
            $userlevel checkUserLevel();

            //Formulare werden verarbeitet

                
            $variable1 = @$_POST['komup'];
                
            $variable2 = @$_POST['spedup'];

                if (isset(
            $_POST['komup']))
                {        
                    if (
            $variable1>$userpunkte['user_punkte'])
                    {
                        echo 
            "Du hast nicht genug Punkte.<br/>";
                    }
                    else
                    {
                        
            mysql_query("UPDATE
                                          users
                                     SET
                                         user_punkte = '
            $userpunkte[user_punkte]' - '$variable1'
                                      WHERE
                                         user_id = '
            $userdata[user_id]'") OR die(mysql_error());    
                        
                        
            mysql_query("UPDATE
                                         users
                                     SET
                                         user_kompfhr = '
            $userlevel[user_kompfhr]' + 1
                                     WHERE
                                         user_id = '
            $userdata[user_id]'") OR die(mysql_error());
                    }
                }
                
                if (isset(
            $_POST['spedup']))
                {        
                    if (
            $variable2>$userpunkte['user_punkte'])
                    {
                        echo 
            "Du hast nicht genug Punkte.<br/>";
                    }
                    else
                    {
                        
            mysql_query("UPDATE
                                          users
                                     SET
                                         user_punkte = '
            $userpunkte[user_punkte]' - '$variable2'
                                      WHERE
                                         user_id = '
            $userdata[user_id]'") OR die(mysql_error());    
                        
                        
            mysql_query("UPDATE
                                         users
                                     SET
                                         user_popsped = '
            $userlevel[user_popsped]' + 1
                                     WHERE
                                         user_id = '
            $userdata[user_id]'") OR die(mysql_error());
                    }
                }

                echo 
            "Hier werden deine verschiedenen Level angezeigt:<br/>";

            //Formular für First-Level
                
                
            echo "Level ".$userlevel['user_kompfhr']." von 15 erreicht.<br/>";
                
                switch (
            $userlevel['user_kompfhr'])
                {
                    case 
            0$value1=1000; break;
                    case 
            1$value1=2000; break;
                    case 
            2$value1=3000; break;
                    case 
            3$value1=4000; break;
                    case 
            4$value1=5000; break;
                    case 
            5$value1=6000; break;
                    case 
            6$value1=7000; break;
                    case 
            7$value1=8000; break;
                    case 
            8$value1=9000; break;
                    case 
            9$value1=10000; break;
                    case 
            10$value1=11000; break;
                    case 
            11$value1=12000; break;
                    case 
            12$value1=13000; break;
                    case 
            13$value1=14000; break;
                    case 
            14$value1=15000; break;
                    
                    default: 
            $value=1000;
                }
                if (
            $userlevel['user_kompfhr']<15)
                {
                echo 
            "<form method='post' action='status.php'><input type='hidden' value='$value1' name='komup'><input type='submit' value='$value1' name='komup'></form>";
                }
                else
                {
                echo 
            "Du hast das h&ouml;chste Level erreicht.<br/>";
                }
                
            //Formular für Second-Level    
                
                
            echo "Level ".$userlevel['user_popsped']." von 15 erreicht.<br/>";
                
                switch (
            $userlevel['user_popsped'])
                {
                    case 
            0$value2=1000; break;
                    case 
            1$value2=2000; break;
                    case 
            2$value2=3000; break;
                    case 
            3$value2=4000; break;
                    case 
            4$value2=5000; break;
                    case 
            5$value2=6000; break;
                    case 
            6$value2=7000; break;
                    case 
            7$value2=8000; break;
                    case 
            8$value2=9000; break;
                    case 
            9$value2=10000; break;
                    case 
            10$value2=11000; break;
                    case 
            11$value2=12000; break;
                    case 
            12$value2=13000; break;
                    case 
            13$value2=14000; break;
                    case 
            14$value2=15000; break;
                    
                    default: 
            $value=1000;
                }
                if (
            $userlevel['user_popsped']<15)
                {
                echo 
            "<form method='post' action='status.php'><input type='hidden' value='$value2' name='spedup'><input type='submit' value='$value2' name='spedup'></form>";
                }
                else
                {
                echo 
            "Du hast das h&ouml;chste Level erreicht.<br/>";
                }
            }

            ?>
            Zuletzt geändert von CosmoPhobia; 20.03.2008, 10:31.

            Kommentar


            • #7
              Ich kann also das echo, das ganz oben steht, nicht einfach in einer if-bedingung schieben, weil das ganze sonst nicht mehr son funzt wie ich es möchte....
              Warum sollte es in eine if-Bedingung?
              In checkPunkt() wird die Abfrage durchgeführt, nehme ich mal stark an.
              Statt den Updatequery darunter zu platzieren, einfach obendran quetschen.

              Kommentar


              • #8
                Ich habe eben gesehen, das die Funktion checkPunkt() 2 mal im Script stand, völlig unsinnig. Hab das oben mal korregiert. Und jetzt schau bitte nochmal. Ganz oben ist die Funktion checkPunkt(), die bei Aufruf des Scriptes den aktuellen Punktestand niederschreibt, auch schon bevor mal das Formular abschickt.
                Was kann ich eurer Meinung nach machen, das dieser Wert sich sofort nach submit aktualisiert. Okay, ich könnte die Funktion mit samt des echo hinter die if-Bedingung mit den Updates packen, aber dann wäre immernoch das Problem, dass er unten die Level nicht immer sofort aktualisiert werden, auch die buttons nicht...

                Kommentar


                • #9
                  • Script bekommt die Daten des Formulars
                  • Script verarbeitet diese Daten
                  • Script trägt in die Datenbank ein
                  • Script holt sich den AKTUELLEN Wert aus der Datenbank und baut damit die restliche Seite auf


                  Das nennt sich Eingabe-Verarbeitung-Ausgabe Prinzip

                  Kommentar


                  • #10
                    Danke für deine Ausführung. Hat mir doch ein Stück weitergeholfen, wobei ich diese Vorgehensweise im Nachhinein nur als logisch ansehe. Hmm naja, jetzt funktioniert es jedenfalls. Muss zwar manche Abfrage-Query bzw. Funktionen doppelt nehmen, aber dafür sind die ja auch da

                    Danke
                    Gruß

                    Kommentar

                    Lädt...
                    X