Problem mit Übergabe von Variablen mit 2 MySQL Tabellen

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

  • Problem mit Übergabe von Variablen mit 2 MySQL Tabellen

    Hallo alle,
    erstmal ein Lob für eure tolle Seite, ich habe hier schon viele Tips gesehen, die mir geolfen haben, und auch Lösungen zu Problmen.

    Leider habe ich jetzt Problem, was hier noch nicht besprochen wurde:

    Ich habe 2 MySQL Tabellen (SCHTermine und SCHKursreihe).Ich möchte ein Formular schreiben, welches Daten zu der Tabelle SCHTermine hinzufügt. 2 Felder der beiden Tabellen haben den gleichen Inhalt(Zahlenwerte), und deshabl wäre es einfacher(und logischer) diese einfach per Formular mit zu Übergeben. Diese Felder sind "Nr" (Primärschlüssel von SCHKursreihe) und "Kurse". Also dachte ich, dass es das beste sei "Nr" per DropDown Leiste auszuwählen, und das Formular fügt im Hintergrund "Kurse" hinzu. Die DropDown Leiste habe ich schon hinbekommen, dass der andere Wert mit hinzugefügt wird nicht Jetzt aber genug gequasselt, hier ist der Code vom Formular :

    PHP-Code:
    function termine_anlegen(){

        require_once ( 
    "opendb.inc.php" ) ;
        require_once (
    "class/classkursreihe.inc.php");
        
    $kursreihe = new dbkursreihe$GLOBALS["db"] ) ;

        
    $arr $kursreihe->listen_arr($auswahl);


          echo 
    "<form action = 'termine.php?id=8' method = 'post'>\n";


            echo 
    "<select name='kursreihe' size='1'>\n";
              foreach(
    $arr[0] as $value)
                {
                  echo 
    "<option value=".$value.">".$value."</option>\n";
                }
            echo 
    "</select>Kursreihe<p>\n";

            echo 
    "Kurs: $kurs<p>\n";
      } 
    Und das ist der Code der Class:
    PHP-Code:
    function neuerdatensatz$kursreihe$kurs$von$bis){

          
    $kurs   $this->get Kurs by Kursreihe ($kursreihe)";

          
    $sqlab  " insert ".$this->tbname." ( Kursreihe, Kurs, Von, Bis )  ";
          
    $sqlab .= " values ( '".$kursreihe."' , '".$kurs."' , '".$von."', '".$bis."')";

    Ich hoffe ihr könnt mir helfen sitzte jetzt fast 10Stunden an diesem Problem

    mfg darksaber999

  • #2
    Habe das irgendwie nicht verstanden, wo bitte willst du den Wert hinzufügen? in der DropDown als value zu einem bestehenden oder als neues wertepaar in der dropdown
    Ein Barmer ist kein Armer !!!

    Kommentar


    • #3
      Sorry, habe mich wohl etwas seltsam ausgedrückt .
      Also in der DrobDown Leiste steht der Primärschlüssel(Nr) als value, der wird auch korrekt übergeben. Aber Wert "Kurs" leider nicht.
      Es gibt auch keine Fehlermeldung.

      mfg
      darky999

      Kommentar


      • #4
        woher soll er auch den wert haben du liest doch nur den key aus
        PHP-Code:
          foreach($arr[0] as $value)
                    {
                      echo 
        "<option value=".$value.">".$value."</option>\n";
                    } 
        vielleicht sollte es so gehn damit auch das value ausgelesen wird
        PHP-Code:
          foreach($arr[0] as $key => $value)
                    {
                      echo 
        "<option value=".$key.">".$value."</option>\n";
                    } 
        Ein Barmer ist kein Armer !!!

        Kommentar


        • #5
          Danke erstmal, aber leider klappt das so auch nicht.

          Wie gesagt, ich möchte sowohl "Nr" als auch "Kurs" übergeben. Die "Nr" suche ich mit der DropDown Leiste aus, und im Hintergrund soll das formular den entsprechenden "Kurs" raussuchen und hinzufügen.

          mfg
          darky999

          Kommentar


          • #6
            mh dann mach das doch so

            echo "<option value='".$key."|".$value."'>".$value."</option>\n"

            musst es dann nur in deine function neuerdatensatz(...)

            wieder trennen oder habe ich dich immernoch falsch verstanden
            Ein Barmer ist kein Armer !!!

            Kommentar


            • #7
              Vielleicht eine etwas dumme Frage, aber was ist $key überhaupt für eine Variable? Und wie trenne ich die das dann wieder? Sorry, ich mach erst seit 2-3 Wochen was mit PHP und MySQL

              SCHKursreihe sieht so aus:

              Nr Kurse
              1 101
              2 102
              3 103
              4 120
              5 105

              Und wenn ich in der DropDown Leiste "4" auswähle, soll im Hintergrund die Variable für Kurse(also 120) mit übermittelt werden.

              mfg
              darksaber999

              Kommentar


              • #8
                Wenn du dir sicher bist, dass es $arr[0] im foreach sein soll und nicht $arr, dann machst du das zum Beispiel so:
                PHP-Code:
                foreach($arr[0] as $key => $value)
                {
                    echo 
                "<option value=".$key.$div.$value.">".$value."</option>\n";

                wobei $div ein Trennzeichen ist, dass nie in Nr bzw. Kurs vorkommt und $key der Key das Arrayeintrags $value. RTFM(foreach);

                Mal was anderes: Du hast eine Tabelle SCHKursreihe mit

                Nr Kurse Foo
                1 101 bar
                2 120 null
                ...

                und der User soll über o.g. Formular Kurse zu seinen Terminen hinzufügen können. Dazu hast du eine Tabelle SCHTermine mit

                Nr Kurse Blah
                4 400 blub
                1 101 blab
                ...

                Brauchst du SCHTermine.Kurse unbedingt? Kannst du das nicht über einen JOIN mit SCHKursreihe bekommen? Dann brauchst du im Formular nämlich auch nur noch einen Wert übergeben.

                Kommentar


                • #9
                  Danke erstmal an auch beide!
                  Aber ein kleine Frage habe ich da noch

                  Als Value übergebe ich jetzt "$key" und "$value", wie kann ich die dann wieder trennen, so dass ich beide Werte nutzen kann

                  btw: $arr[0] ist für "Nr" und $arr[2] ist für "Kurs"

                  mfg
                  darksaber999

                  Kommentar


                  • #10
                    Dann bist du eh auf'm falschen Dampfer. Wenn $arr[0] die Nr und $arr[2] der Kurs ist, dann muß $arr selbst Element eines Arrays sein, damit hier was mit foreach geht.

                    Beispiel:
                    PHP-Code:
                    $super_arr = array(
                      array(
                    '1''foo''101'),
                      array(
                    '2''bar''120'),
                      ...
                    );

                    foreach (
                    $super_arr as $arr)
                    {
                        echo 
                    "<option value=".$arr[0].$div.$arr[2].">".$arr[2]."</option>\n";

                    Nach der Übergabe nimmst du es mit explode($div, $_POST['kursreihe']) auseinander.

                    Ich weise aber nochmals darauf hin, dass deine DB schlecht designed ist und du außerdem http://www.php.net/manual/en/control...es.foreach.php lesen solltest.

                    Kommentar


                    • #11
                      Das Array rufe ich auch aus einer Class auf. Ich poste einfach mal den Code dazu:
                      PHP-Code:
                          function listen_arr($auswahl){
                            if (!
                      $auswahl)
                              
                      $sql "select * from ".$this->tbname" order by " Nr ." asc" ;
                            else
                              
                      $sql "select * from ".$this->tbname." where nr = $auswahl;

                            if (
                      $this->debug)
                              echo 
                      $sql."<br>" ;

                            
                      $this->result mysql_query$sql ) or
                                 die ( 
                      "Fehler bei der Abfrage: ".mysql_error() );

                            while (
                      $arr $this->fetch_row()){
                                
                      $res[0] = array_merge$res[0], $arr[0] ) ;
                                
                      $res[2] = array_merge$res[2], $arr[2] );
                              }

                            return ( 
                      $res ) ;

                          } 

                      Kommentar


                      • #12
                        Lass dir mal ausgeben, was listen_arr() zurückgibt.

                        Kommentar


                        • #13
                          Der gibt nur folgendes aus:

                          PHP-Code:
                          echo "Liste: $kursreihe->listen_arr($auswahl)<p>\n"
                          Array

                          Das finde ich jetzt zumindest komisch

                          mfg
                          darksaber999

                          Kommentar


                          • #14
                            Arrays gibt man so auch nicht aus. Versuchs mit
                            PHP-Code:
                            echo "<pre>";
                            print_r($kursreihe->listen_arr($auswahl));
                            echo 
                            "</pre>"
                            Wundern wirst du dich dann aber immernoch.

                            Kommentar


                            • #15
                              Oh, sorry bin halt dumm

                              jetzt gibt der mir folgendes aus:

                              Array
                              (
                              [0] => Array
                              (
                              [0] => 1
                              [1] => 2
                              [2] => 3
                              [3] => 4
                              [4] => 5
                              )

                              [2] => Array
                              (
                              [0] => 101
                              [1] => 102
                              [2] => 103
                              [3] => 120
                              [4] => 105
                              )

                              )

                              Das sind die richtigen Angaben richtig.

                              Kommentar

                              Lädt...
                              X