diff --git a/libraries/display_tbl.lib.php3 b/libraries/display_tbl.lib.php3
index 125c4291b..d758ea349 100644
--- a/libraries/display_tbl.lib.php3
+++ b/libraries/display_tbl.lib.php3
@@ -923,11 +923,28 @@ if (!defined('PMA_DISPLAY_TBL_LIB_INCLUDED')){
} else if ($row[$pointer] != '') {
$vertical_display['data'][$row_no][$i] = '
';
if (isset($map[$meta->name])) {
+ // Field to display from the foreign table?
+ if (!empty($map[$meta->name][2])) {
+ $dispsql = 'SELECT ' . $map[$meta->name][2]
+ . ' FROM ' . PMA_backquote($map[$meta->name][0])
+ . ' WHERE ' . $map[$meta->name][1]
+ . ' = ' . $row[$pointer];
+ $dispresult = mysql_query($dispsql);
+ if (mysql_num_rows($dispresult) > 0) {
+ $disprow = mysql_fetch_row($dispresult);
+ $dispval = $disprow[0];
+ }
+ else {
+ $dispval = $GLOBALS['strLinkNotFound'];
+ }
+ }
+ $title = (!empty($dispval))? ' title="' . $dispval . '"': '';
+
$vertical_display['data'][$row_no][$i] .= ''
+ . '&sql_query=' . urlencode('SELECT * FROM ' . PMA_backquote($map[$meta->name][0]) . ' WHERE ' . $map[$meta->name][1] . ' = ' . $row[$pointer]) . '"' . $title . '>'
. $row[$pointer] . '';
} else {
$vertical_display['data'][$row_no][$i] .= $row[$pointer];
@@ -994,11 +1011,32 @@ if (!defined('PMA_DISPLAY_TBL_LIB_INCLUDED')){
}
$vertical_display['data'][$row_no][$i] = ' | ';
if (isset($map[$meta->name])) {
+
+ // Field to display from the foreign table?
+ if (!empty($map[$meta->name][2])) {
+ $dispsql = 'SELECT ' . $map[$meta->name][2]
+ . ' FROM ' . PMA_backquote($map[$meta->name][0])
+ . ' WHERE ' . $map[$meta->name][1]
+ . ' = \'' . $row[$pointer] . '\'';
+ $dispresult = @mysql_query($dispsql);
+ if (mysql_num_rows($dispresult) > 0) {
+ $disprow = mysql_fetch_row($dispresult);
+ $dispval = $disprow[0];
+ }
+ else {
+ $dispval = $GLOBALS['strLinkNotFound'];
+ }
+ }
+ else {
+ $dispval = '';
+ }
+ $title = (!empty($dispval))? ' title="' . $dispval . '"': '';
+
$vertical_display['data'][$row_no][$i] .= ''
+ . '&sql_query=' . urlencode('SELECT * FROM ' . PMA_backquote($map[$meta->name][0]) . ' WHERE ' . $map[$meta->name][1] . ' = \'' . PMA_sqlAddslashes($relation_id) . '\'') . '"' . $title . '>'
. $row[$pointer] . '';
} else {
$vertical_display['data'][$row_no][$i] .= $row[$pointer];
@@ -1321,13 +1359,14 @@ if (!defined('PMA_DISPLAY_TBL_LIB_INCLUDED')){
$target = eregi_replace('^.*[[:space:]]+FROM[[:space:]]+`?|`?[[:space:]]*(ON[[:space:]]+[^,]+)?(WHERE[[:space:]]+.*)?$', '', $sql_query);
$tabs = '(\'' . join('\',\'', split($pattern, $target)) . '\')';
- $local_query = 'SELECT master_field, foreign_table, foreign_field'
+ $local_query = 'SELECT master_field, foreign_table, foreign_field,'
+ . 'foreign_display_field'
. ' FROM ' . $cfg['Server']['relation']
. ' WHERE master_table IN ' . $tabs;
$result = @mysql_query($local_query);
if ($result) {
while ($rel = mysql_fetch_row($result)) {
- $map[$rel[0]] = array($rel[1], $rel[2]);
+ $map[$rel[0]] = array($rel[1], $rel[2], $rel[3]);
}
}
} // end 2b
|