Nachricht nach Submit Click

Schon festgestellt? Dem Forum sind gerade alle Interaktionsmöglichkeiten genommen. :(

Mehr dazu unter: Abstimmung über das Forum

  • Moin,


    ich bräuchte mal einen Tipp, ich bin gerade aktuell definitiv nicht Schlau genug.


    Ich habe eine Form erstellt mit einem Input und einem Submit Button. (Das Input - Feld ändert etwas in einer vorhanden SQL Tabelle in meinem Beispiel einen Benutzername)

    Wenn ich den Submit Button drücke, werde ich mittels Window.Location auf die gleiche Seite weitergeleitet um die Änderungen zu aktualisieren.


    Ich möchte sobald sich die Seite neu geladen hat, eine Nachricht ausgeben mit "Änderungen waren Erfolgreich"

    die Nachricht wird allerdings nicht angezeigt. Weil die Seite halt neu geladen wurde.



    Hat jemand eine Idee? Bin ich gerade definitiv zu blöd dafür.





    Mit freundlichen Grüßen

  • Ganz normal Location über Header halt.


    Code
    1. $changeName = $dbv->prepare("UPDATE users SET username = :username WHERE userId = :userId");
    2. $nameChanged = $changeName->execute(array(":username" => $username, ":userId" => $userId));
    3. if(isset($nameChanged) {
    4. header("Location: profil.php");
    5. }


    Wollte halt nach dem HEADER auf der Seite eine Nachricht ausgeben.

  • 2 Möglichkeiten:


    1. hänge einen Parameter an die URL

    2. speichere einen Wert in einer Session, den du dann in profil.php abfragen kannst


    Hinweis (aus der Doku)

    Die meisten zeitgemäßen Clients akzeptieren relative URIs als Argument für » Location:, aber einige ältere Clients benötigen einen absoluten URI inklusive dem Schema, Hostnamen und absoluten Pfad.

  • Wenn ich den Submit Button drücke, werde ich mittels Window.Location auf die gleiche Seite weitergeleitet um die Änderungen zu aktualisieren.

    Klingt sinnlos... Das ist doch das Standardverhalten eines Affenformular. Ausgehend von HTML5 einfach das action-Attribut leer lassen und es wird auf die gleiche Seite geleitet bei einem Submit. Mehr JavaScript als nötig macht es nicht besser.


    Hat jemand eine Idee? Bin ich gerade definitiv zu blöd dafür.

    Ich tendiere zu Punkt 2 von m.scatello

  • Hey,


    Ich habe jetzt einen Wert in einer Session gespeichert:

    Ich habe es nun so gemacht. Das ich nachdem die Eingabe mit dem Submit Button erfolgreich war. Mich erst auf die Seite zurück leite und dann einen Wert

    in einer Session gespeichert habe.


    Nun habe ich auf der Profilseite die Session abgefragt.


    Es funktioniert leider noch nicht ganz.


    Code
    1. if($changeUsernameSuccess) {
    2.     header("Location: profil.php?id=" . $userId);
    3. $changed = $_SESSION["change"] = "Test";
    4. }


    Code
    1. if(isset($changed)) {
    2.     echo $changed;
    3. }



    Mfg

  • Du solltest dich intensiver mit Sessions beschäftigen, denn was du da machst, ist (sorry) großer Quatsch!


    Wo ist das erforderliche session_start()?

    Wieso setzt du eine Session-Variable nach der header Anweisung?

    Wieso setzt du im ersten Script $changed?

    Im zweiten Script ist $changed Blödsinn, du musst auf die Session zugreifen, aber auch da brauchst du ein session_start()


    Fazit: du hast dich herzlich wenig mit dem Thema Session beschäftigt.

  • //edit


    Hey,


    Ich habe vorher 2 Versionen ausprobiert. Beide haben Anfangs nicht funktioniert. Jedes allerdings klappt es doch einwandfrei.


    Hat vielleicht jemand eine Idee wie die Session löschen kann nachdem der Benutzernamen Wechsel erfolgreich war?



    Heißt:

    Session wird abgefragt und Text wird ausgegeben.

    Nun ist es ja so das dieser Text jedesmal da steht wenn man die Seite neu aufruft und neu lädt.




    Es soll ja so sein das der Inhalt der Session nur angezeigt wird, wenn der Benutzername geändert wurde.




    mfg

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von CuzImCloud ()

  • Ja. Das Problem ist.



    Ich Drücke den Submit Button und speichere eine Session.

    Die Session frage ich in profil.php ab.


    Der Inhalt aus der Session soll aber ja nur angezeigt werden wenn der Benutzername geändert wurde.

    Heißt. Beim erneuten Aufrufen von profil.php soll diese Nachricht weg sein.



    Das habe ich mittels unset ganz oben auf der Seite gemacht.

    Auch Abgefragt mit isset



    Jetzt ist es so das wenn ich den Submit Button erneut drücke, die Nachricht gar nicht mehr kommt. Weil mit Drücken des Submit Button ja sozusagen die Seite neu geladen wird. Und der Code somit wieder die Session löscht und gar nicht erst den Inhalt anzeigt.



    Und dann ist es noch so. Das wenn das Textfeld wo der neue Benutzername rein geschrieben werden soll leer ist und ich auf den Submit Button drücke, die Fehlermeldung welche ich erstellt habe wenn das Textfeld leer ist und ausgegeben wird die Nachricht aus der Session ebenfalls angezeigt wird.



    //edit

    Das mit den Leeren Textfeld das das dort trotzdem gezeigt wird, habe ich gelöst.

    Ist jetzt nur das mit dem Neuladen. Da komme ich nicht weiter.

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von CuzImCloud ()

  • Bitte mal logisch denken! Das ist nämlich kein Programmier-Problem, sondern ganz einfach ein logisches Problem.


    Wenn das Eingabefeld das erste Mal gefüllt und das Formular gesendet wird, setzt du eine Session-Variable, z.B.


    $_SESSION['messageNeeded'] = 1;


    Wenn die Message angezeigt wurde, setzt du


    $_SESSION['messageNeeded'] = 0;


    Damit kannst du dann prüfen:


    Code
    1. if (isset ($_SESSION['messageNeeded']) && $_SESSION['messageNeeded'] == 1)
    2. {
    3. echo "Changed";
    4. $_SESSION['messageNeeded'] = 0;
    5. }
  • Diese Version hatte ich auch schon. Aber Funktioniert hat sie nicht.


    Ich habe ganz normale die den Wert 1 gesendet, nach meinem $nameChanged



    Code
    1. $nameChanged {
    2.    $_SESSION['messageNeeded'] = 1;
    3. }


    $nameChange wird ausgeführt wenn die Namensänderung erfolgreich war.



    So dann habe ich Abgefragt ob das den Wert "1" entspricht. Dann sende ich die Nachricht und setzte das ganze wieder auf "0"


    Aber die Nachricht bleibt weiterhin dort stehen.

  • Sorry hab mich vertan:



    Code
    1. if($nameChanged) {
    2. $_SESSION['messageNeeded'] = 1;
    3. }


    gehört hierzu:


  • Na nicht aufgeben.

    Frag mal m.scatello wie oft ich mich am Anfang über PHP ausgekotzt habe.

    Ich wollte auch immer wieder aufgeben und habe es doch weiter gemacht.

    Natürlich bin ich noch lange kein Profi , doch jetzt brauch ich nur ein Tritt in der richtigen Richtung und dann klappt das meißtens auch.

    Der Session kram ist gar nicht so schwer, einfach etwas Googeln und vieleicht auch paar teste machen auf dein Webserver und dann versteht das man das auch recht schnell.

    Auserdem ist bei Session auch session_start() wichtig weil sonst eigentlich nix geht mit Session.

    Bitte verbessert mich wenn ich falsch liege.


    kann das sein das du am anfang kein session_start() gesetzt hast ?