mysql_fetch_assoc echo mit Variable?

  • Themenstarter Themenstarter di-five
  • Beginndatum Beginndatum
D

di-five

Hallo,

besteht die Möglichkeit in einem mysql_fetch_assoc echo eine Variable vor den Namen der Tabellenspalte zu stellen?

Das Problem ist, dass ich zwei Tabellen habe, und in der einen die Tabellenbezeichnung anders ist, als bei der anderen.

Also das man in einem mysql_query * von einer Variablen wo Spalte gleich Session ist auslesen kann finde ich ja schon richtig cool :-)

Hier mal ein Beispiel:

PHP:
<?php
    // kgn_name auslesen
    $kgn_name_ergebnis = mysql_query("SELECT kgn_name
                                        FROM kgn
                                       WHERE kgn_id = '$_GET[kgn_id]'");

    $kgn_name = mysql_fetch_assoc($kgn_name_ergebnis);

    // Kategorientabelle bestimmen
    if($_GET['kgn_id'] == '1')
    {
        $kgn = 'kgn_fn';
    }
    elseif($_GET['kgn_id'] == '2')
    {
        $kgn = 'kgn_ve';
    }
    else
    {
        $kgn    = 'kgn_gt';
        $kgn_gt = 'kgn_gt_test';
    }

    // Kategorientabelle auslesen
    $kgn_ergebnis = mysql_query("SELECT *
                                   FROM $kgn
                                  WHERE id = '$_SESSION[id]'");
?>

Jetzt möchte ich aber in einer while-Schleife die Namen der Kategorien ausgeben lassen. So weit bin ich schon:

PHP:
<?php
while($kgn = mysql_fetch_assoc($kgn_ergebnis))
{
echo $kgn[];
}
?>

Kann ich jetzt in dem echo $kgn[]-Teil irgendwie die $kgn mit einbauen, oder muss ich die Tabellenspalten in den beiden Tabellen gleich benennen?

Ich würde mich über eine Antwort freuen.

Gruß di-five
 
könntest du bitte mal die Struktur der Tabellen posten... so, wie du es beschrieben hast, wird man leider kaum schlau aus dem , was du willst.
 
Hi,

hier ist die Tabellenstruktur. Ich habe auch schon alle Tabellen in einer Tabelle gehabt, was auch funktioniert, nur da werden alle Daten aus allen Kategorien durcheinander geschmissen.

Code:
-- Tabellenstruktur für Tabelle `kgn`
-- 

CREATE TABLE `kgn` (
  `kgn_id` int(1) NOT NULL auto_increment,
  `kgn_name` varchar(255) collate latin1_general_ci NOT NULL,
  `kgn_status` int(1) NOT NULL,
  PRIMARY KEY  (`kgn_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ;

-- 
-- Daten für Tabelle `kgn`
-- 

INSERT INTO `kgn` VALUES (1, 'Kategorie 1', 1);
INSERT INTO `kgn` VALUES (2, 'Kategorie 2', 1);
INSERT INTO `kgn` VALUES (3, 'Kategorie 3', 1);

Code:
-- Tabellenstruktur für Tabelle `kgn_fn`
-- 

CREATE TABLE `kgn_fn` (
  `kgn_fn_id` int(5) NOT NULL auto_increment,
  `kgn_fn_name` varchar(255) collate latin1_general_ci NOT NULL,
  `kgn_fn_status` int(1) NOT NULL,
  `kgn_id` int(5) NOT NULL,
  PRIMARY KEY  (`kgn_fn_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=262 ;

-- 
-- Daten für Tabelle `kgn_fn`
-- 

INSERT INTO `kgn_fn` VALUES (1, 'Tee', 0, 1);
INSERT INTO `kgn_fn` VALUES (2, 'Kaffee', 0, 1);

Code:
-- Tabellenstruktur für Tabelle `kgn_gt`
-- 

CREATE TABLE `kgn_gt` (
  `kgn_gt_id` int(5) NOT NULL auto_increment,
  `kgn_gt_name` varchar(255) collate latin1_general_ci NOT NULL,
  `kgn_gt_status` int(1) NOT NULL,
  `kgn_id` int(5) NOT NULL,
  PRIMARY KEY  (`kgn_gt_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=26 ;

-- 
-- Daten für Tabelle `kgn_gt`
-- 

INSERT INTO `kgn_gt` VALUES (1, 'Monitore', 0, 3);
INSERT INTO `kgn_gt` VALUES (2, 'Fernseher', 0, 3);

Code:
-- Tabellenstruktur für Tabelle `kgn_gt_test`
-- 

CREATE TABLE `kgn_gt_test` (
  `kgn_gt_test_id` int(5) NOT NULL auto_increment,
  `kgn_gt_test_name` varchar(255) collate latin1_general_ci NOT NULL,
  `kgn_gt_test_status` int(1) NOT NULL,
  `kgn_gt_id` int(5) NOT NULL,
  `kgn_id` int(5) NOT NULL,
  PRIMARY KEY  (`kgn_gt_test_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=21 ;

-- 
-- Daten für Tabelle `kgn_gt_test`
-- 

INSERT INTO `kgn_gt_test` VALUES (1, 'Plastikflaschen', 0, 1, 3);
INSERT INTO `kgn_gt_test` VALUES (2, 'Glasflaschen', 0, 1, 3);

Code:
-- Tabellenstruktur für Tabelle `kgn_ve`
-- 

CREATE TABLE `kgn_ve` (
  `kgn_ve_id` int(5) NOT NULL auto_increment,
  `kgn_ve_name` varchar(255) collate latin1_general_ci NOT NULL,
  `kgn_ve_status` int(1) NOT NULL,
  `kgn_id` int(5) NOT NULL,
  PRIMARY KEY  (`kgn_ve_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=15 ;

-- 
-- Daten für Tabelle `kgn_ve`
-- 

INSERT INTO `kgn_ve` VALUES (1, 'Tische', 0, 2);
INSERT INTO `kgn_ve` VALUES (2, 'Stühle', 0, 2);

Die Frage ist jetzt ob ich in allen Tabellen nur kgn_id, kgn_name und kgn_status schreiben soll, oder ob es eine Möglichkeit gibt die $kgn oder ein anderer Name zum Beispiel $kgn_in_assoc in das mysql_fetch_assoc echo $kgn['name'] zum Beispiel so?: echo $kgn['$kgn' . '_' . 'name'] einzubauen.

Gruß di-five
 
Das sagt doch gleich mehr als 1000 Worte :-)

probiers mal so:
PHP:
<?php
 switch($_GET['kgn_id'])
  {
    case '1':
              $kgn = 'kgn_fn';
              break;
    case '2':
              $kgn = 'kgn_ve';
              break;
    default:
              $kgn = 'kgn_gt';
  }

$sql = mysql_query('SELECT * FROM '. $kgn .
                            'WHERE id = '   . $_SESSION[id]);
                            
                            
while($res = mysql_fetch_assoc($sql))
  {
    echo '<br>Kategorie:' . $res[$kgn . '_name'];
  }

?>
 
Zurück