Help with saving data from forms to a database and display it on dashboard

Hello everyone, i want to create a flow where a form is filled out with employee names, shifts (selected from a dropdown), and some individual inputs. These should then be sent/saved to a database when the submit button is pressed and subsequently displayed in a table on the dashboard. I'm having a bit of trouble logically connecting the various nodes so that all data is forwarded to the database. Can someone please help me with this? Unfortunately, I have no prior experience with Node-RED and databases.
Here is what i got so far:

[
    {
        "id": "5b0a3e478fc4927b",
        "type": "ui-dropdown",
        "z": "e23b1ec257b976f3",
        "group": "0dab66fce8695736",
        "name": "employee",
        "label": "Mitarbeiter",
        "tooltip": "",
        "order": 1,
        "width": 0,
        "height": 0,
        "passthru": false,
        "multiple": false,
        "options": [
            {
                "label": "",
                "value": "Abdullah Terzi",
                "type": "str"
            },
            {
                "label": "",
                "value": "Alexander Baumtrok",
                "type": "str"
            },
            {
                "label": "",
                "value": "Alexander Brozmann",
                "type": "str"
            },
            {
                "label": "",
                "value": "Ali Celik",
                "type": "str"
            },
            {
                "label": "",
                "value": "Andreas Lorenz",
                "type": "str"
            },
            {
                "label": "",
                "value": "Arman Vakili",
                "type": "str"
            },
            {
                "label": "",
                "value": "Baturay Sener",
                "type": "str"
            },
            {
                "label": "",
                "value": "Chi-Khang Nguyen",
                "type": "str"
            },
            {
                "label": "",
                "value": "Daniel Wiss",
                "type": "str"
            },
            {
                "label": "",
                "value": "Dimitri Hermann",
                "type": "str"
            },
            {
                "label": "",
                "value": "Dominik Krklec",
                "type": "str"
            },
            {
                "label": "",
                "value": "Eduard Ditz",
                "type": "str"
            },
            {
                "label": "",
                "value": "Ernst Fil",
                "type": "str"
            },
            {
                "label": "",
                "value": "Florian Heiler",
                "type": "str"
            },
            {
                "label": "",
                "value": "Haris Keskinovic",
                "type": "str"
            },
            {
                "label": "",
                "value": "Harrie Jung",
                "type": "str"
            },
            {
                "label": "",
                "value": "Igor Kappes",
                "type": "str"
            },
            {
                "label": "",
                "value": "Jewgeni Kultenko",
                "type": "str"
            },
            {
                "label": "",
                "value": "Johannes Kammerzell",
                "type": "str"
            },
            {
                "label": "",
                "value": "Klaus Bächle",
                "type": "str"
            },
            {
                "label": "",
                "value": "Matthias Mompas",
                "type": "str"
            },
            {
                "label": "",
                "value": "Metin Tosun",
                "type": "str"
            },
            {
                "label": "",
                "value": "Mehmet Incili",
                "type": "str"
            },
            {
                "label": "",
                "value": "Michael Sanders",
                "type": "str"
            },
            {
                "label": "",
                "value": "Michael Woschek",
                "type": "str"
            },
            {
                "label": "",
                "value": "Negjdet Berisha",
                "type": "str"
            },
            {
                "label": "",
                "value": "Nicolai Fedotow",
                "type": "str"
            },
            {
                "label": "",
                "value": "Pavol Bucko",
                "type": "str"
            },
            {
                "label": "",
                "value": "Samuel Laval",
                "type": "str"
            },
            {
                "label": "",
                "value": "Stefan Leonte",
                "type": "str"
            },
            {
                "label": "",
                "value": "Sven Neunzig",
                "type": "str"
            },
            {
                "label": "",
                "value": "Thomas Bauer",
                "type": "str"
            }
        ],
        "payload": "",
        "topic": "topic",
        "topicType": "msg",
        "className": "",
        "x": 240,
        "y": 840,
        "wires": [
            [
                "1e15d042bdcffce9"
            ]
        ]
    },
    {
        "id": "6b31c0b734262b23",
        "type": "ui-dropdown",
        "z": "e23b1ec257b976f3",
        "group": "0dab66fce8695736",
        "name": "machine",
        "label": "Maschine:",
        "tooltip": "",
        "order": 2,
        "width": 0,
        "height": 0,
        "passthru": false,
        "multiple": false,
        "options": [
            {
                "label": "",
                "value": "FEN21",
                "type": "str"
            },
            {
                "label": "",
                "value": "FEN22",
                "type": "str"
            },
            {
                "label": "",
                "value": "FEN23",
                "type": "str"
            }
        ],
        "payload": "",
        "topic": "topic",
        "topicType": "msg",
        "className": "",
        "x": 240,
        "y": 920,
        "wires": [
            [
                "16035ce91cc410e8"
            ]
        ]
    },
    {
        "id": "b3de3de7dce8262f",
        "type": "ui-dropdown",
        "z": "e23b1ec257b976f3",
        "group": "0dab66fce8695736",
        "name": "shift",
        "label": "Schicht:",
        "tooltip": "",
        "order": 3,
        "width": 0,
        "height": 0,
        "passthru": false,
        "multiple": false,
        "options": [
            {
                "label": "",
                "value": "FrĂĽhschicht",
                "type": "str"
            },
            {
                "label": "",
                "value": "Spätschicht",
                "type": "str"
            },
            {
                "label": "",
                "value": "Nachtschicht",
                "type": "str"
            },
            {
                "label": "",
                "value": "Tagschicht",
                "type": "str"
            }
        ],
        "payload": "",
        "topic": "topic",
        "topicType": "msg",
        "className": "",
        "x": 230,
        "y": 1000,
        "wires": [
            [
                "57be5b16b1cae855"
            ]
        ]
    },
    {
        "id": "5b283cf0a88562d6",
        "type": "ui-form",
        "z": "e23b1ec257b976f3",
        "name": "fendaten",
        "group": "0dab66fce8695736",
        "label": "",
        "order": 4,
        "width": 0,
        "height": 0,
        "options": [
            {
                "label": "FA",
                "key": "fa_number",
                "type": "text",
                "required": true,
                "rows": null
            },
            {
                "label": "Charge-Rohwickel",
                "key": "cal_chargenr",
                "type": "text",
                "required": false,
                "rows": null
            },
            {
                "label": "Charge-Fertigwickel",
                "key": "notch_chargenr",
                "type": "text",
                "required": false,
                "rows": null
            },
            {
                "label": "Gut",
                "key": "ok_amount",
                "type": "number",
                "required": false,
                "rows": null
            },
            {
                "label": "Ausschuss",
                "key": "nok_amount",
                "type": "number",
                "required": false,
                "rows": null
            },
            {
                "label": "Gebucht",
                "key": "booked",
                "type": "checkbox",
                "required": false,
                "rows": null
            }
        ],
        "formValue": {
            "fa_number": "",
            "cal_chargenr": "",
            "notch_chargenr": "",
            "ok_amount": "",
            "nok_amount": "",
            "booked": false
        },
        "payload": "",
        "submit": "Absenden",
        "cancel": "Abbrechen",
        "resetOnSubmit": true,
        "topic": "topic",
        "topicType": "msg",
        "splitLayout": "",
        "className": "",
        "x": 240,
        "y": 1060,
        "wires": [
            [
                "ab1e692ada68cf32"
            ]
        ]
    },
    {
        "id": "fcd507ca04f15f94",
        "type": "ui-table",
        "z": "e23b1ec257b976f3",
        "group": "eb5e8d5cc746c36b",
        "name": "datenanzeige",
        "order": 2,
        "width": 0,
        "height": 0,
        "maxrows": "",
        "autocols": true,
        "showSearch": false,
        "selectionType": "none",
        "columns": [],
        "x": 1170,
        "y": 1100,
        "wires": [
            []
        ]
    },
    {
        "id": "1e15d042bdcffce9",
        "type": "change",
        "z": "e23b1ec257b976f3",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "mitarbeiter",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 610,
        "y": 840,
        "wires": [
            []
        ]
    },
    {
        "id": "16035ce91cc410e8",
        "type": "change",
        "z": "e23b1ec257b976f3",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "fen",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 600,
        "y": 920,
        "wires": [
            []
        ]
    },
    {
        "id": "57be5b16b1cae855",
        "type": "change",
        "z": "e23b1ec257b976f3",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "schicht",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 600,
        "y": 1000,
        "wires": [
            []
        ]
    },
    {
        "id": "ab1e692ada68cf32",
        "type": "change",
        "z": "e23b1ec257b976f3",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "fendaten",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 590,
        "y": 1060,
        "wires": [
            [
                "ae6a44ac6e2a0d98"
            ]
        ]
    },
    {
        "id": "ae6a44ac6e2a0d98",
        "type": "function",
        "z": "e23b1ec257b976f3",
        "name": "Combine Data",
        "func": "var mitarbeiter = flow.get('mitarbeiter') || '';\nvar fen = flow.get('fen') || '';\nvar schicht = flow.get('schicht') || '';\nvar fendaten = flow.get('fendaten') || {};\n\nvar combinedData = {\n    mitarbeiter: mitarbeiter,\n    fen: fen,\n    schicht: schicht,\n    fa: fendaten.fa,\n    'Charge-Rohwickel': fendaten['Charge-Rohwickel'],\n    'Charge-Fertigwickel': fendaten['Charge-Fertigwickel'],\n    Gut: fendaten.Gut,\n    Ausschuss: fendaten.Ausschuss,\n    Gebucht: fendaten.Gebucht\n};\n\nmsg.payload = [combinedData]; // set payload to an array of objects\nreturn msg;",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 860,
        "y": 1060,
        "wires": [
            [
                "fcd507ca04f15f94",
                "c51b0dcfac9b5408"
            ]
        ]
    },
    {
        "id": "c51b0dcfac9b5408",
        "type": "sqlite",
        "z": "e23b1ec257b976f3",
        "mydb": "DATABASE_CONFIG",
        "sqlquery": "msg.topic",
        "sql": "",
        "name": "",
        "x": 910,
        "y": 1140,
        "wires": [
            [
                "fcd507ca04f15f94"
            ]
        ]
    },
    {
        "id": "0dab66fce8695736",
        "type": "ui-group",
        "name": "fen20",
        "page": "e6d4daf71da027b7",
        "width": "6",
        "height": "1",
        "order": 1,
        "showTitle": true,
        "className": "",
        "visible": "true",
        "disabled": "false"
    },
    {
        "id": "eb5e8d5cc746c36b",
        "type": "ui-group",
        "name": "fendaten",
        "page": "e6d4daf71da027b7",
        "width": "6",
        "height": "1",
        "order": 2,
        "showTitle": true,
        "className": "",
        "visible": "true",
        "disabled": "false"
    },
    {
        "id": "DATABASE_CONFIG",
        "type": "sqlitedb",
        "db": "test.db"
    },
    {
        "id": "e6d4daf71da027b7",
        "type": "ui-page",
        "name": "fen20",
        "ui": "8ced774a3726a8f8",
        "path": "/fentest",
        "icon": "home",
        "layout": "grid",
        "theme": "49f869ea61eecbd4",
        "order": 4,
        "className": "",
        "visible": "true",
        "disabled": "false"
    },
    {
        "id": "8ced774a3726a8f8",
        "type": "ui-base",
        "name": "UI Name",
        "path": "/dashboard",
        "includeClientData": true,
        "acceptsClientConfig": [
            "ui-notification",
            "ui-control"
        ],
        "showPathInSidebar": false,
        "navigationStyle": "default"
    },
    {
        "id": "49f869ea61eecbd4",
        "type": "ui-theme",
        "name": "lc",
        "colors": {
            "surface": "#ffffff",
            "primary": "#00d10e",
            "bgPage": "#eeeeee",
            "groupBg": "#ffffff",
            "groupOutline": "#cccccc"
        },
        "sizes": {
            "pagePadding": "12px",
            "groupGap": "12px",
            "groupBorderRadius": "4px",
            "widgetGap": "12px"
        }
    }
]

