Gernot: Formular in Formular

Hi!

Ich lese aus einer Datenbank einige Datensätze aus, die ich untereinander ausgebe. Ich möchte jeden Datensatz editier- und löschbar machen. Deshalb werden die Daten in Editfelder ausgegeben und jede Zeile ist mit einem eigenen Submit-Button versehen.

Das Problem ist aber, dass es auch angenehm wäre mehrere Änderungen durchzuführen und dann einen globalen Submitbutton zu klicken.
Die Lösung wäre ein Formular, dass die ganzen einzelnen Zeilen als Formulare als Kinder hat.

Meine Frage ist, ob das funktionieren könnte und wenn ja, wie sieht es mit der Kompatibilität aus.

Danke!!!

  1. Hallo Gernot,

    Ich lese aus einer Datenbank einige Datensätze aus, die ich untereinander ausgebe. Ich möchte jeden Datensatz editier- und löschbar machen. Deshalb werden die Daten in Editfelder ausgegeben und jede Zeile ist mit einem eigenen Submit-Button versehen.

    Das Problem ist aber, dass es auch angenehm wäre mehrere Änderungen durchzuführen und dann einen globalen Submitbutton zu klicken.

    Wo ist das Problem? Statte jeden Datensatz mit einer Checkbox aus.
    Alle angehakten Datensätze werden verarbeitet, die nicht angehakten nicht. So macht es z.B. web.de

    Die Lösung wäre ein Formular, dass die ganzen einzelnen Zeilen als Formulare als Kinder hat.

    Meine Frage ist, ob das funktionieren könnte

    Nein, das kann nicht funktionieren. Formulare dürfen keine Formulare enthalten.

    und wenn ja, wie sieht es mit der Kompatibilität aus.

    ist irrelevant, da "Nein"; ist aber auch inkompatibel zu real existierenden Browsern.

    Freundliche Grüße

    Vinzenz

    1. hallo Vinzenz,

      Alle angehakten Datensätze werden verarbeitet, die nicht angehakten nicht. So macht es z.B. web.de

      Warum in die Ferne schweifen? Das Abstimmungsformular der Zitatesammlung macht es ebenso ...

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
      1. Hallo!

        Erstmal danke für eure Antworten. Ich finde es aber unbequem, wenn man etwas bearbeitet und dann noch ein Häkchen ankreuzen muss, damit es gespeichert wird... aber mal sehen, zumindest weiß ich jetzt, dass es mit Unterforms nicht geht :-)

        1. hallo,

          Ich finde es aber unbequem, wenn man etwas bearbeitet und dann noch ein Häkchen ankreuzen muss

          Das ist in der Zitatesammlung so, aber bei dir muß das nicht so sein. Du kannst anstelle der Checkboxen auch input-Felder nehmen, die du mit deinen Datenbanksätzen füllst, oder beliebige andere Elemente.

          Grüße aus Berlin

          Christoph S.

          --
          Visitenkarte
          ss:| zu:) ls:& fo:) va:) sh:| rl:|
          1. Das hab ich ja sowieso schon gemacht :-)
            Ich hätte es nur praktisch gefunden jede Datenzeile extra speichern zu können oder alle gemeinsam, aber da man dafür offensichtlich ein Workaround benötigt, werde ich nur den Alles Speichern-Button nehmen :)

            Danke

            1. Hallo

              Das hab ich ja sowieso schon gemacht :-)
              Ich hätte es nur praktisch gefunden jede Datenzeile extra speichern zu können oder alle gemeinsam, aber da man dafür offensichtlich ein Workaround benötigt, werde ich nur den Alles Speichern-Button nehmen :)

              Du kennst phpMyAdmin? Wenn ja, soll das _in_etwa_ so werden, wie die dortige Ansicht der Datensätze einer DB-Tabelle (nur halt mit allen DB-Feldern in eigenen Formularfeldern)?

              Denke bitte daran, dass _alle_ ausgefüllten Felder eines Formulars übertragen werden. Also auch jene Felder, die du garnicht ändern willst. Du müsstest demnach im verarbeitenden Skript herausfinden, wo Änderungen stattgefunden haben um die entsprechenden DB-Felder zu aktualisieren (unnötig hoher Programmieraufwand). Oder du aktualisierst die ganze Tabelle (unnötig viel Traffic zum DB-Server).

              Da wäre die Herangehensweise von phpMyAdmin (auch programmiertechnisch) einfacher, aus der Liste aller Datensätze einen zum Bearbeiten/Löschen/etc. auszuwählen und nur an _diesem_einen_ das Gewünschte vorzunehmen. Für die Liste der Datensätze wäre nicht einmal ein Formular nötig, da man nur die Aktion und die ID des Datensatzes übergeben müsste, so man dies mit der Methode GET vollzieht (an dieser Stelle erheblich weniger HTML-Code).

              Tschö, Auge

              --
              Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
              (Victor Hugo)
              Veranstaltungsdatenbank Vdb 0.1
        2. Hallihallo!

          Soweit ich weiß, darf zwar ein Formular nicht weitere Formulare enthalten, wohl aber mehrere Submit-Buttons.
          Wird ein Formular abgeschickt, wird meines Wissens nach nur der Name und Wert des aktivierten Submit- Buttons mit abgeschickt. (Zumindest war das in meinen Tests so, zu sehen unter http://derdicki.dyndns.org/test/formulartest.php)

          Du könntest also einfach neben jeden einzeln zu bearbeitenden Datensatz einen eigenen Submit- Button setzen, und im auswertenden Skript den Namen bzw. Wert des benutzten Submits auswerten und entsprechend reagieren.

          Soweit ich weiß, wird bei Benutzung der Entertaste der erste Submit im Formular benutzt, also sollte der "Alle"- Knopf der erste im Formular sein. Das hindert Einen aber natürlich nicht daran, auch noch Einen ganz unten dranzuhängen ;)

          Ich hoffe, ich konnte Dir damit helfen...

          Viele liebe Grüße,
          Der Dicki

          1. Hi,

            Wird ein Formular abgeschickt, wird meines Wissens nach nur der Name und Wert des aktivierten Submit- Buttons mit abgeschickt.

            bei <input type="submit"> ja.

            Bei <button type="submit"> gibt es einen weitverbreiteten Browser, der alle mitschickt ...

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            Schreinerei Waechter
            O o ostern ...
            Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Hallihallo!

              Wird ein Formular abgeschickt, wird meines Wissens nach nur der Name und Wert des aktivierten Submit- Buttons mit abgeschickt.

              bei <input type="submit"> ja.

              Bei <button type="submit"> gibt es einen weitverbreiteten Browser, der alle mitschickt ...

              Wenn das so ist, nimmt man also einfach <input type="submit">, und Alles funktioniert wie gewünscht ;-)

              Viele liebe Grüße,
              Der Dicki

        3. Hallo!

          Erstmal danke für eure Antworten. Ich finde es aber unbequem, wenn man etwas bearbeitet und dann noch ein Häkchen ankreuzen muss, damit es gespeichert wird... aber mal sehen, zumindest weiß ich jetzt, dass es mit Unterforms nicht geht :-)

          Du kannst es so machen, dass standartmäßig alle Kästchen nicht gechecked sind und sobald ein Eingabefeld fokusiert wird, wird das Häkchen gechecked. So werden alle Änderungen übernommen, die auch geändert wurden.

          <form name="db">

          ...

          <!-- Datensatz #42 -->
          <input type="checkbox" name="box42" checked="" />
          <input type="text" value="Alter Wert" name="feld42" onFocus="document.db.box42.checked=checked" />

          ...
          </form>

          Was hälst du davon?

          1. Hi,

            [standartmäßig]

            was war das noch für eine Standart?
            Ach, du meintest "Standard"? Ja, sag's doch gleich ...

            alle Kästchen nicht gechecked sind und sobald ein Eingabefeld fokusiert wird, wird das Häkchen gechecked.

            Keine gute Idee.

            So werden alle Änderungen übernommen, die auch geändert wurden.

            Und nicht nur die.

            <input type="checkbox" name="box42" checked="" />
            <input type="text" value="Alter Wert" name="feld42" onFocus="document.db.box42.checked=checked" />

            Mal abgesehen davon, dass hier die Anführungszeichen beim "checked" fehlen, bewirkt das doch, dass sogar beim Vorbeinavigieren (Tab, Tab, Tab, ...) am Eingabefeld schon die Checkbox markiert wird. Dann doch besser mit onchange anstatt onfocus.
            Und wenn nun der Benutzer Javascript nicht zulässt? ;-)

            Übrigens: Die Art, wie du die Tags schließt (mit "/>"), lässt mich vermuten, dass du XHTML andeuten willst. Dann achte aber bitte auch auf die richtige Schreibweise der Attribute, hier speziell onfocus (ohne Großbuchstaben). In XHTML *müssen* alle Tags und Attribute klein geschrieben werden - und der zugehörige Javascript-Eventhandler heißt ja schließlich auch onfocus und nicht onFocus.

            So long,
             Martin

            --
            Alkohl ist ungesund,
            Rauchen ist schädlich,
            Sex ist unanständig
            - und die Erde ist eine flache Scheibe.