Ankündigung

Einklappen
Keine Ankündigung bisher.

Php: Wie wähle ich beim Eintragen in eine MySQL-Tabelle den passenden Fremdschlüssel

Einklappen

Neue Werbung 2019

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

  • Php: Wie wähle ich beim Eintragen in eine MySQL-Tabelle den passenden Fremdschlüssel

    Meine Datenbank hat zwei MySQL Tabellen. Nennen wir sie album und songs. Beide haben einen Primärschlüssel id mit auto_increment.
    songs hat auch eine Spalte albumId. Diese ist als Fremdschlüssel mit id von album verknüpft. In phpMyAdmin ist alles entsrpechend eingestellt (phpMyAdmin ist eine Software für das Verwaltungen von MySQL Datenbanken).
    Wenn ich nun ein album lösche, wird der songs eintrag mitgelöscht - das funktioniert also.

    Nun soll der Benutzer über ein HTML-Formular die Daten für das Album und die entsprechenden Songs eintragen können und diese nach Klick des Submit-Buttons in die Datenbank eingetragen werden.
    Dafür habe ich eine php-Seite erstellt, welche die Verbindung zur Datenbank herstellt und entsprechende Einträge in album und songs vornimmt.
    Meine Frage ist nun: Wie sorge ich dafür, dass bei den songs in der Spalte albumId der richtige Wert (nämlich die id des entsprechenden Albums) eingetragen wird?

    Im Moment steht dafür auf der Php-Seite folgende Zeile: $pdo->prepare("INSERT INTO songs (albumId) VALUES (?)"); - und ich hätte gerne das die albumId mit der Id des erzeugten Albums übereinstimmt.
    Was ist da der passende Code - oder bin ich mit meinen schlechten MySQL-Kenntnissen ohnehin auf dem Holzweg?

    Ich bin für alle Antworten dankbar. Schreibt mir gerne auch, falls meine Frage nicht verständlich ist.

  • #2
    Du musst zu erst das entsprechende Album anlegen. Anschließend kannst du die ID entweder per SELECT abfragen oder du nimmst diese Funktion hier: http://php.net/manual/de/pdo.lastinsertid.php

    Kommentar


    • #3
      Wow - das ging ja schnell. Vielen Dank.
      Das heißt: Ich schreibe den Code, mit welchem ich das Album einfüge - und direkt darunter der Codeblock fürs Einfügen der Songs. Für letzteren kann ich mir als erstes mit dem Befehl $dbh->lastInsertId() die letze id rausziehen, die zur Datenbank hinzugefügt wurde. Und das müsste dann, diejenige des Albums sein. Richtig?

      Kommentar


      • #4
        Zitat von LoopingLouies Beitrag anzeigen
        Das heißt: Ich schreibe den Code, mit welchem ich das Album einfüge - und direkt darunter der Codeblock fürs Einfügen der Songs. Für letzteren kann ich mir als erstes mit dem Befehl $dbh->lastInsertId() die letze id rausziehen, die zur Datenbank hinzugefügt wurde. Und das müsste dann, diejenige des Albums sein. Richtig?
        Naja, kommt halt drauf an ob zu einem Album direkt danach alle Songs eingetragen werden.
        Wenn du ein Song vergisst und es danach einträgst und dazwischen Songs zu einem anderen Album eingetragen wurden geht das nicht mehr.

        Normalerweise nimmt man ein Formular -> Neue Songs hinzufügen
        und da hat man dann beispielsweise ein Select über das man das Album vorab auswählen kann und dann fügt man die Songs dazu und schickt den Kram ab.
        Der Parameter der vom Select zurückgegeben wird enthält dabei die id der Tabelle Album, so kann man dann leicht in der Tabelle Songs die zusätzlichen Lieder einfügen.
        Bei grosser Anzahl von Alben, macht es auch Sinn erst ein Alphabet auszuwählen und danach die Alben zu laden. Je nach Geschmack mit 2 Formularen oder aber mit AJAX.

        Kommentar

        Lädt...
        X