function get_fk_lookups_data($tablename, $fk_lookups) { $lookups_data = array(); $fk_defs = get_foreignkeys($tablename, 'S'); foreach ($fk_defs as $colname => $defs) { // skip foreign keys with more than FKLOOKUP_ENTRIES values if (!isset($GLOBALS['s_tables'][$defs['table']]['count'])) { $GLOBALS['s_tables'][$defs['table']]['count'] = get_table_count($defs['table']); } if ($GLOBALS['s_tables'][$defs['table']]['count'] > FKLOOKUP_ENTRIES) { continue; } $value_field = ifsetor($fk_lookups[$colname], $defs['column']); if ($value_field != $defs['column']) { $value_field = "COALESCE(" . $value_field . ", '')" . " || ' - '" . ' || ' . $defs['column']; } $sql = 'SELECT ' . $defs['column'] . ', ' . $value_field . ' FROM ' . $defs['table'] . ' ORDER BY ' . $value_field . ' ASC'; $res = fbird_query($GLOBALS['dbhandle'], $sql) or ib_error(__FILE__, __LINE__, $sql); $data = array(); while ($row = fbird_fetch_row($res)) { $data[trim($row[0])] = trim($row[1]); } fbird_free_result($res); $lookups_data[$colname] = array('table' => $defs['table'], 'column' => $defs['column'], 'data' => $data); } return $lookups_data; }
} // for editing make sure that $s_wt[columns] contains the primary key fields if ($s_wt['edit']) { $add_primary = FALSE; foreach ($s_fields[$s_wt['table']] as $field) { if (isset($field['primary']) && $field['primary'] == 'Yes' && !in_array($field['name'], $wt['columns'])) { $s_wt['columns'][] = $field['name']; $add_primary = TRUE; } } if ($add_primary) { $message .= $MESSAGES['EDIT_ADD_PRIMARY']; } } // get foreign key definititions $s_wt['fks'] = get_foreignkeys($s_wt['table'], 'S'); // update the customize cookie $s_cust['wt'][$s_login['database']] = array('table' => $s_wt['table'], 'start' => $s_wt['start'], 'order' => $s_wt['order'], 'dir' => $s_wt['direction']); set_customize_cookie($s_cust); // cleanup the watchtable output buffer $s_watch_buffer = ''; } // deleting of a row is confirmed if (isset($_POST['confirm_yes'])) { if (preg_match('/row([0-9]+)/', $_POST['confirm_subject'], $matches)) { $instance = $matches[1]; $sql = $s_confirmations['row'][$instance]['sql']; @fbird_query($dbhandle, $sql) or $ib_error = fbird_errmsg(); remove_confirm($instance); // cleanup the watchtable output buffer $s_watch_buffer = '';