Primary Key in andere Tabelle schreiben

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

  • Primary Key in andere Tabelle schreiben

    Hallo zusammen,

    ich habe gerade ein kleines Denkproblem und hoffe, hier Hilfe zu bekommen.

    Ich habe eine Datenbank mit 2 Tabellen, Kunden und Kundenwünsche. Nun kann es ja sein, das ein Kunde mehrere Wünsche hat, also möchte ich den Primary Key aus der Kundentabelle in das Feld KundenID in der Tabelle Kundenwünsche eintragen. Das ganze läuft über ein PHP-Formular, auf dem einmal die Kundendaten abgefragt und in der Tabelle eingetragen werden und die Kundenwünsche in der Kundenwunschtabelle eingetragen werden. Wie krieg ich jetzt über das Formular die KundenID aus der Kundentabelle in das Feld KundenID (nicht primary) der Kundenwunschtabelle?

    Momentan sehen meine Einträge so aus:

    PHP-Code:
    $insert[] = "INSERT INTO KundenWunsch_Table (`KwInteresse`, `KwOrt`)  VALUES
    '"
    .mysql_real_escape_string($_values['KwInteresse'])."', 
    "
    .mysql_real_escape_string($_values['KwOrt'])."'; 
    Das funktioniert auch, aber die KundenID?

    Vielen Dank schon mal im voraus,

    Gerrie
    Zuletzt geändert von gerrie1978; 16.04.2008, 19:19.

  • #2
    1. Code umbrechen. Keiner hat lust die soweit nach rechts zu scrollen um zu lesen.

    2.eweitere einfach dein insert-Statement um die id. die musst du natürlich vorher noch in $_values reinschreiben, was irgendwo gefüllt wird.
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Sorry wegen des Codes...


      Wie genau meinst Du das? Ich habe jetzt ein Hidden-Field im Formular erstellt, mit der ID KundenID, genau wie der Primary-Key in der Kundentabelle (das ganze auto-increment).

      Und in der Anweisung:
      PHP-Code:
      $insert[] = "INSERT INTO KundenWunsch_Table (`KwKdID`)
      VALUES '"
      .mysql_real_escape_string($_values['KundenID'])."'; 
      Jetzt bekomme ich

      Cannot add or update a child row: a foreign key constraint fails (`feista/KundenWunsch_Table`,
      CONSTRAINT `Kunde` FOREIGN KEY (`KwKdID`) REFERENCES `Kunden_Table` (`KundenID`))
      Ne Idee? Ist bestimmt ganz einfach, aaaber....

      Gerrie

      Kommentar


      • #4
        mit code umbrechen war wohl gemeint -> einmal bitte den 1. Post editieren und dort in der einen Codezeile mal ein/zwei umbrüche machen.

        Und die Fehlermeldung sagt doch schon was los ist:

        du willst eine KwKdId in die Tabelle KundenWunsch_Table einfügen, die es aber nicht im Feld KundenId in der Tabelle Kunden_Table steht.

        Wenn du nicht weißt wie Constraints funktionieren solltest du sie lieber nicht benutzen
        signed oder unsigned... das ist hier die Frage

        Kommentar


        • #5
          So besser??? (mit dem Code)

          ... die es aber nicht im Feld KundenId in der Tabelle Kunden_Table steht.
          Wie bitte? Verstehe den Satz nicht.

          Muss das Feld in der KundenWunsch-Tabelle einfach nur den gleichen Namen wie jenes in der Kunden-Tabelle haben?

          Danke,
          Gerrie

          Kommentar


          • #6
            Hallo in ertser Li nie etwas komisch beschrieben aber egal ich denke ich weis was du meinst!

            Wenn du eiene Kunden ID in deine Tabelle Kundenwunsch schreiben willst musst du die erst mal aus deiner Kunden Tabelle auslesen. Dann musst dein Insert Statement ausbauen,da sehe ich bei dir nicht das Feld für die Kunden Id gelistet und auch bei den dazugehörigen Values fehlt die Variable die du rein schreibst.

            Sprich willst du einen Wert aus einer Tabelle also die Id aus der Tabelle Kunden in die Tabelle Kundenwunsch hinein schreiben musst du erst mal die Id aus der Tabelle Kunden auslesen,sonst wird das nichts werden!

            mfg der Litter
            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
            http://www.lit-web.de

            Kommentar


            • #7
              Hallo Litter,

              vielen Dank für Deine Antwort. Du hast scheinbar wirklich verstanden, was ich will

              Hmm, kannst Du mir da auch Codetechnisch helfen? Denn das ist das grosse Problem. Erstmal muss ich die KundenID schreiben, klar, und dann auslesen, um sie in die andere Tabelle zu schreiben. Aber alles innerhalb eines Formulars, hmmmm, da fehlt mir die Erfahrung...leider...


              Danke,
              Gerrie

              Kommentar


              • #8
                Hmm um dir etwas zu coden habe ich momentan grad keine große lust,das hat aber nichts mit verweigerter Hilfsbereitschaft zu tun sondern ich scripte selber schon den ganzen tag und brüte an einem Problem.

                Nur soviel überlege mal logisch,wie soll das gehen alles in einem Formular? Das geht nicht denn um etwas auszulesen musst ja erst ma was rein schreiben. Das dürfte der erste Denkanspurn sein. Du kannst das maximal auf einer Seite machen mit zwei Formularen. Sprich wenn du die ersten Daten in die Tabelle Kunden schreibst machst du eine header("Location:") auf die selbe Seite als Umleitung. In dem zweiten formular machst liest den eintrag aus der Tabelle aus und schreibst die id in ein hidden feld und machst dann den zweiten eintrag! Den zweiten eintrage musst du dann aber mit Update und nicht Insert machen!

                Die anderen haben es sicher auch verstanden hier denn die haben glaube bedeutend mehr drauf wie ich nur musst du deutlicher werden bei der Problem beschreibung und was du vor hast! Und ein klein wenig mehr Code zum Beispiel der Formular Aufbau und so wäre auch von Vorteil gewesen.

                Ich hoffe ich konnte ein wenig helfen. Solltes damit nichts anfangen können werde ich morgen vieleicht mal ein Beispiel Code schreiben!

                mfg der Litter
                Zuletzt geändert von litterauspirna; 16.04.2008, 21:21.
                Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                http://www.lit-web.de

                Kommentar


                • #9
                  Hallo,

                  erstmal vielen Dank für Deine Antwort. Werde das jetzt mal mit 2 Formularen in Angriff nehmen und schauen was draus wird. Wenn ich wieder auf dem Schlauch stehe, melde ich mich

                  Kommentar


                  • #10
                    Zeig halt mal dein Formular, bzw. deinen Code, damit wir einen Anheltspunkt haben, wo wir ansetzen sollen.
                    Aus der Fehlermeldung von vorher ist ja zu schliessen, dass du eine Kundennummer in die Wunschtabelle schreiben willst, die nicht existiert.
                    Gruss
                    H2O

                    Kommentar


                    • #11
                      Muss mich mal eben verbessern. Das mit Update war natürlich 'Unsinn von mir. Ich empfehle dir aber mache das auf zwei verschiedene Datein. In der einen zum Beispiel heist die Eintrag machst das erste Formular wo er sich einträgt in die Kundentabelle. Und in der zweiten stellst das Formular für die weiteren Einträge nach Kundenid in die Kundenwunsch Tabelle und die nennst mal weiter.php

                      Ich habe eben mal fix was gecoded das ist aber ungetestet und setzt ein korrekte DB Verbindung voraus!

                      Natürlich sind in dem Code keine speziellen Sicherheits lücken geschlossen oder so,das machst sicher selber!

                      Probier das mal!

                      PHP-Code:
                      <?php
                      if(isset($_POST['send']))
                      {
                          
                      $name $_POST['kunde'];
                          if(
                      $name=="")
                          {
                              echo 
                      "Name fehlt!";
                          }
                          else
                          {
                              
                      $sqlbefehl ="Insert Into $kundentabelle
                                          (kunde)
                                  VALUES    ('
                      $name')
                                          "
                      ;
                              
                      $result mysql_query($sqlbefehl)or die(mysql_error());
                              
                      header("Location: weiter.php");
                          }
                      }

                      if(isset(
                      $_POST['edit']))
                      {
                          
                      $kid $_POST['id'];
                          
                      $wunsch $_POST['wunsch'];
                          
                      $sqlbefehl ="Insert Into $kundenwunsch
                                      (kundenid,wunsch)
                              VALUES    ('
                      $kid','$wunsch')
                                      "
                      ;
                          
                      $result2 mysql_query($sqlbefehl)or die(mysql_error());
                          
                      header("Location: irgendwas.php");
                      }
                      ?>
                      //Formular eintrag.php
                      <form action="<?php echo htmlentities($_SERVER['PHP_SELF']) ?>" method="post">
                      <input type="text" name="kunde">
                      <input type="submit" name="send" value="Weiter"> 
                      </form> 


                      //Formular weiter.php
                      <form action="<?php echo htmlentities($_SERVER['PHP_SELF']) ?>" method="post">
                      <?php
                      $sqlbefehl 
                      ="Select id From kundentabelle order by id desc limit 1";
                      $ergebnis mysql_query($sqlbefehl)or die(mysql_error());
                      $row mysql_fetch_assoc($ergebnis);
                      echo 
                      "<input type=\"hidden\" name=\"id\" value=\"".$row['id']."\">";
                      ?>
                      <textarea name="wunsch" cols="40" rows="6"></textarea>
                      <input type="submit" name="eidt" value="Senden"> 
                      </form>
                      Was passiert hier. der Kunde trägt sich mit dem ersten Formular ein in die tabelle kunden in dem er auf den Button weiter klickt und wird gleichzeitig auf die datei weiter.php geleitet wo er weitere Eintragungen machen kann und seine Id wird in die Tabelle wunsch mit eingetragen in das Feld kundenid!

                      Die Daten gehören immer zu ihm die eingetragen werden denn du liest das ja so aus geordnet nach id absteigend und durch das limit 1 wird immer die letzte eingetragene id übergeben. Also kann er dann seine Daten und seine Id auch in die Wunschtabelle eintragen!

                      Ich hoffe das funzt und hilft ein wenig!
                      Zuletzt geändert von litterauspirna; 17.04.2008, 17:22.
                      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                      http://www.lit-web.de

                      Kommentar


                      • #12
                        Sorry das ich mich jetzt erst melde, meine Bandscheibe hat mich ein wenig aufgehalten.

                        Also, Dein Beispiel hat mich schon sehr viel weiter gebracht. Es ist auch gar kein Problem, das ganze über zwei Dateien, also einmal Kunden, und einmal Wünsche zu machen.

                        Jetzt hätte ich aber noch eine andere Frage. Auf der Kundenwunsch-Seite habe ich jetzt ein Dropdown-Menü, in welchem alle Kunden, die jemals angelegt wurden, aufgelistet sind. Das klappt auch prima. Wenn ich dort jetzt einen Kunden auswähle, und zu dem jeweiligen Wünsche erfassen will, brauch ich ja in der Wunsch-Tabelle die KundenID. Okay, die hole ich erst der Datenbank (Kunden-Tabelle) in ein hidden-Feld und schreib sie anschliessend in die Wunsch-Tabelle. Aber, wie kriege ich die ID in Abhängigkeit vom ausgewählten Eintrag im Dropdown-Menü? Also dort wähle ich ja einen bestimmen Datensatz aus, und genau von diesem brauche ich dann die ID, die in das hidden-Feld geschrieben.

                        Oha, versteht jemand was ich meine??????

                        Danke schon mal,

                        Nadine

                        Kommentar


                        • #13
                          Hmm du schreibst sehr wirr und in Rätzeln. Schicke mal ein wenig Code was du schon hast und dann beschreibe anhand des Codes was du vor hast. Da kann man sich wenigstens ein Bild machen!

                          mfg der Litter
                          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                          http://www.lit-web.de

                          Kommentar


                          • #14
                            Okay,

                            ich werde das ganze mal ein wenig abspecken und versuchen, anhand des Codes zu erklären, was ich machen will. Ich hoffe, das wird dann ein wenig klarer.

                            Gerrie

                            Kommentar


                            • #15
                              Original geschrieben von gerrie1978
                              Aber, wie kriege ich die ID in Abhängigkeit vom ausgewählten Eintrag im Dropdown-Menü?
                              Das hängt davon ab, was du unter einem Dropdown-Menu verstehst, bzw. wie dieses aufgebaut ist. Wenn es eine normale Select-Box ist gibst du die Id einfach als value dem Optionsfeld mit.
                              Und lass dich trotz der Hilfe von Litter nicht dazu verleiten, seine Unsitten, Tabellenamen in Variablen und nummerische Werte in Anführungszeichen zu schreiben, zu übernehmen.
                              Es gäbe auch sonst noch ein paar Verbesserungen, aber lassen wir es mal.
                              Gruss
                              H2O

                              Kommentar

                              Lädt...
                              X