Ankündigung

Einklappen
Keine Ankündigung bisher.

Durch Checkboxen zwischen Eingabefeldern auswählen um Array zusammenzustellen?

Einklappen

Neue Werbung 2019

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

  • Durch Checkboxen zwischen Eingabefeldern auswählen um Array zusammenzustellen?

    Hallo,

    hat jemand eine Empfehlung für mich, wie ich es anstellen kann?

    Ich möchte gern ein Eingabeformular für Datenbankänderungen erstellen.

    Hierbei soll der jeweils bisherige Eintrag eines Eingabefeldes angezeigt werden, und darunter oder daneben - wo auch immer - soll die Möglichkeit gegeben sein, den vorhandenen Eintrag durch einen neuen Eintrag zu ersetzen.

    Wird eines der Eingabefelder beschrieben, also verändert, wäre es optimal, wenn die Checkbox des zugehörigen Eingabefeldes automatisch ausgewählt wird, und eine Checkbox die zum vorher eingegebenen Wert gehören könnte, abgewählt ist.

    Danach soll sich ein Array mit all den Eingaben aus den Feldern füllen neben welchen die Checkbox aktiviert ist.

    Das mit automatischer Checkbox-Aktivierung wäre freilich schon der Luxus.

    Kann hier mal einen kleinen Hinweis gebrauchen, wie ich das anfangen kann.

    Wie bekomme ich das möglicherweise hin, dass wenn das Eingabefeld nicht leer ist, die Checkbox umspringt, wie bekomme ich es möglicherweise hin, dass sich das Array aus den Feldern zusammensetzt, welche per Checkbox ausgewählt sind.

    Würde mich noch blind vorwärtstastend erstmal in der Richtung ausprobieren wollen, den Formularaufbau über Feldnamen, die man hochzählen kann und dazugehörige Checkboxen, die man ebenfalls hochzählen kann, zu gestalten, so dass über eine Schleife geprüft werden kann, ob die Felder nicht leer sind und dann entsprechend die Checkbox gesetzt werden kann, die zugehörig numeriert sein sollten.

    Nachher würde ich eben die Werte aus den vollen Feldern an eine php-Datei übergeben wollen, die dann den Array zusammenstellt.

    Ja, welche Schleife sollte ich hierfür am besten einsetzen?

    Danke schonmal im Voraus.


  • #2
    Zitat von UdoDirk Beitrag anzeigen
    Hierbei soll der jeweils bisherige Eintrag eines Eingabefeldes angezeigt werden, und darunter oder daneben - wo auch immer - soll die Möglichkeit gegeben sein, den vorhandenen Eintrag durch einen neuen Eintrag zu ersetzen.
    Und wofür brauchst du da jetzt die Checkboxen?

    Du könntest einfach den Datensatz in vorbelegten Formularfeldern ausgeben - die Werte, die der Nutzer ändern möchte, ändert er, die anderen lässt er, wie sie sind.

    Kommentar


    • #3
      Um eine Änderung festzustellen musst du den Originalwert vorhalten.

      Code:
      <script type="text/javascript">
        function checkChanges(datasetIndex) {
          var checkbox = document.getElementsByName("dataset[" + datasetIndex + "][checked]")[0];
          var original = document.getElementsByName("dataset[" + datasetIndex + "][original]")[0];
          var update = document.getElementsByName("dataset[" + datasetIndex + "][update]")[0];
          checkbox.checked = (original.value != update.value);
        }
      </script>
      
      <input type="checkbox" name="dataset[0][checked]" value="1" />
      <input type="hidden" name="dataset[0][original]" value="Petrasilie" />
      <input type="text" name="dataset[0][update]" value="Petrasilie" onkeyup="checkChanges(0)" />
      
      <input type="checkbox" name="dataset[1][checked]" value="1" />
      <input type="hidden" name="dataset[1][original]" value="Alf" />
      <input type="text" name="dataset[1][update]" value="Alf" onkeyup="checkChanges(1)" />
      "Mein Name ist Lohse, ich kaufe hier ein."

      Kommentar


      • #4
        Zitat von ChrisB Beitrag anzeigen
        Und wofür brauchst du da jetzt die Checkboxen?

        Du könntest einfach den Datensatz in vorbelegten Formularfeldern ausgeben - die Werte, die der Nutzer ändern möchte, ändert er, die anderen lässt er, wie sie sind.
        Danke, auch wieder wahr - spart mir eine ewig lange php-Datei, denn was ich bisher als Lösung gehabt hätte, da wäre jedes einzelne Änderungsfeld geprüft worden, ob leer oder nicht und dann hätte ich einen ganzen Sack voll "if" benötigt - wo man sich gerade bei diesen Dingern so schnell einen Fehler einfangen kann, wenn man mal ein Satzzeichen in der Eile falsch setzt.

        Kommentar


        • #5
          Warum einen ganzen Sack voll if's? Du kannst ja Formularwerte auch als Array übergeben (eckige Klammern im Feldnamen).
          "Mein Name ist Lohse, ich kaufe hier ein."

          Kommentar


          • #6
            Zitat von Chriz Beitrag anzeigen
            Um eine Änderung festzustellen musst du den Originalwert vorhalten.

            Code:
            <script type="text/javascript">
              function checkChanges(datasetIndex) {
                var checkbox = document.getElementsByName("dataset[" + datasetIndex + "][checked]")[0];
                var original = document.getElementsByName("dataset[" + datasetIndex + "][original]")[0];
                var update = document.getElementsByName("dataset[" + datasetIndex + "][update]")[0];
                checkbox.checked = (original.value != update.value);
              }
            </script>
            
            <input type="checkbox" name="dataset[0][checked]" value="1" />
            <input type="hidden" name="dataset[0][original]" value="Petrasilie" />
            <input type="text" name="dataset[0][update]" value="Petrasilie" onkeyup="checkChanges(0)" />
            
            <input type="checkbox" name="dataset[1][checked]" value="1" />
            <input type="hidden" name="dataset[1][original]" value="Alf" />
            <input type="text" name="dataset[1][update]" value="Alf" onkeyup="checkChanges(1)" />
            Danke, Chriz, - das werde ich mir erstmal blind kopieren und mir die Befehlsfolge anschauen - möchte gern wissen, was das im einzelnen bewirkt - eines Tages könnte einer kommen und mich danach fragen - und dann steh ich da und kann es nicht erklären, das wäre peinlich.

            Kommentar


            • #7
              Schick das mal ab (<form> und Submit-Button noch einbauen!) und lass dir anschließend in PHP mal mit var_dump($_REQUEST) ausgeben, wie die Formulardaten jetzt vorliegen.

              Eigentlich musst du dann nurnoch über $_REQUEST["dataset"] iterieren (foreach-Schleife) und im Durchlauf das SQL-UPDATE fahren.

              möchte gern wissen, was das im einzelnen bewirkt
              Löblich
              "Mein Name ist Lohse, ich kaufe hier ein."

              Kommentar


              • #8
                Zitat von Chriz Beitrag anzeigen
                Warum einen ganzen Sack voll if's? Du kannst ja Formularwerte auch als Array übergeben (eckige Klammern im Feldnamen).
                Ok, und wieder Danke - schätze habe heute abend noch ein wenig Arbeit vor mir - jetzt muss ich mir ein Formular bauen, das gleichzeitig anzeigt und das wiederum gleichzeitig ausgelesen werden kann - werde ich wohl für die Eingabefelder in php

                PHP-Code:
                echo "<input>" "</input>" 
                verwenden - das gibt mir schonmal das Eingabefeld - und dann setze ich noch eine Basisoption, die ich aus den bisherigen Daten ziehe.

                Das zum Schluss alles wieder über POST übertragen, und dann das Array zusammenstellen und in die Datei schreiben aus der ich zuvor den alten Datensatz gelöscht habe - freilich unter Verwendung von flock, damit mir da nix schiefgehen kann - schätze mal, wenn ich das gesamte Datenbankprojekt fertig habe, werde ich die einzelnen Dateien hier nochmal reinstellen, damit man mal drüberschauen kann - bin nämlich sicher, dass da einiges einfacher zu lösen sein wird.

                Kommentar


                • #9
                  Deinen Codeschnipsel verstehe ich nicht so ganz, </input> gibt es nicht! Aber hau rein, wir sind hier falls es Fragen gibt
                  "Mein Name ist Lohse, ich kaufe hier ein."

                  Kommentar


                  • #10
                    Zitat von Chriz Beitrag anzeigen
                    Deinen Codeschnipsel verstehe ich nicht so ganz, </input> gibt es nicht! Aber hau rein, wir sind hier falls es Fragen gibt
                    Uups, mein Fehler - <Option> muss es heißen.

                    Kommentar

                    Lädt...
                    X