diff --git a/js/sql.js b/js/sql.js
index 1444b1595..28c7287e5 100644
--- a/js/sql.js
+++ b/js/sql.js
@@ -784,6 +784,10 @@ $(document).ready(function() {
* @var relation_fields Array containing the name/value pairs of relational fields
*/
var relation_fields = {};
+ /**
+ * @var relational_display string 'K' if relational key, 'D' if relational display column
+ */
+ var relational_display = $("#relational_display_K").attr('checked') ? 'K' : 'D';
/**
* @var transform_fields Array containing the name/value pairs for transformed fields
*/
@@ -800,15 +804,16 @@ $(document).ready(function() {
var need_to_post = false;
- var new_clause='';
- var prev_index=-1;
+ var new_clause = '';
+ var prev_index = -1;
$input_siblings.each(function() {
/** @lends jQuery */
/**
* @var this_field Object referring to this field (
)
*/
- var $this_field = $(this);
+ var $this_field = $(this);
+
/**
* @var field_name String containing the name of this field.
* @see getFieldName()
@@ -861,7 +866,7 @@ $(document).ready(function() {
}
}
if(where_clause.indexOf(field_name) > prev_index){
- new_clause += '`'+window.parent.table+'`.'+'`' + field_name + "` = '"+this_field_params[field_name].replace(/'/g,"''")+"'"+' AND ';
+ new_clause += '`' + window.parent.table + '`.' + '`' + field_name + "` = '" + this_field_params[field_name].replace(/'/g,"''") + "'" + ' AND ';
}
if (this_field_params[field_name] != $this_field.data('original_data')) {
sql_query += ' `' + field_name + "`='" + this_field_params[field_name].replace(/'/g, "''") + "' , ";
@@ -876,8 +881,8 @@ $(document).ready(function() {
//Remove the last ',' appended in the above loop
sql_query = sql_query.replace(/,\s$/, '');
- new_clause=new_clause.substring(0,new_clause.length-5);
- new_clause=PMA_urlencode(new_clause);
+ new_clause = new_clause.substring(0, new_clause.length-5);
+ new_clause = PMA_urlencode(new_clause);
sql_query += ' WHERE ' + PMA_urldecode(where_clause);
/**
* @var rel_fields_list String, url encoded representation of {@link relations_fields}
@@ -890,8 +895,8 @@ $(document).ready(function() {
var transform_fields_list = $.param(transform_fields);
// if inline_edit is successful, we need to go back to default view
- var $del_hide=$(this).parent();
- var $chg_submit=$(this);
+ var $del_hide = $(this).parent();
+ var $chg_submit = $(this);
if (need_to_post) {
// Make the Ajax post after setting all parameters
@@ -909,6 +914,7 @@ $(document).ready(function() {
'rel_fields_list' : rel_fields_list,
'do_transformations' : transformation_fields,
'transform_fields_list' : transform_fields_list,
+ 'relational_display' : relational_display,
'goto' : 'sql.php',
'submit_type' : 'save'
};
@@ -917,10 +923,10 @@ $(document).ready(function() {
if(data.success == true) {
PMA_ajaxShowMessage(data.message);
if(disp_mode == 'vertical') {
- $this_td.parents('tbody').find('tr').find('.where_clause:nth('+this_td_index+')').attr('value',new_clause);
+ $this_td.parents('tbody').find('tr').find('.where_clause:nth(' + this_td_index + ')').attr('value', new_clause);
}
else {
- $this_td.parent('tr').find('.where_clause').attr('value',new_clause);
+ $this_td.parent('tr').find('.where_clause').attr('value', new_clause);
}
// remove possible previous feedback message
$('#result_query').remove();
@@ -1026,7 +1032,7 @@ function PMA_unInlineEditRow($del_hide, $chg_submit, $this_td, $input_siblings,
if (typeof data.relations != 'undefined') {
$.each(data.relations, function(key, value) {
if(key == field_name) {
- new_html = $(value).append(new_value);
+ new_html = $(value);
return false;
}
})
diff --git a/sql.php b/sql.php
index ce2f65fbd..e9373f2e3 100644
--- a/sql.php
+++ b/sql.php
@@ -654,6 +654,34 @@ if (0 == $num_rows || $is_affected) {
foreach( $rel_fields as $rel_field => $rel_field_value) {
$where_comparison = "='" . $rel_field_value . "'";
+ $display_field = PMA_getDisplayField($map[$rel_field]['foreign_db'], $map[$rel_field]['foreign_table']);
+
+ // Field to display from the foreign table?
+ if (isset($display_field) && strlen($display_field)) {
+ $dispsql = 'SELECT ' . PMA_backquote($display_field)
+ . ' FROM ' . PMA_backquote($map[$rel_field]['foreign_db'])
+ . '.' . PMA_backquote($map[$rel_field]['foreign_table'])
+ . ' WHERE ' . PMA_backquote($map[$rel_field]['foreign_field'])
+ . $where_comparison;
+ $dispresult = PMA_DBI_try_query($dispsql, null, PMA_DBI_QUERY_STORE);
+ if ($dispresult && PMA_DBI_num_rows($dispresult) > 0) {
+ list($dispval) = PMA_DBI_fetch_row($dispresult, 0);
+ } else {
+ //$dispval = __('Link not found');
+ }
+ @PMA_DBI_free_result($dispresult);
+ } else {
+ $dispval = '';
+ } // end if... else...
+
+ if ('K' == $_SESSION['tmp_user_values']['relational_display']) {
+ // user chose "relational key" in the display options, so
+ // the title contains the display field
+ $title = (! empty($dispval))? ' title="' . htmlspecialchars($dispval) . '"' : '';
+ } else {
+ $title = ' title="' . htmlspecialchars($rel_field_value) . '"';
+ }
+
$_url_params = array(
'db' => $map[$rel_field]['foreign_db'],
'table' => $map[$rel_field]['foreign_table'],
@@ -663,9 +691,18 @@ if (0 == $num_rows || $is_affected) {
. ' WHERE ' . PMA_backquote($map[$rel_field]['foreign_field'])
. $where_comparison
);
+ $output = '';
- $extra_data['relations'][$rel_field] = '';
- $extra_data['relations'][$rel_field] .= '';
+ if ('D' == $_SESSION['tmp_user_values']['relational_display']) {
+ // user chose "relational display field" in the
+ // display options, so show display field in the cell
+ $output .= (!empty($dispval)) ? htmlspecialchars($dispval) : '';
+ } else {
+ // otherwise display data in the cell
+ $output .= htmlspecialchars($rel_field_value);
+ }
+ $output .= '';
+ $extra_data['relations'][$rel_field] = $output;
}
}
|