Loïc : modulare Liste zum erweitern

Guten Tag zusammen Nun, jetzt wende ich mich zum ersten Mal an das Forum. Und zwar habe ich ein Problem; ich möchte ein Offertengenerator programmieren. Dort sollte es eine Tabelle/ Liste haben, die für den Benutzer einfach per Dropdown Menü unendlich erweiterbar ist. Man sollte verschiedene Modifikationen des Produktes sowie Mengen einstellen können. Anschliessend sollte einen Datenbankeintrag mit den Informationen erstellt werden. (also die Informationen an ein via GET/ Post an eine php-Datei weitergereicht werden Ich sass jetz wirklich lange vor diesem Ding und komme nicht weiter. Wie würdet ihr dieses Problem lösen? Mit besten Grüssen Loïc

akzeptierte Antworten

  1. Liebe(r) Loïc,

    ich möchte ein Offertengenerator programmieren.

    OK. Aber es heißt nicht "das" Generator, sondern "der" Generator. Du möchtest einen Offertengenerator programmieren.

    Soviel Deutsch muss sein.

    Dort sollte [...] Ich sass jetz wirklich lange vor diesem Ding und komme nicht weiter.

    Was hast Du denn schon? Zeig' doch mal her! Wo genau kommst Du nicht weiter?

    Wie würdet ihr dieses Problem lösen?

    Mit jeder Menge Code.

    Liebe Grüße,

    Felix Riesterer.

    1. Hallo Felix

      Danke für deine Antwort.

      Um vor ab bei deinem Zynismus weiterzumachen: Loïc ist ein männlicher Name. So viel Allgemeinbildung muss sein.

      Spass bei Seite. Was ich kann? Ich habe einen Generator mit den klassischen Felder (Häcken, Dropdown, auswählen) hingebracht. Es geht also nicht um das berrechnen, den Datenbankeintrag, ein PDF generieren oder ein automatisches Mail mit einem Anhang zu versenden.

      Wo ich genau nicht weiterkomme? Also bei der unendlichen Liste:

      <ul id="produkte">
      <li>produkt xz </li>
      <li>produkt we </li>
      <li>produkt54 </li>
      </ul>
      <script language="javascript" type="text/javascript">
      var obj = document.getElementById('produkte');
      obj.onclick = function(e) {
      	if(!e) e = window.event;
      	var el = e.target || e.srcElement;
      	var neu = document.createElement('li');
      	neu.innerHTML = 'dummy';
      	el.parentNode.insertBefore(neu, el);
      }
      </script>
      

      So nun sollte anstelle von "produkte" ein Text hinzugefügt werden, den man aus verschiedenen Dropdown Menüs zusammenstellen kann. Und das gannze sollte ja ein Formular sein, um die Daten an eine php-Datei weiterzugeben. Hier komme ich nicht weiter.

      Wie würdet ihr hier vorgehen?

      Mit besten Grüssen

      Loïc

      1. Wie würdet ihr hier vorgehen?

        In schwierigen Fällen konstruiere ich mir ein Example in statischem HTML - um zu sehen, was ich wo einfügen muss.

        Im zweiten Schritt schaue ich dann, wie ich das mache.

        Das das einigen Aufwand machen wird ist klar, das erfordert aber - ab dem stehenden Plan - nur Arbeit. Die Daten der Offerte selbst würde ich übrigens jede Zeile als Objekt, die Objekte in einem Array, dieses dann in einem Cookie speichern. Das muss ja die Sitzung nicht überleben. Wird aber automatisch gesendet.

        • Auch die Struktur des Cookies würde ich mir notieren.

        Ändern würde ich nur das Array mit den Daten, dann das Cookie neu setzen. Die sichtbare Liste (eigentlich eine Tabelle) würde ich nach jeder Änderung am Array (der eine Änderung des Cookies nachfolgen muss) aus eben diesem Array vollständig neu generieren und dann ins DOM hängen.

        <script language="javascript" type="text/javascript">

        Das ist sowas von von "1997". Ich würde an Deiner Stelle nachsehen, ob das im Jahr 2018 nicht moderner geht: <script> reicht nämlich völlig aus. Möglicherweise solltest Du also modernere Literatur zu Rate ziehen und vor allem: mit kleineren Übungen anfangen.

        1. @@Regina Schaukrug

          <script language="javascript" type="text/javascript">

          Das ist sowas von von "1997".

          Das ist nicht (nur) aus einer anderen Zeit, sondern aus einer anderen Welt. In unserer Welt war language="javascript" noch nie zu was gut.

          LLAP 🖖

          --
          „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
          1. In unserer Welt war language="javascript" noch nie zu was gut.

            Das stimmt (technisch gesehen). Dennoch wurde es aber an allen Ecken empfohlen, weil man irgend wann mal dachte "Hm. Vielleicht kommt ja browserseitiges Perl oder irgendwas anderes. Statt den Interpreter in einer Shebang notieren wir also schon im einleitenden Script-Tag die Sprache."

            Dann gab es durchaus auch den Gedanke, serverseitiges Skripting ähnlich wie in PHP auch für andere Sprache einzusetzen. Methode wie vorstehend.

            Das kann auch früher gewesen sein...

            1. @@Regina Schaukrug

              Vielleicht kommt ja browserseitiges Perl

              Sag ich doch: Das P in Perl steht für Parallelwelt. 😜

              LLAP 🖖

              --
              „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
              1. Parallelwelt

                Parallel habe ich in den vergangenen 2 Tagen meinen Desktop mit XUbuntu 18.04 völlig neu aufgesetzt, ein "neues" Laptop (W530, 16GB, Intel(R) Core(TM) i7-3740QM "vPro", 1TB SSD) dito.

                Alle Daten gerettet, viele Gigabytes aussortiert, Mails und Faxe archiviert (Ich habe immerhin noch ein Backup mit allem Mist), eine Backup-Platte ausgemustert, alle Daten verschlüsselt. Und bin grad dabei, mein Backup-Script anzupassen und neu aufzusetzen.

                Davor habe ich die Seminar-Lappys auch alle auf XUbuntu 18.04 umgestellt.

                Mann, Mann, Mann.

                Mal 'ne Frage in die Runde: VM-Ware oder KVM/Quemu + virtmanager + virt-googies + ... ? Was nehm ich nur?

                1. Hallo Regina,

                  Mal 'ne Frage in die Runde: VM-Ware oder KVM/Quemu + virtmanager + virt-googies + ... ? Was nehm ich nur?

                  Wenn du nicht vor hast in den Enterprise-Markt einzusteigen und dafür Erfahrungen zu sammeln, würde ich auf KVM setzen. Das hat eine große Verbreitung (viele große Cloud-Provider nutzen es) und es ist, im Gegensatz zu VMWare, FLOS-Software.

                  LG,
                  CK

                  1. würde ich auf KVM setzen.

                    Da hast Du mir jetzt was aufgehalst…

                    Der virt-manager erzählt mir, dass er WLAN nicht bridgen kann. Naja. Geht sowieso nicht gut in den Hotelnetzwerken, in denen ich die Seminare zu halten habe.

                    Ich also ab in den Markt, mir (auch als Spielzeug) einen „managed switch“ mit 8 Ports (reichen) besorgt (TL-SG 108E; 40 Euro).

                    Dann auf meinem Laptop:

                    • isc-dhcp-server installiert.
                    • Firewallregeln für Routing mit NAT gebaut.
                    • dnsproxy installiert.

                    (All das zum ersten Mal.)

                    • Eine handvoll Skripte geschrieben.

                    Geht aber jetzt. Ich kann binnen ein paar Sekunden ein Netzwerk mit dem Smartphone oder im WLAN aufziehen bei dem die Teilnehmerrechner am Draht hängen, von der Verbindung profitieren ... und dazu nur eingeschaltet werden müssen.

                    Morgen denke ich dann über squid, apt-cacher und dergleichen nach...

                    --

                    geschrieben im neuen Subnet

              2. Das P in Perl steht für Parallelwelt.

                Also in den späten 80ern und ganz frühen 90ern des letzten Jahrhunderts des letzten Jahrtausends war Perl was ganz besonderes.

                Leider merkt man der Sprache bis heute an, dass diese von einem Linguisten als Synthese aus C, awk, den Unix-Befehlen und anderen Einflüssen erschaffen wurde. Bei manchen der Konstrukte fragt man sich ob diese "anderen Einflüsse" chemischer Natur waren…

                Wegduck, weil PL mich gleich mit Ninja, nein: Sowjet-sternen bewirft.

                1. Hi,

                  Also in den späten 80ern und ganz frühen 90ern des letzten Jahrhunderts des letzten Jahrtausends war Perl was ganz besonderes.

                  Auf jeden Fall! Bis zu meiner Rente habe ich damit noch richtig Geld verdient 😉

                  MfG

          2. Hallo Gunnar,

            Vor 12 Jahren schon

            Rolf

            --
            sumpsi - posui - clusi
      2. Lieber Loïc,

        Loïc ist ein männlicher Name.

        vielen Dank! Wieder etwas gelernt.

        Wo ich genau nicht weiterkomme? Also bei der unendlichen Liste:

        Aha. Meine Vorgehensweise bei soetwas ist, dass ich in der letzten Zeile der Liste ein Element mit Formularfeldern einbaue, die alle einen neuen Datensatz erzeugen können. Mit dem Versenden des Formulars wird dieser Datensatz dann tatsächlich in der DB angelegt, die Liste mit dem neuen Datensatz als "offizieller" Listenpunkt ausgegeben und danach wieder das Formular mit den Eingabemöglichkeiten für einen (weiteren) neuen Datensatz.

        Das ist die serverseitige Komponente. Das Minimum.

        <script language="javascript" type="text/javascript">
        var obj = document.getElementById('produkte');
        obj.onclick = function(e) {
        	if(!e) e = window.event;
        	var el = e.target || e.srcElement;
        	var neu = document.createElement('li');
        	neu.innerHTML = 'dummy';
        	el.parentNode.insertBefore(neu, el);
        }
        </script>`
        

        Dein Thread hatte kein JavaScript-Tag, sondern nur Datenbank, HTML und PHP. Dass Dein Problem eigentlich bei JavaScript liegt, war nicht ersichtlich. OK. Also eine JavaScript-Aufgabe. Nach meiner Vorgehensweise lediglich ein Aufsatz auf das zuvor beschriebene rein serverseitige Vorgehen.

        JavaScript kann auch Anfragen an den Server senden. Dazu benutzt man in der Regel asynchrone Requests, die gemeinhin auch als Ajax bezeichnet werden. Mithilfe eines solchen Requests kannst Du nun das Absenden des Formulars nachbilden, indem Du das Absenden des Formulars mittels JavaScript abfängst, um dann die Serverantwort daraufhin zu parsen, wie die Liste momentan auszusehen hätte, um sie dann im Dokument anzupassen.

        Entweder Du ersetzt die vorhandenen Listenpunkte komplett mit dem Inhalt der Serverantwort, oder Du prüfst lediglich, ob der neue Punkt korrekt übernommen wurde, um nur ihn in der Liste vor dem Formular einzufügen.

        Was Du nicht angemerkt hast, ist die Frage, ob vorhandene Listenpunkte auch wieder entfernt werden können sollen. In einem solchen Fall würde ich an das Ende eines jeden Listenpunktes einen passenden Lösch-Button hinzufügen, dessen Name auf der Serverseite eindeutig beschreibt, welcher Datensatz zu löschen ist. Auch das kann man mit JavaScript abfangen und via Ajax auswerten.

        Liebe Grüße,

        Felix Riesterer.

        1. Lieber Felix,

          wieder einmal ein Gebastel...

          Liebe Grüße,

          Felix Riesterer.

      3. hi,

        Und das gannze sollte ja ein Formular sein, um die Daten an eine php-Datei weiterzugeben. Hier komme ich nicht weiter.

        Nun, <ul>, <li> sind da völlig ungeeignet. Formularelemente deren Inhalte per Formular submittet werden können, sind Felder wie <input>, <select>, <option> und <textarea>.

        Freilich kannst Du auch solche Formularfelder über modulare Dialoge, die per JS hervorgerufen werden, mit Eingabedaten befüllen. Das wäre meine Idee hierzu. Denkbar wäre auch ein ganzes Formular für einen modularen Dialog an sich -- Eben so daß der Anwender sehen kann welche Felder mit Daten zu befüllen sind.

        MfG