Checkbox soll bestimmten wert in datenbank übertragen, wenn ein bestimmter dropdownwert gewählt wurde

Braman

Mitglied
Hallo Forum!

Ich erstelle gerade mit PHP eine seite, in welcher Bestellungen abgespeichert werden, leider stoße ich nun grade auf ein Problem, bei welchem ich leider nicht weiter komme und auch nicht wirklich was passendes finde :censored:.
Was ich überhaupt machen möchte:
Ich habe eine Dropdown liste erstellt, welche die Daten von einer Tabelle in meiner Datenbank als Auswahl anzeigen lässt, der Code dafür sieht so aus:

PHP:
<div class="form-group">
                                            <label for="formGroupExampleInput2">Kostenstelle</label>
                                    <?php



                                            $sql4 = "SELECT Knr, Kname FROM Kname";
                                            $result4 = $connection->query($sql4);
                                            if ($result4->num_rows > 0) {
                                            echo "<select name='Knr'>";
                                            // output data of each row
                                            while($row = $result4->fetch_assoc()) {
                                            echo "<option value='" . $row['Knr'] . "'>" . $row['Kname'] . "</option>";
                                            }
                                            echo "</select>";
                                            }
                                     ?>
                                    </div>

Dies funktioniert auch soweit. Nun möchte ich jedoch eine Checkbox erstellen, welche folgende funktion hat:
Wenn ich einen Wert von der Dropdownliste ausgewählt habe und dann die Checkbox auswähle, soll ein anderer Wert ebenfalls in die Datenbank übertragen werden, hierbei hat jedoch jeder einzelne Wert aus der dropdownliste nur einen speziellen anderen passenden Wert (also sozusagen eine 1:1 verbindung), welcher dann auch übertragen werden soll. Meine Dropdownliste umfasst 35 Werte, von denen alle also genau einen anderen speziellen wert haben welcher auch übertragen werden soll. Wenn die Checkbox nicht ausgewählt wird, soll natürlich kein weiterer Wert in die Datenbank übertragen werden, sondern nur der der Dropdownliste.

Ich hoffe ich konnte mein problem relativ verständlich schildern und freue mich auf jeden Tipp und denkanstoß! :)
 

Sempervivum

Erfahrenes Mitglied
Kostenstellen mit Nummer und Name - häufig erleichtert es das Verständnis, wenn man weiß, was sich dahinter verbirgt. Was gibt denn dieser zusätzliche Wert an und wo kommt er her - ich vermute, ebenfalls aus der Datenbank?
Ohne diese Zusammenhänge zu kennen könnte eine Lösung darin bestehen, den zusätzlichen Wert als data-Attribut in der zugehörigen Option abzulegen und beim Selektieren der Option mit Javascript dem name-Attribut der Checkbox zuzuweisen.
Oder beide Werte im value-Attribut der Option zusammen zu fassen, als CSV oder JSON. Das hätte den Vorteil, dass es kein Javascript braucht. Abhängig vom Zustand der Checkbox kann der zweite Wert auf dem Server dann ignoriert oder ausgewertet werden.
 

Braman

Mitglied
Hey @Sempervivum erstmal danke für deine Antwort :) ja, der zusätzliche wert kommt auch von der Datenbank aus einer anderen Tabelle, es handelt sich dabei um das psp_element der bestellung.
Das hört sich aber ja schonmal nach einer Idee an, auch wenn ich von dem allen noch nicht wirklich eine Ahnung habe ^^
 

Sempervivum

Erfahrenes Mitglied
Dieses:
Ohne diese Zusammenhänge zu kennen könnte eine Lösung darin bestehen, den zusätzlichen Wert als data-Attribut in der zugehörigen Option abzulegen und beim Selektieren der Option mit Javascript dem name-Attribut der Checkbox zuzuweisen.
muss ich wahrscheinlich korrigieren: Besser beim Checken der Checkbox den zusätzlichen Wert in ein hidden Input eintragen.

Wie erfolgt denn die Zuordnung zwischen Bestellung und Kostenstelle?
 

Braman

Mitglied
Bei einer bestellung wird immer eine Kostenstelle angegeben, bei manchen bestellungen (also je nachdem welche Ware) kommt noch ein psp_element (bsp: Z-T1D-2000495832-01) hinzu, welches natürlich auch angegeben werden soll.
tabelle.png
Das ist jetzt die Tabelle, in welche ich die beiden Informationen abspeichern möchte.

checkbox.png

und so sieht der kleine Teil meiner seite mit der checkbox und der Dropdownliste aus.

Ich hoffe ich habe deine frage beantwortet ^^
 

Sempervivum

Erfahrenes Mitglied
Was ich noch nicht verstehe ist, wo das PSP-Element her kommt? Ist es schon in der Datenbank vorhanden oder muss der Benutzer es manuell eingeben?
 

Braman

Mitglied
ja richtig, das PSP_Element ist schon in der Datenbank vorhanden und hat seine eigene Tabelle, genau wie die Kostenstelle auch, nun werden bei jeder neuen bestellung die IDs von den Tabellen (also von der jeweiligen Kostenstelle und des PSP_Elements (falls dieses bei der Bestellung benutzt werden muss)) in einer anderen Tabelle aufgelistet (in der Tabelle von dem screenshot) :)
 

Sempervivum

Erfahrenes Mitglied
OK, aber das PSP-Element ist zwar in der Datenbank, aber kann nicht automatisch ermittelt werden sondern muss vom Benutzer eingegeben werden? Man weiß ja zunächst nicht, welches PSP-Element zu der Bestellung gehört.
 

Braman

Mitglied
Ich versuch mein vorhaben mal genauer zu schildern ^^:
Also das funktioniert so, jede einzelne Kostenstelle hat genau ein passendes PSP_Element und beides ist schon in der Datenbank vorhanden. Was mein Ziel jetzt ist, ist das ich in der Dropdownliste eine Kostenstelle aussuche und wenn ich dann auch die Checkbox auswähle, das passende PSP_Element auch in die neue Tabelle eingefügt wird (von dem screenshot). Wenn ich jedoch die Checkbox nicht auswähle, soll nur die Kostenstelle übertragen werden. Heißt, es wird immer genau die eine bestimmte Kostenstelle zu einem einzigen PSP_Element passen (und bei mir handelt es sich um 35 kostenstellen mit logischerweise dann 35 PSP_Elementen). Das einzige was der benutzer wissen muss ist, welche Kostenstelle benutzt worden ist und diese in der Dropdownliste auswählen und ob ein PSP_Element zu der bestellung gehört oder nicht und anschließend nur noch die Checkbox auswählt oder in diesem Fall dann nicht auswählt.
Btw. Danke das du dir die Zeit nimmst :)
 

Sempervivum

Erfahrenes Mitglied
Dann hatte ich es ja am Anfang richtig verstanden.
jede einzelne Kostenstelle hat genau ein passendes PSP_Element
Dann muss es ja einen Verweis oder sonstwie eine Zuordnung von der Kostenstelle zum PSP-Element geben? Dann frage ich mich, ob man das PSP-Element nicht nach dem Abschicken des Formulars auf dem Server ermitteln kann, wenn die Checkbox gecheckt ist?