Nur geänderte Formular-Feld-Inhalte senden

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

  • Nur geänderte Formular-Feld-Inhalte senden

    Ich habe ein relativ umfangreiches PHP-Formular (ca. 30 Input-Felder bzw. Textareas), welches beim Öffnen Daten aus einer MySQL-Datenbank liest und die vorhandenen Felder entsprechend füllt. Der jeweils angemeldete User kann hier falsch hinterlegte Daten ändern und per Submit-Button mittels einer angepassten Formmailer.php gesendet. Da (zumindest die Textareas) odt mit mehreren Zeilen Text gefüllt sind ist es mir zu lästig alle Daten manuell zu prüfen. Somit hätte ich gerne (möglichst ohne Javascript) eine Prüf-Routine eingebaut, welche letztendlich nur die geänderten Feld-Inhalte übermittelt. Alle nicht geänderten Felder sollen den Wert "" (leer) erhalten.

  • #2
    Genau!

    Sollten Fragen nich mit einem Fragezeichen enden?

    Kommentar


    • #3
      1. geht nur mit js.
      2. und wenn ich den inhalt eines feldes löschen will, übermittelt mein browser den leeren string und du akzeptierst meine änderung nicht?

      Kommentar


      • #4
        Es sind alles Pflichtfelder. Ein Feld "leeren" als Änderung wird somit nicht vorkommen. Wie ginge es denn mit Javascript?

        Kommentar


        • #5
          Was willsten damit bezwecken? Willst du "nur die geänderten" Daten in die Datenbank schreiben? Dann is die Prüfung doch voll sinnlos. Ändere einfach alle Daten in der Datenbank, diejenigen die nicht verändert wurden sind ja dann mit den vorherigen identisch.
          Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

          Kommentar


          • #6
            HI

            lass doch vor dem versenden prüfen ob die inhalte gleich sind.
            indem du dir z.b. die felder holst und dir nochmal die vorherigen Werte holst (haste da ja noch in der DB).
            Wenn beide gleich sind, dann wird das feld nicht gesendet.

            ODER:

            du machst zu jedem Feld noch ein verstecktes feld mit z.b. einem hashwert (oder nochmal dem original-wert).
            Das kannste dann vor dem versenden auch noch einmal prüfen.


            PHP > 5
            http://de3.php.net/manual/de/function.hash.php

            PHP < 5
            http://de3.php.net/manual/de/function.crc32.php
            http://de3.php.net/manual/de/function.sha1.php
            http://de3.php.net/manual/de/function.md5.php

            Und falls du Benutzern nicht so richtig traust, kannst die Daten sonst ja auch in der Session speichern.

            Ich persönlich würde wohl zur ersten Variante greifen (Daten vorm senden prüfen mit nochmaliger DB-Abfrage ob sie sich geändert haben)

            gruss
            iglo
            Zuletzt geändert von kapitaeniglo; 08.09.2007, 11:04.

            Kommentar


            • #7
              Deine erste Lösung habe ich schon vor gehabt. PHP 5 liegt bei diesem Projekt nicht vor. Ich dachte es geht eleganter. Die Daten werden (wie oben beschrieben) nicht wieder in der Datenbank gespeichert sondern aus Sicherheit nur als e-Mail übermittelt. Der Mitarbeiter trägt dann die geänderten Daten händisch in die Datenbank ein. Die ganzen ausgelesenen Variablen, welche das Formular zunächst füllen liegen ja noch vor. Aber wie "hole" ich vor dem Senden die "aktuellen" Feld-Inhalte um diese nochmals vor dem Senden mit den Datenbank-Werten zu vergleichen?
              Zuletzt geändert von Overtone; 08.09.2007, 11:12.

              Kommentar


              • #8
                Wieso klientseitig?

                Das ganze wird nach absenden des formulars auf der verarbeitenden seite gemacht. Serverseitig.

                1. Hole alle alten Daten aus der DB
                2. Vergleiche mit den Daten aus dem Form
                2. ->ggf. speichere geänderte Daten in ein array o.ä.
                3. sende nur die veränderten Daten per E-Mail

                Fertig!

                BTW: Richtig wäre es, die geänderten Daten wohl in der DB zu speichern und nur noch von einem Mitarbeiter bestätigen zu lassen.

                Kommentar


                • #9
                  Na - Genauso wie sie ausgelesen werden um das Formular damit zu füllen?
                  Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                  Kommentar


                  • #10
                    PHP > 5
                    [...]
                    PHP < 5
                    Die Daten werden (wie oben beschrieben) nicht wieder in der Datenbank gespeichert sondern aus Sicherheit nur als e-Mail übermittelt.

                    Kommentar


                    • #11
                      Hi

                      penizilin:
                      sollte heissen PHP neuer als Version 5 und PHP Version älter als Version 5

                      @TE:
                      als Tipp:
                      Speicher die geänderten Daten doch einfach in einr Extrazeile in der DB (also als weitere EIntrag). Wen sie bestätigt wurden, ersetze den Aten Eintrag durch den neuen.
                      Spart viel abtippen

                      Kommentar


                      • #12
                        @iglo:
                        BTW: Richtig wäre es, die geänderten Daten wohl in der DB zu speichern und nur noch von einem Mitarbeiter bestätigen zu lassen.

                        Kommentar


                        • #13
                          und was ist mit der version fünf selbst?

                          Kommentar


                          • #14
                            Ja... ok jetzt versteh ich was du meinst :

                            also PHP > 5 sollte PHP >= 5 heissen ... genaugenommen PHP >= 5.1.2

                            Kommentar

                            Lädt...
                            X