Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe im Frontend ein Textfeld und einen Submit-Knopf. Wenn ich im Textfeld Hello World eingebe und dann auf den Submit-Knopf drücke, möchte ich, dass der Wert in meiner Datenbank gespeichert wird. Gut, soweit alles machbar. Nachdem ich auf den Submit-Button geklickt habe, bleibe ich auf derselben Seite (sie wird nicht neu geladen) und ändere den Text und drücke nochmals auf den Submit-Button.
In der Datenbank wurde also zuerst der Wert Hello world gespeichert und nun soll der Wert in Hello World Again umbenannt werden.
So sieht meine Datenbank aus:
id
text
1
Hello World
2
Lorem Ipsum
3
Hello World
So, welche Zeile soll nun bearbeitet werden?
Mein Problem ist also, dass ich in der DB die gleichen Texte habe und den bearbeiteten Text nicht identifizieren kann. Ich wäre froh, wenn mir jemand die Logik erklären würde.
Die Logik siehst du doch schon an deiner Tabelle. Du brauchst die ID um den richtigen DS zu identifizieren. Du kannst z.B. deiner Form ein Hidden-Input hinzufügen, welches die ID enthällt. Dann wird bei Submit die ID mit übertragen. Es wäre auch möglich ein Cookie zu verwenden. Beim Speichern muss allerdings validiert werde, dass nur auf ID's zugegriffen wird, für welche der Nutzer auch berechtigt ist.
Note: Do not use hidden inputs as a form of security!
Ich verstehe dein Problem nicht. Anscheinend schreibst du nur Daten in die Datenbank aber liest nichts aus. Ist doch logisch, dass deine Tabelle immer weitere Einträge erhält und nichts editiert. Also du änderst nichts.
Eigentlich bräuchtest du im Frontend eine "Liste" der Einträge die du erstellt hast zuvor und die dann dort angezeigt werden. In dieser "Liste" sollte es dann möglich sein, die zuvor erstellen Einträge nachträglich zu editieren.
Das alles in einem Textfeld zu machen ist auch möglich aber dann müsstest du bei erneuter Eingabe prüfen, bevor du in die DB schreibst, ob der String den du neu eingeben hast genau so anfängt wie ein schon vorhandener Eintrag in der DB. Das kann schon etwas umfangreicher werden.
Also wenn der Eintrag bereits existiert, könnte ich natürlich im Frontend die ID mitgeben, und im Formular wird dann die ID sowie der Text gesendet. Aber der Text existiert ja noch nicht.
Ich könnte es natürlich mit 2 Requests machen. D.h.
Client sendet den Wert vom text an backend
Backend speichert den Wert in DB und sendet deren ID an Client
Client erhält als Response die ID und speichert es in DOM
Client schickt das Formular erneut ab, aber diesmal mit einer ID
Backend aktualisiert den neuen Wert von der Zeile mit der entsprechenden ID
Ist natürlich etwas umständlich, deshalb dachte ich, ob es vielleicht eine einfachere Methode gäbe.
Du beschreibst ja das Backend leider gar nicht. Normalerweise gibt es dort eine Session. In dieser könntest du die neue ID halten, solange diese Session aktiv ist. Musst du komplett statuslos arbeiten kannst du statt dem Form-Submit die JavaScript-Fetch-Api verwenden. So kannst du auch mit einem POST-Request eine Antwort zurück an die Webseite/JS schicken, z.B.: die ID.
Also wenn der Eintrag bereits existiert, könnte ich natürlich im Frontend die ID mitgeben, und im Formular wird dann die ID sowie der Text gesendet. Aber der Text existiert ja noch nicht.
Verrate uns nicht zu viel über irgendwelche Details, wäre sonst zu einfach dir zu helfen.
*Ironie Off
Natürlich kannst du die id mitgeben bei noch nicht erstellten Strings. Wenn deine Tabelle AutoID Off ist, beispielsweise. Theoretisch könntest du auch mit einem selbstdefinierten Schlüssel zur Identifizierung arbeiten. Also es geht schon, ob es elegant ist oder für deine Aufgabe notwendig ist, ist eine andere Frage.
Generell wäre interessant zu wissen welches Framework du überhaupt verwendest zwischen Backend und DB.
Sonst ist die Antwort von @Oneixee5 eine jeweils sehr elegante Lösung.