[SQL allgemein] Daten in einer Tabelle erfassen und ID des eintrages in eine andere schreiben

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

  • [SQL allgemein] Daten in einer Tabelle erfassen und ID des eintrages in eine andere schreiben

    Hallo,

    Über ein Formular werden daten eingegeben, wie muss eine Sql abfrage bzw der phpcode ausschaun wenn der neue Datensatz "datum" in die Tabelle "dates" geschrieben werden soll und die dadurch erzeugte ID in die Tabelle "touren" geschrieben werden soll.... hab einige variationen ausprobiert aber es haut nicht hin, kann jemand helfen? Wäre super !!!

    Danke Josh

  • #2
    anstatt Datum solltest du noch einen genaue Zeit mit in die DB speichern, damit du deinen Datensatz zweifelsfrei identifizieren kannst.

    Also Datensatz in "dates" speichern und gleich hinterher
    ein "SELECT id from dates WHERE genaue_zeit='$genaue_zeit_variable'".

    Den Rest wie beim Speichern in "dates"
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      es lebe der Primärschlüssel

      Tabelle
      create table dates(
      [color=green] id bigint unsigned auto_increment primary key,[/color]
      datum beliebigertyp
      )

      Formular
      <form method="post" action="eintragen.php">
      <input type="text" name="datum"> <!-- nur fürs beispiel -->
      <input type="submit">
      </form>

      eintragen.php
      $datum = mysql_escape_string($_POST['datum']];
      mysql_query("insert into dates(datum) values ('$datum')");
      $id = mysql_insert_id();
      mysql_query("insert into touren (datumid) values ($id)");
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        @XGremliN
        falsch


        Code:
        SELECT LAST_INSERT_ID()
        liefert dir die zuletzt vergebene id.


        Code:
        INSERT tabelle1 SET feld1name = 'test';
        INSERT tabelle2 SET tabfeld2 = 'test2', feld1id = LAST_INSERT_ID();
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          @Abraxax
          Aber zwischen den beiden Abfragen zum eintragen in dates und dem auslesen von LAST_INSERT_ID() vergeht Zeit.
          Wenn jetzt jemand genau in dieser Zwischenziet eine neue Eintragung macht erhälst du die falsche ID.
          Dieser Fall ist zwar sehr unwahrscheinlich, liegt aber im Rahmen des Möglichen.
          Deshalb ist meine Lösung nicht falsch, nur vielleicht etwas unschön.
          it's not a bug,
          it's a feature!

          Kommentar


          • #6
            ....dann holst du dir den wert mit show_table_status und dann einen verweis auf atuo_increment und dann kannste auch sicher sein, daß die ID ihm gehört....
            ------------------------------------------
            Ne Tudo que reluz de Ouro

            Kommentar


            • #7
              Original geschrieben von XGremliN
              Aber zwischen den beiden Abfragen zum eintragen in dates und dem auslesen von LAST_INSERT_ID() vergeht Zeit.
              das ist zwar richtig. interessiert aber keinen...

              denn die mysql weiss schon, wer die connection gerade zur db offen hat..
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar

              Lädt...
              X