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

Sempervivum

Erfahrenes Mitglied
Hast Du mein #19 gelesen, #18 war ein Fehler?
Versuche dies:
Code:
if (isset($_POST['submit'])) {

    var_dump($_POST);
    $kstnr = $_POST['kstnr'];

    if (isset($_POST['psp-ele'])) {

        $sqlpsp = "SELECT InvestPSPID FROM investpsp WHERE kstnrr=$kstnr";

        $result1 = $connection->query($sqlpsp);
        if ($result1->num_rows == 1) {

            $rowpsp = $result1->fetch_row();
            $investpspid = $rowpsp[0];

        } else {

            $investpspid = 'null';

        }
    } else {

        $investpspid = 'null';

    }

    var_dump($_POST['kstnr'], $investpspid);
    $sql12 = $query = " INSERT INTO kunde_projekt (kundenname_projekt, kstnr, info_uebergabe, standort, InvestPSPID)
                     VALUES ('$kundenname_projekt','$kstnr', '$info_uebergabe', '$standort', '$investpspid')";

    var_dump($sql12);
    $result2 = $connection->query($sql12);
    var_dump($connection->error);
    var_dump($result2);

}
 

Braman

Mitglied
sorry, hatte deine neue Antwort erst dann entdeckt, als ich meine Nachrichte verschickt hatte^^
Habe deinen Code jetzt copy 1:1 eingefügt, leider will es immer noch nicht funktionieren..

Ich weis nicht ob das irgendwie damit zusammenhängen könnte, aber die kunde_projekt Tabelle ist auch ein foreign Key der Tabelle "bestellung", habe daher die last insert id unten reingeschmissen, damit dieser erkannt wird, und auch einträge in meine Tabelle "bestellung" gelangen (also nicht direkt am anfang hinzugefügt, sondern erst als es mir aufgefallen ist):

PHP:
<?php





if (isset($_POST['submit'])) {

    var_dump($_POST);
    $kstnr = $_POST['kstnr'];

    if (isset($_POST['psp-ele'])) {

        $sqlpsp = "SELECT InvestPSPID FROM investpsp WHERE kstnrr='$kstnr'";

        $result1 = $connection->query($sqlpsp);
        if ($result1->num_rows == 1) {

            $rowpsp = $result1->fetch_row();
            $investpspid = $rowpsp[0];

        } else {

            $investpspid = 'null';

        }
    } else {

        $investpspid = 'null';

    }

    var_dump($_POST['kstnr'], $investpspid);
    $sql12 = $query = " INSERT INTO kunde_projekt (kundenname_projekt, kstnr, info_uebergabe, standort, InvestPSPID)
                     VALUES ('$kundenname_projekt','$kstnr', '$info_uebergabe', '$standort', '$investpspid')";

    var_dump($sql12);
    $result2 = $connection->query($sql12);
    var_dump($connection->error);
    var_dump($result2);

}

$kundeprojekt_id=$connection->insert_id;

?>


Eine kleine frage noch dazu, wie bekomme ich diese array liste von meiner Seite weg? ^^

array.png
 

Sempervivum

Erfahrenes Mitglied
Dieses Arraylisting kommt von den var_dumps, wenn Du die löschst, dürften sie verschwinden.

Den Code aus #21 habe ich gerade getestet, nachdem ich alle Namen in der Datenbank angepasst und die fehlenden Felder hinzu gefügt hatte. Funktioniert. D. h. wahrscheinlich liegt es an dem foreign key.

Wie ist das mit dem foreign key zu verstehen: Es gibt noch eine Tabelle bestellung und diese enthält eine Spalte mit dem key der Tabelle kunde_projekt und diese ist als foreign key deklariert?
 

Braman

Mitglied
Alles klar, wieder was gelernt ^^

genau, also meine Datenbank besteht gerade aus insgesamt 6 Tabellen, wie du ja schon weist, sind die tabellen investpsp(PSP_Element) und die Kostenstelle Tabelle in der Tabelle "kunde_projekt" als foreign keys verlinkt. Die Tabelle kunde_projekt ist hierbei in der Tabelle "bestellung" als foreign Key verbunden, damit man ja zu jeder bestellung die getätigt wurde, den kunden, seine kostenstelle und das damit verbundene (wenn sie denn dabei war) PSP_Element zu finden.

Ich zeig dir mal einfach alle Tabellen (die hierbei miteinander verbunden sind) zur besseren übersicht ^^ :

Bestellung bestellung.png

kunde_projekt:

kunde_projekt.png

und auch wenn du sie schon kennst, Kostenstelle:

Kostenstellen tabelle.png

Und investpsp:

PSP_Element Tabelle.png
 

Sempervivum

Erfahrenes Mitglied
Hm, solange die ID von kunde_projekt noch nicht in der Tabelle bestellung drin ist, kann dieser foreign key dort doch keine Schwierigkeiten bereiten.
Was funktioniert denn genau nicht? Wird überhaupt nichts in kunde_projekt eingetragen?
 

Braman

Mitglied
solange die ID von kunde_projekt noch nicht in der Tabelle bestellung drin ist
Doch doch, ist er ^^. Also wenn ich nur Submit drücke, ohne die checkbox ausgewählt zu haben, wird nichts in die Tabelle kunde_projekt und eingetragen (auch nicht in die Tabelle bestellung). Wähle ich jedoch die checkbox aus und drücke auf submit, so bekommt die Tabelle kunde_projekt alle einträge (also die kostenstelle und das PSP_Element) und auch die Tabelle bestellung bekommt seine Einträge sowohl mit dem foreign key kundeprojekt_id (also dem foreign key). Wenn ich die Checkbox nichts ausgewählt habe, bekommt die Tabelle bestellung sogar keine einträge wie smarttrack, besteller usw.

Was man noch sieht ist das wenn ich Submitte, ohne die checkbox auszuwählen, ja nichts übertragen wird, submitte ich dann jedoch mit der checkbox, so kommt ein Eintrag, jedoch wurden dann so viele Ids übersprungen, wie ich ohne checkbox submitted habe. Hier mal ein Bild zum besseren verständnis ^^ :

bestellung sprung.PNG
Zum Beispiel der Sprung von 844 auf 8
 

Sempervivum

Erfahrenes Mitglied
Verstehe, ich hatte mich schon gewundert, woher die Sprünge im Schlüssel kommen. Konnte ich reproduzieren. Ich hatte glücklicher Weise noch dieses drin:
Code:
    $result2 = $connection->query($sql12);
    var_dump($connection->error);
und das hat mir dies ausgespuckt:
'Incorrect integer value: 'null' for column `bestellungen`.`kunde_projekt`.`InvestPSPID` at row 1'
Lösche ich die Hochkommas um $investpspid funktioniert es, die Daten werden eingetragen:
Code:
    $sql12 = $query = " INSERT INTO kunde_projekt (kundenname_projekt, kstnr, info_uebergabe, standort, InvestPSPID)
                     VALUES ('$kundenname_projekt','$kstnr', '$info_uebergabe', '$standort', $investpspid)";
Was ich jetzt nicht verstehe ist, warum das eintragen eines numerischen Wertes mit Hochkommas darum herum funktioniert?
 

Braman

Mitglied
So ich habe jetzt wieder Zeit gehabt und es mal ausprobiert, und tatsächlich jetzt funktioniert es :D Was ich jedoch auch nicht verstehe ist warum das Eintragen ohne die Hochkommas funktioniert :unsure: Aber immerhin funktioniert es jetzt.
Ich danke dir wirklich sehr für deine Hilfe und mühen!^^ @Sempervivum
 

Neue Beiträge