Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hi,

ich hoffe ihr könnt mir helfen.

Ich habe ein Formular und dort kann man Änderungen vornehmen. Diese Änderungen werden dann bei Klick auf Button speichern in die Datenbank eingetragen. Wenn ich aber auf Button speichern klicke, gehen die Änderungen weg. Erst wenn ich die Seite neu lade erscheinen die neuen Daten. Liegt das an der Methode Post oder wie kann ich das ändern?

Vielen Dank.

Wenn ich aber auf Button speichern klicke, gehen die Änderungen weg. Erst wenn ich die Seite neu lade erscheinen die neuen Daten. Liegt das an der Methode Post oder wie kann ich das ändern?

Hm, der Blick in meine Glaskugel (die, zugegebenen, sehr sehr trüb ist) sagt mir:

Du liest erst die Daten und füllst deine Anzeige und speicherst die geposteten Daten dann erst in der DB.

Hooo Hooo das Problem kenne ich,

du musst etwas an deinem Code rumbasteln.

Du hast es momentan so...

->DAS WIRD ALLES AUF DEINER SEITE ANGEZEIGT<-

->HIER WIRD ALLES VERARBEITET WAS DURCH DEN BUTTON ANKOMMT<-

Dreh dieses Vorhaben einfach um, d.h. du machst erst deine Änderung (an der Datenbank oder ähnliches) und dann bereitest du die Seite auf, und holst Sachen aus der Datenbank, dann sind die Änderungen auch drin- logisch oder? :)

Nein.

Also jemand geht im Menü auf Profil bearbeiten. Danach öffnet sich eine neue php Seite. Auf dieser Seite werden die Daten aus der Datenbank in den Feldern geladen. Wie der Name schon sagt, soll man das Profil bearbeiten können. Also nachdem die Seite geladen wurde mit den Daten kann ein User seine Adresse zum Beispiel ändern. Diese Änderungen sollen nach Klick auf Button speichern in der Datenbank geändert werden. Das klappt auch. Aber wenn ich auf Button speichern drücke werden die neuen Daten zwar in der Datenbank gespeichert aber in den Textfeldern kommen die alten Daten wieder. Erst wenn ich die Seite neu lade sind die neuen Änderungen in der Textbox. Sie sollen aber in den Textboxen erst garnet weggehen wenn ich auf Button speichern klicke.

Ich hoffe ich konnte es jetzt ganz gut erklären.

Ich wär auch dafür das du mal was Code postest, sonst reden wir aneinander vorbei :)

Ich bin immer noch der Meinung das du bevor du die PHP Seite aufbaust, nicht die aktuelle Datenbankabfrage machst, was überhaupt in der DB drinsteht! So hat man nämlich immer noch alten Daten im Hintergrund gespeichert :old

ich bin eher der meinung, das er es keinen Refresh der DB abfrage macht...wenn du speichern drueckst, laed sich deine Seite nicht neu in den Speicher, entweder du leitest nachm Speichern wieder auf eine andere Seite um, oder du laedst die gleiche seite NEU! :) sprich ein Redirect auf die Seite selber, damit solltest du das Problem lösen koennen

[EDIT] Ideal waere vielleicht eine zwischenseite, wo du die Info gibst, das die Daten geaendert wurden und er dann wieder auf die Profilseite geht...

Daten bearbeiten >> speichern >> Redirect SpeicherungsInfo >> Redirect Datenbearbeiten ... weißt was ich mein?[/EDIT]

so long,

ich bin eher der meinung, das er es keinen Refresh der DB abfrage macht...wenn du speichern drueckst, laed sich deine Seite nicht neu in den Speicher, entweder du leitest nachm Speichern wieder auf eine andere Seite um, oder du laedst die gleiche seite NEU!

Ich bin der Meinung, dass wenn man solche Speicherungen etc macht, man die einfach macht, bevor man was aus der DB lädt. Ich geh jetzt mal nicht von AJAX aus, also wird durch den POST sowieso eine "neue" Seite aufgerufen. So wie das aussieht ist es dieselbe.

