Ankündigung

Einklappen
Keine Ankündigung bisher.

Insert into macht Mucken

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ahertle
    hat ein Thema erstellt Insert into macht Mucken.

    Insert into macht Mucken

    Hallo zusammen ,

    eigenrtlich würd mir so'n Kaspersmilie heute viel eher stehen.

    Also:
    Hab'n PHP-Formular mit einigen Textfelder und Selectboxen und packe die ganzen Eingaben in eine MySQL-Datenbank (insert into mit
    $_POST[xyz]) geht soweit ganz gut, ohne Fehler.

    Es gibt jedoch eine Variable, die ich mir nicht über das Formular füllen lasse, sondern die ich mir über ne Abfrage aus einer anderen Tabelle hole.

    Die Variable heißt $KundenNr, auch das geht problemlos.

    Das einzige Problem: Wenn ich diese $KundenNr mit den anderen $_POST[xyz] in die Datenbank schreiben will, kommt dort nur die 0 an.

    Und zwar egal ob so:

    "INSERT INTO $table VALUES (0, '$KundenNr', '$_POST[Datum]', ...)"

    oder so:

    $_POST[KundenNr] = $KundenNr;
    "INSERT INTO $table VALUES (0, '$_POST[KundenNr]', '$_POST[Datum]', ...)"

    Zur Kontrolle ergeben jeweils:

    echo $KundenNr;
    echo $_POST[KundenNr];

    die richtigen Werte.

    Danke für Eure Hilfe,
    der Kasper

  • webbi
    antwortet
    Abgesehen von dem Problem kannst du nicht ein Datum im Format "04.12.2005" in eine DATE Feld einfügen...

    Date-Feld: YYYY-MM-DD
    Dein Datum: DD-MM-YYYY

    bitte umwandeln.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    1. Arrays mit nicht numerischen keys sollten die keys immer mit ' oder " eingeschlossen werden
    z.B. nicht $_POST[KundenNr] sondern $_POST['KundenNr'] oder $_POST["KundenNr"];

    2. $_POST, $_GET, $_REQUEST dierekt in nen mysql query einbauen wegen der sicherheit
    siehe mysql_escape_string oder mysql_real_escape_string

    3. Arrays in einen string muss man gesondert kennzeichen
    z.B. $sqld = "INSERT INTO $table VALUES (0, '{$_POST['KundenNr']}')" oder noch besser
    $sqld = "INSERT INTO $table VALUES (0, '".$_POST['KundenNr']."')"

    Einen Kommentar schreiben:


  • ahertle
    antwortet
    Mist, dachte, da die Abfrage erst in Zeile 220 aufgerufen wird, daß er da ja dann schon weiß was $KundenNr ist.
    Außerdem werden die anderen Variablen ja auch erst weiter unten definiert.
    Naja trotzdem, jetzt klappts.

    Vielen Dank also für die Mühe.

    Grüße, Andi

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    Du stellst die Abfrage zum Erstellen des Datensatzes in Zeile 10 zusammen. An der Stelle ist die Variable $KundenNr aber noch gar nicht definiert.

    Einen Kommentar schreiben:


  • ahertle
    antwortet
    Schau mal da:

    http://hertle.dnsalias.com/Test.txt

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    Zitat von ahertle
    echo $KundenNr ergibt die jeweils richtige KundenNr.
    Dann wird die Variable anschließend wieder gelöscht oder überschrieben, bevor du sie an deine INSERT-Query weiterreichst. Aber um das beurteilen zu können, wäre etwas mehr Code wünschenswert.

    Einen Kommentar schreiben:


  • ahertle
    antwortet
    $sqlc = "SELECT KundenNr FROM $table2 WHERE $table2.Kunde = '$_POST[Kunden]'";

    $result3 = mysql_query($sqlc);
    $KundenNr = mysql_result($result3, 0);

    echo $KundenNr ergibt die jeweils richtige KundenNr.

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    Dann hat $KundenNr keinen Wert. Wie wird dieser denn zugewiesen?

    Einen Kommentar schreiben:


  • ahertle
    antwortet
    Geht leider nicht:

    INSERT INTO Taetigkeiten VALUES (0, '', 04.12.2005, '7:00', 04.12.2005, '16:00', '1:00', 0, 'testttt t', 0)

    Muß das auch gehen, wenn register_globals = off gestellt ist?

    Grüße, Andi

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    So wie du es am Anfang schon hattest: "INSERT INTO $table VALUES (0, '$KundenNr', '$_POST[Datum]', ...)"

    Einen Kommentar schreiben:


  • ahertle
    antwortet
    Wie oben schon gesagt: Ich will ja nicht die KundenNr von Hand eintragen, sondern den Kunden aus nem Kombinationsfeld auswählen und die KundenNr soll dann über ne Abfrage aus ner anderen Tabelle gezogen werden.
    Das funktioniert alles, ich habe die KundenNr dann in der Variablen $KundenNr.

    Und die soll dann mit dem anderen Schotter wieder ab in die Datenbank.

    Die Frage ist eben, wie übergebe ich das vernünftig an die INSERT INTO - Anweisung?

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    Zitat von ahertle
    M.E. liegt das Problem darin, daß ich entweder
    a) $_POST[KundenNr] von Hand zusammenbastle:
    $_POST[KundenNr] = $KundenNr;
    Warum weist du $_POST['kundenNr'] einen Wert zu? Kommt der Wert nicht aus einem Formular?

    Zitat von ahertle
    Wie gesagt, in beiden Fällen sind die Variablen definiert:
    Zumindest hat die Variable, die du an die Abfrage übergibst keinen Wert, was du ja auch sehen kannst, wenn du dir die Abfrage anzeigen lässt.

    Einen Kommentar schreiben:


  • ahertle
    antwortet
    Also die Tabellenstruktur sieht so aus:
    *ID* int(11) Nein* auto_increment*
    *KundenNr*int(11) Nein* 0*
    *BegDat* date Nein* 0000-00-00*
    *BegZt* time Nein* 00:00:00*
    *EndDt* date Nein* 0000-00-00*
    *EndZt* time Nein* 00:00:00*
    *Pause* time Nein* 00:00:00*
    *Pauschal* decimal(10,2) Ja* 0.00*
    *Taetigkeit*varchar(255) Ja* NULL*
    *gestellt* tinyint(4) Ja* 0*

    Die Abfrage:
    $sqld = "INSERT INTO $table VALUES (0, '$_POST[KundenNr]', '$_POST[BegDat]', '$_POST[BegZt]', '$_POST[EndDat]', '$_POST[EndZt]', '$_POST[Pause]', 0, '$_POST[Taetigkeit]', 0)";

    M.E. liegt das Problem darin, daß ich entweder
    a) $_POST[KundenNr] von Hand zusammenbastle:
    $_POST[KundenNr] = $KundenNr;

    oder b) $KundenNr sofort in die Insert Into Anweisung stopfe, die sieht dann so aus:
    $sqld = "INSERT INTO $table VALUES (0, '$KundenNr', '$_POST[BegDat]', '$_POST[BegZt]', '$_POST[EndDat]', '$_POST[EndZt]', '$_POST[Pause]', 0, '$_POST[Taetigkeit]', 0)";

    Wie gesagt, in beiden Fällen sind die Variablen definiert:
    $_POST[KundenNr] = 4
    $KundenNr = 4

    jedoch wird nichts an die Datenbank gesendet, echo $sqld ergibt jeweils:

    INSERT INTO Taetigkeiten VALUES (0, '', '04.12.2005', '7:00', '04.12.2005', '16:00', '1:00', 0, 'Mist machen', 0)

    Grüße

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    Dann zeig bitte nochmal deine aktuelle Tabellenstruktur und den PHP-Quellcode, mit dem du jetzt die Abfrage zusammenbaust.

    Einen Kommentar schreiben:

Lädt...
X