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

  • 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


  • #2
    Wie sieht deine Tabellenstruktur aus? Lass dir die Abfrage mal anzeigen und poste dann die Ausgabe hier.

    Kommentar


    • #3
      Tabellenstruktur:
      *Feld* Typ Attribute Null Standard Extra
      *ID* int(11) Nein* auto_increment*
      *KundenNr* int(11) Nein* 0*
      *Datum* date Nein* 0000-00-00*
      *Beginn* time Nein* 00:00:00*
      *Ende* 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*

      Mit Abfrage anzeigen lassen, weiß ich nicht, was Du meinst.
      Sie sieht jedenfalls so aus:

      $sqld = "INSERT INTO $table VALUES (0, '$_POST[KundenNr]', '$_POST[Datum]', '$_POST[Beginn]', '$_POST[Ende]', '$_POST[Pause]', 0, '$_POST[Taetigkeit]', 0)";
      $result4 = mysql_query($sqld);

      Wie gesagt, funktioniert alles, bis auf die bescheuerte 0 in der Spalte KundenNr, obwohl $_POST[KundenNr] den gewünschten Wert enthält.
      Danke für die Mühe!

      Kommentar


      • #4
        Zitat von ahertle
        Mit Abfrage anzeigen lassen, weiß ich nicht, was Du meinst.
        Einfach mal die Abfrage mit print $sqid; bzw. echo $sqid; anzeigen lassen.

        Kommentar


        • #5
          echo sqld

          Da kommt folgendes raus:

          INSERT INTO Taetigkeiten VALUES (0, '', '04.12.05', '12:00', '04.12.05', '22:00', '1:00', 0, 'täterä täterä täterä ', 0)

          An Position 2 sollte das übergeben werden, ist aber leer '' .

          Über echo wird mir aber angezeigt, daß die Variable in beiden Fällen einen Wert hat:

          $_POST[KundenNr] = 4 bzw
          $KundenNr = 4

          Oh Mann, keine Ahnung und davon viel:

          Grüße, Andi

          Kommentar


          • #6
            Wie willst du denn eine Zeichenkette wie 04.12.05 in einer Spalte vom Typ INTEGER speichern?

            Kommentar


            • #7
              Sorry, hab die Tabelle gerade um eine Spalte vergrößert, Datum wird in ner Spalte vom Format date gespeichert, tatsächlich geht es aber um die KundenNr, die kommt als nomale Zahl daher, und soll als int(11) gespeichert werden.

              Nur: Bei echo sqld ist die entsprechende Position ( Position 2) eben leer:

              INSERT INTO Taetigkeiten VALUES (0, '', '04.12.05', '12:00', '04.12.05', '22:00', '1:00', 0, 'täterä täterä täterä ', 0)

              Grüße

              Kommentar


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

                Kommentar


                • #9
                  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

                  Kommentar


                  • #10
                    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.

                    Kommentar


                    • #11
                      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?

                      Kommentar


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

                        Kommentar


                        • #13
                          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

                          Kommentar


                          • #14
                            Dann hat $KundenNr keinen Wert. Wie wird dieser denn zugewiesen?

                            Kommentar


                            • #15
                              $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.

                              Kommentar

                              Lädt...
                              X