Also:

1. Falls Daten zum speichern da sind -> speichern.

2. Daten aus DB laden.

3. HTML zusammenstellen und ausgeben.

Also stellt euch doch einfach vor ihr habt euch bei einer seite angemeldet und könnt nun euer profil bearbeiten. hier gebt alles ein uns speichert. nach einem halben jahr zieht ihr aber um und wollt nun im profil die adresse ändern. ihr öffnet das profil und es stehen die daten dort, die ihr vor einem halben jahr eingegeben habt. nun ändert ihr die adresse und klickt auf speichern.

jetzt mein problem. wenn ich auf speichern drücke speichert er mir zwar alles korekt in die datenbank, aber auf der seite stehen wiedet die daten die ihr vor einem halben jahr eingegeben habt. erst wenn ich wieder die seite neu lade sind die änderungen da.

ich benutze die methode post, denke daran liegt es. welche methode muss ich nutzen?

Diese Methode die wir die jetzt schon seit langem versuchen zu erklären.

Pack einefach in dein Formular eine Variable rein

<input type="hidden" name="senden" value="1"
Dann musst du natürlich daran denken das du alle Daten vom Formular übergeben bekommnst. D.h. alle Variablen auslesen die übergeben worden sind

$senden = $_POST['senden']

$Variable1 = $_POST['Variable1']

$Variable2 = $_POST['Variable2']

Dann fragst du ab:
if($senden ==  1)

Wenn ja dann führe ein Update auf die Datenbank aus mit den neuen Daten

Das machst du alles, BEVOR du deine Seite aufbaust und dein Formular füllst

Wenn du jetzt deine Seite aufbaust, also die query machst und die while schleife durchläufst, sind alle neue Daten in der Datenbank, da du ja schon vorher das "UPDATE" gemacht hast!

Ich hoffe du verstehst es so langsam, wenn leider immer noch nicht, dann lies dir mal nen paar Notizen auf PHP-Einfach.de - PHP lernen leicht gemacht

Viel Spaß beim ausprobieren

Steffen

Pack einefach in dein Formular eine Variable rein

<input type="hidden" name="senden" value="1"

Vollkommen unnötig.



<form name="userinfo" action="#">
...
<input type="submit" name="submit" value="Speichern" />
</form>

[/php]

und am Anfang dann einfach:

[php]

if isset($_POST["submit"])
...

Wusste doch das von dir noch ein Kommentar dazugibt,

nur ich glaube in diesem Fall ist es einfacher ihm / ihr das so zu erklären!

Ich denke das mit dem Formname und ne Abfrage ob jetzt submit gedrückt worden ist, ist hier völlig unangebracht.

Egal, mal gucken was jetzt dabei rauskommt

Wusste doch das von dir noch ein Kommentar dazugibt,

nur ich glaube in diesem Fall ist es einfacher ihm / ihr das so zu erklären!

Ich denke das mit dem Formname und ne Abfrage ob jetzt submit gedrückt worden ist, ist hier völlig unangebracht.

Danke, immerhin hab ich deine Erwartungen erfüllt :e@sy

Aber es ist ja überhaupt kein Unterschied zu dem was du machst. Der Formname steht nur der Vollständigkeit halber da und wird ja zu keinem Zeitpunkt genutzt (in dem mini Beispiel) oder abgefragt.

(AFAIK sieht der Standard den aber zwingend vor)

Aber du definierst extra ein hidden-Feld um das abzufragen. Du könntest aber jedes beliebige schon vorhandene Feld abfragen, da das Array $_POST ja nur im Falle einer Post-Anfrage gefüllt wird. Wenn du das mit dem Submit-Button machst, bist du halt sicher dass der immer da ist (so du es nicht über Javascript machst o.ä.).

Nichts anderes tu ich ja. (Und natürlich ist das eine sehr ungenaue Prüfung, es geht nur darum ob da überhaupt was gepostet wurde)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.