PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Problem mit Übergabe von Variablen mit 2 MySQL Tabellen (https://www.php-resource.de/forum/php-developer-forum/51968-problem-mit-ubergabe-von-variablen-mit-2-mysql-tabellen.html)

darksaber999 16-03-2005 10:56

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

vukodlac 16-03-2005 11:19

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

darksaber999 16-03-2005 11:22

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

vukodlac 16-03-2005 11:29

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";
            } 


darksaber999 16-03-2005 11:33

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

vukodlac 16-03-2005 11:40

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

darksaber999 16-03-2005 12:06

Vielleicht eine etwas dumme Frage, aber was ist $key überhaupt für eine Variable? :D 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

onemorenerd 16-03-2005 13:44

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.

darksaber999 16-03-2005 14:01

Danke erstmal an auch beide!
Aber ein kleine Frage habe ich da noch :rolleyes:

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

onemorenerd 16-03-2005 14:44

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.

darksaber999 16-03-2005 14:51

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 ) ;

    } 


onemorenerd 16-03-2005 15:14

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

darksaber999 16-03-2005 15:25

Der gibt nur folgendes aus:

PHP-Code:

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

Array

Das finde ich jetzt zumindest komisch :confused:

mfg
darksaber999

onemorenerd 16-03-2005 15:37

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. ;)

darksaber999 16-03-2005 15:43

Oh, sorry bin halt dumm :D

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
)

)

:confused: Das sind die richtigen Angaben richtig.


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:22 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG