Multiauswahlwerte von Dropdown in Datenbank speichern

  • Besser so?

    Sicherheitstechnisch, ja. Wirklich gut/richtig ist es aber nicht: zum einen hast du meinen Pseudocode nicht genau gelesen, das prepare gehört *vor* die Schleife, das muss nicht bei jedem Durchlauf erneut aufgerufen werden. Zum Anderen greifst du auf $_POST["Belag"] und überprüfst dann erst ob das Element überhaupt existiert … Lass das unsinnige Umkopieren der Werte in die Variablen einfach ganz weg und weis in $para direkt die Werte aus $_POST zu.

  • Sicherheitstechnisch, ja. Wirklich gut/richtig ist es aber nicht: zum einen hast du meinen Pseudocode nicht genau gelesen, das prepare gehört *vor* die Schleife, das muss nicht bei jedem Durchlauf erneut aufgerufen werden. Zum Anderen greifst du auf $_POST["Belag"] und überprüfst dann erst ob das Element überhaupt existiert … Lass das unsinnige Umkopieren der Werte in die Variablen einfach ganz weg und weis in $para direkt die Werte aus $_POST zu.


    Also ich bin mir fast sicher diese Variante schon mal gehabt zu haben, diese aber nicht ausgeführt wurde, ich die db neu gemacht habe und und und und und.

    Also....ÖRGS!


    Also die neue hoffentlich verbesserte Variante.



    Ja und sowas dauert bei mir in der Tat en paar Stunden. -.-

    Egal. Wird für etwas gut sein.



    Lass das unsinnige Umkopieren der Werte in die Variablen einfach ganz weg

    Da weiß ich nicht genau was du meinst....


    Den Block hier:

    Code
    $Kundennr = $_POST["Kundennr"];
    $Pizza = $_POST["Pizza"];
    $Belag = $_POST["Belag"];

    brauch ich doch?

  • $stmt->bindParam(':Kundennr',$Kundennr, PDO::PARAM_STR);


    $stmt->bindParam(':Kundennr',$_POST["Kundennr"], PDO::PARAM_STR);

    Sorry, geht nicht.

    Ich habe, weil der Schlingel mich so oft reingelegt hat, die DB im PHP My Admin gelöscht und neu angelegt, dann den Code getestet:

    Er sendet nichts in die Datenbank.


    Dann wieder zurückgedreht und dann sendet er. ?(


    Formularauswahl(nicht das ich da was verdaddelt hab):

    Code
    <div class="form-group">
    <label>Pizza auswählen:</label>
    <select class="form-control select2"  name="Pizza" data-placeholder="Pizza wählen." style="width: 100%;" >
    <option></option>
    <option value="Carlo">Carlo</option>
    <option value="Carme">Carme</option>
    <option value="Gio">Gio</option>
    </select>
    
    </div>
  • Das Thema wird irgendwie immer komplizierter und dein Code auch.

    PHP
    ("INSERT INTO xxx.pizzabestellung(   // Ist das xxx richtig ? oder willst du was verschleiern ?
    
    $_POST["value"]   // wo kommt den das value auf einmal her ?

    PDO ist nicht mein Fach,

    PHP
    $stmt->bindParam(':Belag',$_POST["value"], PDO::PARAM_STR);
    foreach($_POST["Belag"]  as $key => $value){
         $stmt->execute();
    }

    deswegen frage ich mal, ob das überhaupt so gehen kann ?

    Selbst wenn du $_POST['value'] mit $value tauscht kann ich mir nicht vorstellen, dass es so geht.

  • Dann überprüfe doch mal, wo der Fehler liegt, siehe https://www.php.net/manual/en/pdostatement.errorinfo.php

    Danke. :)


    Mmmhh wenn ich das nun richtig gemacht habe so auf die Schnelle, könnte man meinen das mein Belag leer ist? und wer ißt schon gerne Pizza ohne Belag :D

    Code
    Array ( [0] => 23000 [1] => 1048 [2] => Column 'Belag' cannot be null ) Array ( [0] => 23000 [1] => 1048 [2] => Column 'Belag' cannot be null )

    Werde ich mir Morgen genauer anschauen. Muss nun ans Wasser. :)

  • Das Thema wird irgendwie immer komplizierter und dein Code auch.

    PHP
    ("INSERT INTO xxx.pizzabestellung(   // Ist das xxx richtig ? oder willst du was verschleiern ?
    
    $_POST["value"]   // wo kommt den das value auf einmal her ?

    PDO ist nicht mein Fach,


    PHP
    $stmt->bindParam(':Belag',$_POST["value"], PDO::PARAM_STR);
    foreach($_POST["Belag"]  as $key => $value){
         $stmt->execute();
    }

    deswegen frage ich mal, ob das überhaupt so gehen kann ?

    Selbst wenn du $_POST['value'] mit $value tauscht kann ich mir nicht vorstellen, dass es so geht.


    Hallo Basti 1012,

    ja das ist Verschleierungstaktik :D


    Das Value kommt vom Belag.


    Also in Kombination mit den Definitionen:

    Code
    $Kundennr = $_POST["Kundennr"];
    $Pizza = $_POST["Pizza"];
    $Belag = $_POST["Belag"];

    Funktioniert diese Variante:

    Code
    $stmt->bindParam(':Kundennr',$Kundennr, PDO::PARAM_STR);$stmt->bindParam(':Pizza',$Pizza, PDO::PARAM_STR);$stmt->bindParam(':Belag',$value, PDO::PARAM_STR);

    html-seminar.de/woltlab/attachment/3157/

    Er macht dann wie schon erwähnt, für jeden Belag einen Eintrag in die DB.


    Ob das so soll, da muss ich noch schauen.

    Zunächst ging es um die Berichtigung des munierten Code.


    Da ja der Vorschlag war die "Definition" zu lassen, frimel ich an der korrekten Weise....


    Sorry wenns so langsam nervt.

  • So da is er wieder :D


    Ich wollte das Thema nicht so "offen" stehen lassen. Deshalb ein Status Update:


    Ich/Ihr habe(n) es nun mit denke ich halbwegs anständigem Code hinbekommen Daten in die Datenbank zu senden(auch Multiauswahl) und diese aus der Tabelle anzeigen zu lassen.


    *Gääähnnnnn* denkt ihr nun :D klar wenn ich so lese was ihr sonst so postet is das Kinderkram. Für mich schon viel.


    Wie schon erwähnt ist es kein echtes Projekt. Die Funktionen die in solch einem "Bestellsystem" benötigt werden, denke ich werden fast überall benötigt. Deshalb fiel die Wahl darauf.


    Zurzeit beschäftige ich mich mit CRUD und werde euch die Tage bestimmt auch nochmal anfunken müssen, da ich entweder nach den falschen Begriffe google oder es z.B nichtmal ne gute Anleitung gibt wie der Button im Bild auf "checked" gesetzt werden kann(mit Eintrag in DB) und dann wieder als checked angezeigt wird.

    Aber....da wurschtel ich noch ein wenig rum. :)


    Jedem ein großes Dankeschön schonmal.


    html-seminar.de/woltlab/attachment/3162/html-seminar.de/woltlab/attachment/3162/

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!