Maybe this example will help you

[{"id":"5b0a3e478fc4927b","type":"ui-dropdown","z":"d1395164b4eec73e","group":"0dab66fce8695736","name":"employee","label":"Mitarbeiter","tooltip":"","order":1,"width":0,"height":0,"passthru":false,"multiple":false,"chips":false,"clearable":false,"options":[{"label":"","value":"Abdullah Terzi","type":"str"},{"label":"","value":"Alexander Baumtrok","type":"str"},{"label":"","value":"Alexander Brozmann","type":"str"},{"label":"","value":"Ali Celik","type":"str"},{"label":"","value":"Andreas Lorenz","type":"str"},{"label":"","value":"Arman Vakili","type":"str"},{"label":"","value":"Baturay Sener","type":"str"},{"label":"","value":"Chi-Khang Nguyen","type":"str"},{"label":"","value":"Daniel Wiss","type":"str"},{"label":"","value":"Dimitri Hermann","type":"str"},{"label":"","value":"Dominik Krklec","type":"str"},{"label":"","value":"Eduard Ditz","type":"str"},{"label":"","value":"Ernst Fil","type":"str"},{"label":"","value":"Florian Heiler","type":"str"},{"label":"","value":"Haris Keskinovic","type":"str"},{"label":"","value":"Harrie Jung","type":"str"},{"label":"","value":"Igor Kappes","type":"str"},{"label":"","value":"Jewgeni Kultenko","type":"str"},{"label":"","value":"Johannes Kammerzell","type":"str"},{"label":"","value":"Klaus Bächle","type":"str"},{"label":"","value":"Matthias Mompas","type":"str"},{"label":"","value":"Metin Tosun","type":"str"},{"label":"","value":"Mehmet Incili","type":"str"},{"label":"","value":"Michael Sanders","type":"str"},{"label":"","value":"Michael Woschek","type":"str"},{"label":"","value":"Negjdet Berisha","type":"str"},{"label":"","value":"Nicolai Fedotow","type":"str"},{"label":"","value":"Pavol Bucko","type":"str"},{"label":"","value":"Samuel Laval","type":"str"},{"label":"","value":"Stefan Leonte","type":"str"},{"label":"","value":"Sven Neunzig","type":"str"},{"label":"","value":"Thomas Bauer","type":"str"}],"payload":"","topic":"employee","topicType":"str","className":"","x":140,"y":100,"wires":[["6d532a602dd161c9"]]},{"id":"6d532a602dd161c9","type":"change","z":"d1395164b4eec73e","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload[msg.topic]","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":140,"wires":[["68fd80581b929859"]]},{"id":"6b31c0b734262b23","type":"ui-dropdown","z":"d1395164b4eec73e","group":"0dab66fce8695736","name":"machine","label":"Maschine:","tooltip":"","order":2,"width":0,"height":0,"passthru":true,"multiple":false,"chips":false,"clearable":false,"options":[{"label":"","value":"FEN21","type":"str"},{"label":"","value":"FEN22","type":"str"},{"label":"","value":"FEN23","type":"str"}],"payload":"","topic":"machine","topicType":"str","className":"","x":140,"y":140,"wires":[["6d532a602dd161c9"]]},{"id":"b3de3de7dce8262f","type":"ui-dropdown","z":"d1395164b4eec73e","group":"0dab66fce8695736","name":"shift","label":"Schicht:","tooltip":"","order":3,"width":0,"height":0,"passthru":false,"multiple":false,"chips":false,"clearable":false,"options":[{"label":"","value":"Frühschicht","type":"str"},{"label":"","value":"Spätschicht","type":"str"},{"label":"","value":"Nachtschicht","type":"str"},{"label":"","value":"Tagschicht","type":"str"}],"payload":"","topic":"shift","topicType":"str","className":"","x":150,"y":180,"wires":[["6d532a602dd161c9"]]},{"id":"68fd80581b929859","type":"join","z":"d1395164b4eec73e","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"","count":"9","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":510,"y":140,"wires":[["7371e3605a3e7d82"]]},{"id":"5b283cf0a88562d6","type":"ui-form","z":"d1395164b4eec73e","name":"fendaten","group":"0dab66fce8695736","label":"","order":4,"width":0,"height":0,"options":[{"label":"FA","key":"fa_number","type":"text","required":true,"rows":null},{"label":"Charge-Rohwickel","key":"cal_chargenr","type":"text","required":false,"rows":null},{"label":"Charge-Fertigwickel","key":"notch_chargenr","type":"text","required":false,"rows":null},{"label":"Gut","key":"ok_amount","type":"number","required":false,"rows":null},{"label":"Ausschuss","key":"nok_amount","type":"number","required":false,"rows":null},{"label":"Gebucht","key":"booked","type":"checkbox","required":false,"rows":null}],"formValue":{"fa_number":"","cal_chargenr":"","notch_chargenr":"","ok_amount":"","nok_amount":"","booked":false},"payload":"","submit":"Absenden","cancel":"Abbrechen","resetOnSubmit":false,"topic":"fendaten","topicType":"str","splitLayout":"","className":"","x":140,"y":220,"wires":[["68fd80581b929859"]]},{"id":"7371e3605a3e7d82","type":"switch","z":"d1395164b4eec73e","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"fendaten","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":650,"y":140,"wires":[["6cb7b9bfd039439d"]]},{"id":"6cb7b9bfd039439d","type":"change","z":"d1395164b4eec73e","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload[0]","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":140,"wires":[["fcd507ca04f15f94","4194386c5af0ba4f"]]},{"id":"fcd507ca04f15f94","type":"ui-table","z":"d1395164b4eec73e","group":"eb5e8d5cc746c36b","name":"datenanzeige","order":1,"width":0,"height":0,"maxrows":"10","autocols":true,"showSearch":false,"selectionType":"checkbox","columns":[],"x":1020,"y":160,"wires":[[]]},{"id":"4194386c5af0ba4f","type":"debug","z":"d1395164b4eec73e","name":"debug 2561","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":830,"y":260,"wires":[]},{"id":"0dab66fce8695736","type":"ui-group","name":"fen20","page":"e6d4daf71da027b7","width":"6","height":"1","order":1,"showTitle":true,"className":"","visible":"true","disabled":"false"},{"id":"eb5e8d5cc746c36b","type":"ui-group","name":"fendaten","page":"e6d4daf71da027b7","width":"6","height":"1","order":2,"showTitle":true,"className":"","visible":"true","disabled":"false"},{"id":"e6d4daf71da027b7","type":"ui-page","name":"fen20","ui":"1805777f90e92057","path":"/fentest","icon":"home","layout":"grid","theme":"49f869ea61eecbd4","order":3,"className":"","visible":"true","disabled":"false"},{"id":"1805777f90e92057","type":"ui-base","name":"dashboard","path":"/dashboard","includeClientData":true,"acceptsClientConfig":["ui-notification","ui-control"],"showPathInSidebar":false},{"id":"49f869ea61eecbd4","type":"ui-theme","name":"lc","colors":{"surface":"#ffffff","primary":"#00d10e","bgPage":"#eeeeee","groupBg":"#ffffff","groupOutline":"#cccccc"},"sizes":{"pagePadding":"12px","groupGap":"12px","groupBorderRadius":"4px","widgetGap":"12px"}}]
1 Like

Didn`t expect it so quick, that helped me a lot thanks :slight_smile:

Welcome to the Node-RED Forum!!

2 Likes

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.