当前位置: 首页>>代码示例>>PHP>>正文


PHP PMA_Table::countRecords方法代码示例

本文整理汇总了PHP中PMA_Table::countRecords方法的典型用法代码示例。如果您正苦于以下问题:PHP PMA_Table::countRecords方法的具体用法?PHP PMA_Table::countRecords怎么用?PHP PMA_Table::countRecords使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PMA_Table的用法示例。


在下文中一共展示了PMA_Table::countRecords方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: PMA_getTableList

/**
 * returns array with tables of given db with extended information and grouped
 *
 * @uses    $cfg['LeftFrameTableSeparator']
 * @uses    $cfg['LeftFrameTableLevel']
 * @uses    $cfg['ShowTooltipAliasTB']
 * @uses    $cfg['NaturalOrder']
 * @uses    PMA_backquote()
 * @uses    count()
 * @uses    array_merge
 * @uses    uksort()
 * @uses    strstr()
 * @uses    explode()
 * @param   string  $db     name of db
 * @param   string  $tables name of tables
 * @param   integer $limit_offset   list offset
 * @param   integer $limit_count    max tables to return
 * return   array   (recursive) grouped table list
 */
function PMA_getTableList($db, $tables = null, $limit_offset = 0, $limit_count = false)
{
    $sep = $GLOBALS['cfg']['LeftFrameTableSeparator'];
    if (null === $tables) {
        $tables = PMA_DBI_get_tables_full($db, false, false, null, $limit_offset, $limit_count);
        if ($GLOBALS['cfg']['NaturalOrder']) {
            uksort($tables, 'strnatcasecmp');
        }
    }
    if (count($tables) < 1) {
        return $tables;
    }
    $default = array('Name' => '', 'Rows' => 0, 'Comment' => '', 'disp_name' => '');
    $table_groups = array();
    // for blobstreaming - list of blobstreaming tables - rajk
    // load PMA configuration
    $PMA_Config = $_SESSION['PMA_Config'];
    // if PMA configuration exists
    if (!empty($PMA_Config)) {
        $session_bs_tables = $_SESSION['PMA_Config']->get('BLOBSTREAMING_TABLES');
    }
    foreach ($tables as $table_name => $table) {
        // if BS tables exist
        if (isset($session_bs_tables)) {
            // compare table name to tables in list of blobstreaming tables
            foreach ($session_bs_tables as $table_key => $table_val) {
                // if table is in list, skip outer foreach loop
                if ($table_name == $table_key) {
                    continue 2;
                }
            }
        }
        // check for correct row count
        if (null === $table['Rows']) {
            // Do not check exact row count here,
            // if row count is invalid possibly the table is defect
            // and this would break left frame;
            // but we can check row count if this is a view or the
            // information_schema database
            // since PMA_Table::countRecords() returns a limited row count
            // in this case.
            // set this because PMA_Table::countRecords() can use it
            $tbl_is_view = PMA_Table::isView($db, $table['Name']);
            if ($tbl_is_view || 'information_schema' == $db) {
                $table['Rows'] = PMA_Table::countRecords($db, $table['Name'], $return = true);
            }
        }
        // in $group we save the reference to the place in $table_groups
        // where to store the table info
        if ($GLOBALS['cfg']['LeftFrameDBTree'] && $sep && strstr($table_name, $sep)) {
            $parts = explode($sep, $table_name);
            $group =& $table_groups;
            $i = 0;
            $group_name_full = '';
            while ($i < count($parts) - 1 && $i < $GLOBALS['cfg']['LeftFrameTableLevel']) {
                $group_name = $parts[$i] . $sep;
                $group_name_full .= $group_name;
                if (!isset($group[$group_name])) {
                    $group[$group_name] = array();
                    $group[$group_name]['is' . $sep . 'group'] = true;
                    $group[$group_name]['tab' . $sep . 'count'] = 1;
                    $group[$group_name]['tab' . $sep . 'group'] = $group_name_full;
                } elseif (!isset($group[$group_name]['is' . $sep . 'group'])) {
                    $table = $group[$group_name];
                    $group[$group_name] = array();
                    $group[$group_name][$group_name] = $table;
                    unset($table);
                    $group[$group_name]['is' . $sep . 'group'] = true;
                    $group[$group_name]['tab' . $sep . 'count'] = 1;
                    $group[$group_name]['tab' . $sep . 'group'] = $group_name_full;
                } else {
                    $group[$group_name]['tab' . $sep . 'count']++;
                }
                $group =& $group[$group_name];
                $i++;
            }
        } else {
            if (!isset($table_groups[$table_name])) {
                $table_groups[$table_name] = array();
            }
            $group =& $table_groups;
//.........这里部分代码省略.........
开发者ID:alecbenson,项目名称:TurnoutWeb-Patches,代码行数:101,代码来源:common.lib.php

示例2: PMA_calculatePosForLastPage

/**
 * Function to calculate new pos if pos is higher than number of rows
 * of displayed table
 *
 * @param String   $db    Database name
 * @param String   $table Table name
 * @param Int|null $pos   Initial position
 *
 * @return Int Number of pos to display last page
 */
function PMA_calculatePosForLastPage($db, $table, $pos)
{
    if (null === $pos) {
        $pos = $_SESSION['tmpval']['pos'];
    }
    $unlim_num_rows = PMA_Table::countRecords($db, $table, true);
    //If position is higher than number of rows
    if ($unlim_num_rows <= $pos && 0 != $pos) {
        $pos = PMA_getStartPosToDisplayRow($unlim_num_rows);
    }
    return $pos;
}
开发者ID:harryboulderdash,项目名称:PlayGFC,代码行数:22,代码来源:sql.lib.php

示例3: _setDisplayParts


//.........这里部分代码省略.........
         $displayParts['nav_bar'] = (string) '0';
         $displayParts['ins_row'] = (string) '0';
         $displayParts['bkm_form'] = (string) '1';
         if ($this->__get('is_maint')) {
             $displayParts['text_btn'] = (string) '1';
         } else {
             $displayParts['text_btn'] = (string) '0';
         }
         $displayParts['pview_lnk'] = (string) '1';
     } elseif ($this->__get('is_show')) {
         // 2.2 Statement is a "SHOW..."
         /**
          * 2.2.1
          * @todo defines edit/delete links depending on show statement
          */
         preg_match('@^SHOW[[:space:]]+(VARIABLES|(FULL[[:space:]]+)?' . 'PROCESSLIST|STATUS|TABLE|GRANTS|CREATE|LOGS|DATABASES|FIELDS' . ')@i', $this->__get('sql_query'), $which);
         $bIsProcessList = isset($which[1]);
         if ($bIsProcessList) {
             $str = ' ' . strtoupper($which[1]);
             $bIsProcessList = $bIsProcessList && strpos($str, 'PROCESSLIST') > 0;
         }
         if ($bIsProcessList) {
             // no edit link
             $displayParts['edit_lnk'] = self::NO_EDIT_OR_DELETE;
             // "kill process" type edit link
             $displayParts['del_lnk'] = self::KILL_PROCESS;
         } else {
             // Default case -> no links
             // no edit link
             $displayParts['edit_lnk'] = self::NO_EDIT_OR_DELETE;
             // no delete link
             $displayParts['del_lnk'] = self::NO_EDIT_OR_DELETE;
         }
         unset($bIsProcessList);
         // 2.2.2 Other settings
         $displayParts['sort_lnk'] = (string) '0';
         $displayParts['nav_bar'] = (string) '0';
         $displayParts['ins_row'] = (string) '0';
         $displayParts['bkm_form'] = (string) '1';
         $displayParts['text_btn'] = (string) '1';
         $displayParts['pview_lnk'] = (string) '1';
     } else {
         // 2.3 Other statements (ie "SELECT" ones) -> updates
         //     $displayParts['edit_lnk'], $displayParts['del_lnk'] and
         //     $displayParts['text_btn'] (keeps other default values)
         $prev_table = '';
         $displayParts['text_btn'] = (string) '1';
         for ($i = 0; $i < $this->__get('fields_cnt'); $i++) {
             $is_link = $displayParts['edit_lnk'] != self::NO_EDIT_OR_DELETE || $displayParts['del_lnk'] != self::NO_EDIT_OR_DELETE || $displayParts['sort_lnk'] != '0' || $displayParts['ins_row'] != '0';
             // 2.3.2 Displays edit/delete/sort/insert links?
             if ($is_link && $prev_table != '' && $fields_meta[$i]->table != '' && $fields_meta[$i]->table != $prev_table) {
                 // don't display links
                 $displayParts['edit_lnk'] = self::NO_EDIT_OR_DELETE;
                 $displayParts['del_lnk'] = self::NO_EDIT_OR_DELETE;
                 /**
                  * @todo May be problematic with same field names
                  * in two joined table.
                  */
                 // $displayParts['sort_lnk'] = (string) '0';
                 $displayParts['ins_row'] = (string) '0';
                 if ($displayParts['text_btn'] == '1') {
                     break;
                 }
             }
             // end if (2.3.2)
             // 2.3.3 Always display print view link
             $displayParts['pview_lnk'] = (string) '1';
             if ($fields_meta[$i]->table != '') {
                 $prev_table = $fields_meta[$i]->table;
             }
         }
         // end for
     }
     // end if..elseif...else (2.1 -> 2.3)
     // 3. Gets the total number of rows if it is unknown
     if (isset($unlim_num_rows) && $unlim_num_rows != '') {
         $the_total = $unlim_num_rows;
     } elseif (($displayParts['nav_bar'] == '1' || $displayParts['sort_lnk'] == '1') && (mb_strlen($db) && !empty($table))) {
         $the_total = PMA_Table::countRecords($db, $table);
     }
     // if for COUNT query, number of rows returned more than 1 (may be being used GROUP BY)
     if ($this->__get('is_count') && isset($num_rows) && $num_rows > 1) {
         $displayParts['nav_bar'] = (string) '1';
         $displayParts['sort_lnk'] = (string) '1';
     }
     // 4. If navigation bar or sorting fields names URLs should be
     //    displayed but there is only one row, change these settings to
     //    false
     if ($displayParts['nav_bar'] == '1' || $displayParts['sort_lnk'] == '1') {
         // - Do not display sort links if less than 2 rows.
         // - For a VIEW we (probably) did not count the number of rows
         //   so don't test this number here, it would remove the possibility
         //   of sorting VIEW results.
         if (isset($unlim_num_rows) && $unlim_num_rows < 2 && !PMA_Table::isView($db, $table)) {
             $displayParts['sort_lnk'] = (string) '0';
         }
     }
     // end if (3)
     return $displayParts;
 }
开发者ID:nkeat12,项目名称:dv,代码行数:101,代码来源:DisplayResults.class.php

示例4: PMA_getTableList

/**
 * returns array with tables of given db with extended information and grouped
 *
 * @param string   $db           name of db
 * @param string   $tables       name of tables
 * @param integer  $limit_offset list offset
 * @param int|bool $limit_count  max tables to return
 *
 * @return  array    (recursive) grouped table list
 */
function PMA_getTableList($db, $tables = null, $limit_offset = 0, $limit_count = false)
{
    $sep = $GLOBALS['cfg']['LeftFrameTableSeparator'];
    if (null === $tables) {
        $tables = PMA_DBI_get_tables_full($db, false, false, null, $limit_offset, $limit_count);
        if ($GLOBALS['cfg']['NaturalOrder']) {
            uksort($tables, 'strnatcasecmp');
        }
    }
    if (count($tables) < 1) {
        return $tables;
    }
    $default = array('Name' => '', 'Rows' => 0, 'Comment' => '', 'disp_name' => '');
    $table_groups = array();
    // for blobstreaming - list of blobstreaming tables
    // load PMA configuration
    $PMA_Config = $GLOBALS['PMA_Config'];
    foreach ($tables as $table_name => $table) {
        // if BS tables exist
        if (PMA_BS_IsHiddenTable($table_name)) {
            continue;
        }
        // check for correct row count
        if (null === $table['Rows']) {
            // Do not check exact row count here,
            // if row count is invalid possibly the table is defect
            // and this would break left frame;
            // but we can check row count if this is a view or the
            // information_schema database
            // since PMA_Table::countRecords() returns a limited row count
            // in this case.
            // set this because PMA_Table::countRecords() can use it
            $tbl_is_view = $table['TABLE_TYPE'] == 'VIEW';
            if ($tbl_is_view || PMA_is_system_schema($db)) {
                $table['Rows'] = PMA_Table::countRecords($db, $table['Name'], false, true);
            }
        }
        // in $group we save the reference to the place in $table_groups
        // where to store the table info
        if ($GLOBALS['cfg']['LeftFrameDBTree'] && $sep && strstr($table_name, $sep)) {
            $parts = explode($sep, $table_name);
            $group =& $table_groups;
            $i = 0;
            $group_name_full = '';
            $parts_cnt = count($parts) - 1;
            while ($i < $parts_cnt && $i < $GLOBALS['cfg']['LeftFrameTableLevel']) {
                $group_name = $parts[$i] . $sep;
                $group_name_full .= $group_name;
                if (!isset($group[$group_name])) {
                    $group[$group_name] = array();
                    $group[$group_name]['is' . $sep . 'group'] = true;
                    $group[$group_name]['tab' . $sep . 'count'] = 1;
                    $group[$group_name]['tab' . $sep . 'group'] = $group_name_full;
                } elseif (!isset($group[$group_name]['is' . $sep . 'group'])) {
                    $table = $group[$group_name];
                    $group[$group_name] = array();
                    $group[$group_name][$group_name] = $table;
                    unset($table);
                    $group[$group_name]['is' . $sep . 'group'] = true;
                    $group[$group_name]['tab' . $sep . 'count'] = 1;
                    $group[$group_name]['tab' . $sep . 'group'] = $group_name_full;
                } else {
                    $group[$group_name]['tab' . $sep . 'count']++;
                }
                $group =& $group[$group_name];
                $i++;
            }
        } else {
            if (!isset($table_groups[$table_name])) {
                $table_groups[$table_name] = array();
            }
            $group =& $table_groups;
        }
        if ($GLOBALS['cfg']['ShowTooltipAliasTB'] && $GLOBALS['cfg']['ShowTooltipAliasTB'] !== 'nested' && $table['Comment'] && $table['Comment'] != 'VIEW') {
            // switch tooltip and name
            $table['disp_name'] = $table['Comment'];
            $table['Comment'] = $table['Name'];
        } else {
            $table['disp_name'] = $table['Name'];
        }
        $group[$table_name] = array_merge($default, $table);
    }
    return $table_groups;
}
开发者ID:AmberWish,项目名称:laba_web,代码行数:94,代码来源:common.lib.php

示例5: _setDisplayParts

 /**
  * Defines the parts to display for the results of a SQL query
  *
  * @param array   $displayParts the parts to display (see a few
  *                              lines above for explanations)
  * @param integer &$the_total   the total number of rows returned by the SQL
  *                              query without any programmatically appended
  *                              LIMIT clause
  *                              (just a copy of $unlim_num_rows if it exists,
  *                              elsecomputed inside this function)
  *
  * @return array    an array with explicit indexes for all the display
  *                   elements
  *
  * @access  private
  *
  * @see     getTable()
  */
 private function _setDisplayParts($displayParts, &$the_total)
 {
     // 1. Following variables are needed for use in isset/empty or
     //    use with array indexes or safe use in foreach
     $db = $this->__get('db');
     $table = $this->__get('table');
     $unlim_num_rows = $this->__get('unlim_num_rows');
     $num_rows = $this->__get('num_rows');
     $printview = $this->__get('printview');
     // 2. Updates the display parts
     if ($printview == '1') {
         $displayParts = $this->_setDisplayPartsForPrintView($displayParts);
     } elseif ($this->__get('is_count') || $this->__get('is_analyse') || $this->__get('is_maint') || $this->__get('is_explain')) {
         $displayParts = $this->_setDisplayPartsForNonData($displayParts);
     } elseif ($this->__get('is_show')) {
         $displayParts = $this->_setDisplayPartsForShow($displayParts);
     } else {
         $displayParts = $this->_setDisplayPartsForSelect($displayParts);
     }
     // end if..elseif...else
     // 3. Gets the total number of rows if it is unknown
     if (isset($unlim_num_rows) && $unlim_num_rows != '') {
         $the_total = $unlim_num_rows;
     } elseif (($displayParts['nav_bar'] == '1' || $displayParts['sort_lnk'] == '1') && (mb_strlen($db) && !empty($table))) {
         $the_total = PMA_Table::countRecords($db, $table);
     }
     // if for COUNT query, number of rows returned more than 1
     // (may be being used GROUP BY)
     if ($this->__get('is_count') && isset($num_rows) && $num_rows > 1) {
         $displayParts['nav_bar'] = (string) '1';
         $displayParts['sort_lnk'] = (string) '1';
     }
     // 4. If navigation bar or sorting fields names URLs should be
     //    displayed but there is only one row, change these settings to
     //    false
     if ($displayParts['nav_bar'] == '1' || $displayParts['sort_lnk'] == '1') {
         // - Do not display sort links if less than 2 rows.
         // - For a VIEW we (probably) did not count the number of rows
         //   so don't test this number here, it would remove the possibility
         //   of sorting VIEW results.
         if (isset($unlim_num_rows) && $unlim_num_rows < 2 && !PMA_Table::isView($db, $table)) {
             $displayParts['sort_lnk'] = (string) '0';
         }
     }
     // end if (3)
     return $displayParts;
 }
开发者ID:hewenhao2008,项目名称:phpmyadmin,代码行数:65,代码来源:DisplayResults.class.php

示例6: foreach

         } else {
             $col_cand = $sg;
             // None of the candidates where in a where-clause
         }
     }
     // If our array of candidates has more than one member we'll just
     // find the smallest table.
     // Of course the actual query would be faster if we check for
     // the Criteria which gives the smallest result set in its table,
     // but it would take too much time to check this
     if (count($col_cand) > 1) {
         // Of course we only want to check each table once
         $checked_tables = $col_cand;
         foreach ($col_cand as $tab) {
             if ($checked_tables[$tab] != 1) {
                 $tsize[$tab] = PMA_Table::countRecords($db, $tab, true, false);
                 $checked_tables[$tab] = 1;
             }
             $csize[$tab] = $tsize[$tab];
         }
         asort($csize);
         reset($csize);
         $master = key($csize);
         // Smallest
     } else {
         reset($col_cand);
         $master = current($col_cand);
         // Only one single candidate
     }
 }
 // end if (exactly one where clause)
开发者ID:BGCX261,项目名称:zhe-project-agri-hg-to-git,代码行数:31,代码来源:db_qbe.php

示例7:

         // Merge or BerkleyDB table: Only row count is accurate.
         if ($is_show_stats) {
             $formatted_size = ' - ';
             $unit = '';
         }
         break;
         // for a view, the ENGINE is sometimes reported as null,
         // or on some servers it's reported as "SYSTEM VIEW"
     // for a view, the ENGINE is sometimes reported as null,
     // or on some servers it's reported as "SYSTEM VIEW"
     case null:
     case 'SYSTEM VIEW':
         // if table is broken, Engine is reported as null, so one more test
         if ($each_table['TABLE_TYPE'] == 'VIEW') {
             // countRecords() takes care of $cfg['MaxExactCountViews']
             $each_table['TABLE_ROWS'] = PMA_Table::countRecords($db, $each_table['TABLE_NAME'], $force_exact = true, $is_view = true);
             $table_is_view = true;
         }
         break;
     default:
         // Unknown table type.
         if ($is_show_stats) {
             $formatted_size = 'unknown';
             $unit = '';
         }
 }
 // end switch
 if (!PMA_Table::isMerge($db, $each_table['TABLE_NAME'])) {
     $sum_entries += $each_table['TABLE_ROWS'];
 }
 if (isset($each_table['Collation'])) {
开发者ID:bugyak,项目名称:phporadmin,代码行数:31,代码来源:db_structure.php

示例8: empty

 */
// lem9: we always show the foreign field in the drop-down; if a display
// field is defined, we show it besides the foreign field
$foreign_link = false;
if ($foreigners && isset($foreigners[$field])) {
    $foreigner = $foreigners[$field];
    $foreign_db = $foreigner['foreign_db'];
    $foreign_table = $foreigner['foreign_table'];
    $foreign_field = $foreigner['foreign_field'];
    // Count number of rows in the foreign table. Currently we do
    // not use a drop-down if more than 200 rows in the foreign table,
    // for speed reasons and because we need a better interface for this.
    //
    // We could also do the SELECT anyway, with a LIMIT, and ensure that
    // the current value of the field is one of the choices.
    $the_total = PMA_Table::countRecords($foreign_db, $foreign_table, TRUE);
    if (isset($override_total) && $override_total == true || $the_total < $cfg['ForeignKeyMaxLimit']) {
        // foreign_display can be FALSE if no display field defined:
        $foreign_display = PMA_getDisplayField($foreign_db, $foreign_table);
        $f_query_main = 'SELECT ' . PMA_backquote($foreign_field) . ($foreign_display == FALSE ? '' : ', ' . PMA_backquote($foreign_display));
        $f_query_from = ' FROM ' . PMA_backquote($foreign_db) . '.' . PMA_backquote($foreign_table);
        $f_query_filter = empty($foreign_filter) ? '' : ' WHERE ' . PMA_backquote($foreign_field) . ' LIKE "%' . PMA_sqlAddslashes($foreign_filter, TRUE) . '%"' . ($foreign_display == FALSE ? '' : ' OR ' . PMA_backquote($foreign_display) . ' LIKE "%' . PMA_sqlAddslashes($foreign_filter, TRUE) . '%"');
        $f_query_order = $foreign_display == FALSE ? '' : ' ORDER BY ' . PMA_backquote($foreign_table) . '.' . PMA_backquote($foreign_display);
        $f_query_limit = isset($foreign_limit) ? $foreign_limit : '';
        if (!empty($foreign_filter)) {
            $res = PMA_DBI_query('SELECT COUNT(*)' . $f_query_from . $f_query_filter);
            if ($res) {
                $the_total = PMA_DBI_fetch_value($res);
                @PMA_DBI_free_result($res);
            } else {
                $the_total = 0;
开发者ID:BGCX261,项目名称:zhe-project-agri-hg-to-git,代码行数:31,代码来源:get_foreign.lib.php

示例9: PMA_transformation_getOptions

                        include_once './libraries/transformations/' . $include_file;
                        if (function_exists('PMA_transformation_' . $transformfunction_name)) {
                            $transform_function = 'PMA_transformation_' . $transformfunction_name;
                            $transform_options = PMA_transformation_getOptions(isset($transformation['transformation_options']) ? $transformation['transformation_options'] : '');
                            $transform_options['wrapper_link'] = PMA_generate_common_url($_url_params);
                        }
                    }
                    $extra_data['transformations'][$cell_index] = $transform_function($column_data, $transform_options);
                }
            }
            // end of loop for each transformation cell
        }
        // end of loop for each $mime_map
    }
    /**Get the total row count of the table*/
    $extra_data['row_count'] = PMA_Table::countRecords($_REQUEST['db'], $_REQUEST['table']);
    $extra_data['sql_query'] = PMA_showMessage($message, $GLOBALS['display_query']);
    PMA_ajaxResponse($message, $message->isSuccess(), $extra_data);
}
if (isset($return_to_sql_query)) {
    $disp_query = $GLOBALS['sql_query'];
    $disp_message = $message;
    unset($message);
    $GLOBALS['sql_query'] = $return_to_sql_query;
}
$GLOBALS['js_include'][] = 'tbl_change.js';
// in case we call sql.php which needs those:
$GLOBALS['js_include'][] = 'jquery/jquery-ui-1.8.16.custom.js';
$active_page = $goto_include;
/**
 * If user asked for "and then Insert another new row" we have to remove
开发者ID:ping199143,项目名称:1ydb,代码行数:31,代码来源:tbl_replace.php

示例10: getTableList

 /**
  * returns array with tables of given db with extended information and grouped
  *
  * @param string   $db           name of db
  * @param string   $tables       name of tables
  * @param integer  $limit_offset list offset
  * @param int|bool $limit_count  max tables to return
  *
  * @return array    (recursive) grouped table list
  */
 public static function getTableList($db, $tables = null, $limit_offset = 0, $limit_count = false)
 {
     $sep = $GLOBALS['cfg']['NavigationTreeTableSeparator'];
     if ($tables === null) {
         $tables = $GLOBALS['dbi']->getTablesFull($db, false, false, null, $limit_offset, $limit_count);
         if ($GLOBALS['cfg']['NaturalOrder']) {
             uksort($tables, 'strnatcasecmp');
         }
     }
     if (count($tables) < 1) {
         return $tables;
     }
     $default = array('Name' => '', 'Rows' => 0, 'Comment' => '', 'disp_name' => '');
     $table_groups = array();
     foreach ($tables as $table_name => $table) {
         // check for correct row count
         if ($table['Rows'] === null) {
             // Do not check exact row count here,
             // if row count is invalid possibly the table is defect
             // and this would break left frame;
             // but we can check row count if this is a view or the
             // information_schema database
             // since PMA_Table::countRecords() returns a limited row count
             // in this case.
             // set this because PMA_Table::countRecords() can use it
             $tbl_is_view = $table['TABLE_TYPE'] == 'VIEW';
             if ($tbl_is_view || $GLOBALS['dbi']->isSystemSchema($db)) {
                 $table['Rows'] = PMA_Table::countRecords($db, $table['Name'], false, true);
             }
         }
         // in $group we save the reference to the place in $table_groups
         // where to store the table info
         if ($GLOBALS['cfg']['NavigationTreeEnableGrouping'] && $sep && strstr($table_name, $sep)) {
             $parts = explode($sep, $table_name);
             $group =& $table_groups;
             $i = 0;
             $group_name_full = '';
             $parts_cnt = count($parts) - 1;
             while ($i < $parts_cnt && $i < $GLOBALS['cfg']['NavigationTreeTableLevel']) {
                 $group_name = $parts[$i] . $sep;
                 $group_name_full .= $group_name;
                 if (!isset($group[$group_name])) {
                     $group[$group_name] = array();
                     $group[$group_name]['is' . $sep . 'group'] = true;
                     $group[$group_name]['tab' . $sep . 'count'] = 1;
                     $group[$group_name]['tab' . $sep . 'group'] = $group_name_full;
                 } elseif (!isset($group[$group_name]['is' . $sep . 'group'])) {
                     $table = $group[$group_name];
                     $group[$group_name] = array();
                     $group[$group_name][$group_name] = $table;
                     unset($table);
                     $group[$group_name]['is' . $sep . 'group'] = true;
                     $group[$group_name]['tab' . $sep . 'count'] = 1;
                     $group[$group_name]['tab' . $sep . 'group'] = $group_name_full;
                 } else {
                     $group[$group_name]['tab' . $sep . 'count']++;
                 }
                 $group =& $group[$group_name];
                 $i++;
             }
         } else {
             if (!isset($table_groups[$table_name])) {
                 $table_groups[$table_name] = array();
             }
             $group =& $table_groups;
         }
         $table['disp_name'] = $table['Name'];
         $group[$table_name] = array_merge($default, $table);
     }
     return $table_groups;
 }
开发者ID:JaRomero95,项目名称:dwes,代码行数:81,代码来源:Util.class.php

示例11: _getMasterTable

 /**
  * Provides the main table to form the LEFT JOIN clause
  *
  * @param array $all_tables           Tables involved in the search
  * @param array $all_columns          Columns involved in the search
  * @param array $where_clause_columns Columns having criteria where clause
  * @param array $where_clause_tables  Tables having criteria where clause
  *
  * @return string table name
  */
 private function _getMasterTable($all_tables, $all_columns, $where_clause_columns, $where_clause_tables)
 {
     if (count($where_clause_tables) == 1) {
         // If there is exactly one column that has a decent where-clause
         // we will just use this
         $master = key($where_clause_tables);
         return $master;
     }
     // Now let's find out which of the tables has an index
     // (When the control user is the same as the normal user
     // because he is using one of his databases as pmadb,
     // the last db selected is not always the one where we need to work)
     $candidate_columns = $this->_getLeftJoinColumnCandidates($all_tables, $all_columns, $where_clause_columns);
     // Generally, we need to display all the rows of foreign (referenced)
     // table, whether they have any matching row in child table or not.
     // So we select candidate tables which are foreign tables.
     $foreign_tables = array();
     foreach ($candidate_columns as $one_table) {
         $foreigners = PMA_getForeigners($this->_db, $one_table);
         foreach ($foreigners as $key => $foreigner) {
             if ($key != 'foreign_keys_data') {
                 if (in_array($foreigner['foreign_table'], $candidate_columns)) {
                     $foreign_tables[$foreigner['foreign_table']] = $foreigner['foreign_table'];
                 }
                 continue;
             }
             foreach ($foreigner as $one_key) {
                 if (in_array($one_key['ref_table_name'], $candidate_columns)) {
                     $foreign_tables[$one_key['ref_table_name']] = $one_key['ref_table_name'];
                 }
             }
         }
     }
     if (count($foreign_tables)) {
         $candidate_columns = $foreign_tables;
     }
     // If our array of candidates has more than one member we'll just
     // find the smallest table.
     // Of course the actual query would be faster if we check for
     // the Criteria which gives the smallest result set in its table,
     // but it would take too much time to check this
     if (!(count($candidate_columns) > 1)) {
         reset($candidate_columns);
         $master = current($candidate_columns);
         // Only one single candidate
         return $master;
     }
     // Of course we only want to check each table once
     $checked_tables = $candidate_columns;
     $tsize = array();
     $csize = array();
     foreach ($candidate_columns as $table) {
         if ($checked_tables[$table] != 1) {
             $tsize[$table] = PMA_Table::countRecords($this->_db, $table, false);
             $checked_tables[$table] = 1;
         }
         $csize[$table] = $tsize[$table];
     }
     arsort($csize);
     reset($csize);
     $master = key($csize);
     // Largest
     return $master;
 }
开发者ID:mercysmart,项目名称:naikelas,代码行数:74,代码来源:DBQbe.class.php

示例12: _setDisplayMode


//.........这里部分代码省略.........
             //     "CHECK/ANALYZE/REPAIR/OPTIMIZE", an "EXPLAIN" one or
             //     contains a "PROC ANALYSE" part
             $do_display['edit_lnk'] = self::NO_EDIT_OR_DELETE;
             // no edit link
             $do_display['del_lnk'] = self::NO_EDIT_OR_DELETE;
             // no delete link
             $do_display['sort_lnk'] = (string) '0';
             $do_display['nav_bar'] = (string) '0';
             $do_display['ins_row'] = (string) '0';
             $do_display['bkm_form'] = (string) '1';
             if ($this->__get('_is_maint')) {
                 $do_display['text_btn'] = (string) '1';
             } else {
                 $do_display['text_btn'] = (string) '0';
             }
             $do_display['pview_lnk'] = (string) '1';
         } elseif ($this->__get('_is_show')) {
             // 2.2 Statement is a "SHOW..."
             /**
              * 2.2.1
              * @todo defines edit/delete links depending on show statement
              */
             $tmp = preg_match('@^SHOW[[:space:]]+(VARIABLES|(FULL[[:space:]]+)?' . 'PROCESSLIST|STATUS|TABLE|GRANTS|CREATE|LOGS|DATABASES|FIELDS' . ')@i', $this->__get('_sql_query'), $which);
             if (isset($which[1]) && strpos(' ' . strtoupper($which[1]), 'PROCESSLIST') > 0) {
                 // no edit link
                 $do_display['edit_lnk'] = self::NO_EDIT_OR_DELETE;
                 // "kill process" type edit link
                 $do_display['del_lnk'] = self::KILL_PROCESS;
             } else {
                 // Default case -> no links
                 // no edit link
                 $do_display['edit_lnk'] = self::NO_EDIT_OR_DELETE;
                 // no delete link
                 $do_display['del_lnk'] = self::NO_EDIT_OR_DELETE;
             }
             // 2.2.2 Other settings
             $do_display['sort_lnk'] = (string) '0';
             $do_display['nav_bar'] = (string) '0';
             $do_display['ins_row'] = (string) '0';
             $do_display['bkm_form'] = (string) '1';
             $do_display['text_btn'] = (string) '1';
             $do_display['pview_lnk'] = (string) '1';
         } else {
             // 2.3 Other statements (ie "SELECT" ones) -> updates
             //     $do_display['edit_lnk'], $do_display['del_lnk'] and
             //     $do_display['text_btn'] (keeps other default values)
             $prev_table = $fields_meta[0]->table;
             $do_display['text_btn'] = (string) '1';
             for ($i = 0; $i < $this->__get('_fields_cnt'); $i++) {
                 $is_link = $do_display['edit_lnk'] != self::NO_EDIT_OR_DELETE || $do_display['del_lnk'] != self::NO_EDIT_OR_DELETE || $do_display['sort_lnk'] != '0' || $do_display['ins_row'] != '0';
                 // 2.3.2 Displays edit/delete/sort/insert links?
                 if ($is_link && ($fields_meta[$i]->table == '' || $fields_meta[$i]->table != $prev_table)) {
                     // don't display links
                     $do_display['edit_lnk'] = self::NO_EDIT_OR_DELETE;
                     $do_display['del_lnk'] = self::NO_EDIT_OR_DELETE;
                     /**
                      * @todo May be problematic with same field names
                      * in two joined table.
                      */
                     // $do_display['sort_lnk'] = (string) '0';
                     $do_display['ins_row'] = (string) '0';
                     if ($do_display['text_btn'] == '1') {
                         break;
                     }
                 }
                 // end if (2.3.2)
                 // 2.3.3 Always display print view link
                 $do_display['pview_lnk'] = (string) '1';
                 $prev_table = $fields_meta[$i]->table;
             }
             // end for
         }
         // end if..elseif...else (2.1 -> 2.3)
     }
     // end if (2)
     // 3. Gets the total number of rows if it is unknown
     if (isset($unlim_num_rows) && $unlim_num_rows != '') {
         $the_total = $unlim_num_rows;
     } elseif (($do_display['nav_bar'] == '1' || $do_display['sort_lnk'] == '1') && (strlen($db) && !empty($table))) {
         $the_total = PMA_Table::countRecords($db, $table);
     }
     // 4. If navigation bar or sorting fields names URLs should be
     //    displayed but there is only one row, change these settings to
     //    false
     if ($do_display['nav_bar'] == '1' || $do_display['sort_lnk'] == '1') {
         // - Do not display sort links if less than 2 rows.
         // - For a VIEW we (probably) did not count the number of rows
         //   so don't test this number here, it would remove the possibility
         //   of sorting VIEW results.
         if (isset($unlim_num_rows) && $unlim_num_rows < 2 && !PMA_Table::isView($db, $table)) {
             // force display of navbar for vertical/horizontal display-choice.
             // $do_display['nav_bar']  = (string) '0';
             $do_display['sort_lnk'] = (string) '0';
         }
     }
     // end if (3)
     // 5. Updates the synthetic var
     $the_disp_mode = join('', $do_display);
     return $do_display;
 }
开发者ID:rajatsinghal,项目名称:phpmyadmin,代码行数:101,代码来源:DisplayResults.class.php

示例13: getTableHtmlForMultipleQueries

/**
 * Generate table html when SQL statement have multiple queries
 * which return displayable results
 *
 * @param PMA_DisplayResults $displayResultsObject object
 * @param string             $db                   database name
 * @param array              $sql_data             information about SQL statement
 * @param string             $goto                 URL to go back in case of errors
 * @param string             $pmaThemeImage        path for theme images directory
 * @param string             $text_dir             text direction
 * @param string             $printview            whether printview is enabled
 * @param string             $url_query            URL query
 * @param array              $disp_mode            the display mode
 * @param string             $sql_limit_to_append  limit clause
 * @param bool               $editable             whether result set is editable
 *
 * @return string   $table_html   html content
 */
function getTableHtmlForMultipleQueries($displayResultsObject, $db, $sql_data, $goto, $pmaThemeImage, $text_dir, $printview, $url_query, $disp_mode, $sql_limit_to_append, $editable)
{
    $table_html = '';
    $tables_array = PMA_DBI_get_tables($db);
    $databases_array = PMA_DBI_get_databases_full();
    $multi_sql = implode(";", $sql_data['valid_sql']);
    $querytime_before = array_sum(explode(' ', microtime()));
    // Assignment for variable is not needed since the results are
    // looiping using the connection
    @PMA_DBI_try_multi_query($multi_sql);
    $querytime_after = array_sum(explode(' ', microtime()));
    $querytime = $querytime_after - $querytime_before;
    $sql_no = 0;
    do {
        $analyzed_sql = array();
        $is_affected = false;
        $result = PMA_DBI_store_result();
        $fields_meta = $result !== false ? PMA_DBI_get_fields_meta($result) : array();
        $fields_cnt = count($fields_meta);
        // Initialize needed params related to each query in multiquery statement
        if (isset($sql_data['valid_sql'][$sql_no])) {
            // 'Use' query can change the database
            if (stripos($sql_data['valid_sql'][$sql_no], "use ")) {
                $db = PMA_getNewDatabase($sql_data['valid_sql'][$sql_no], $databases_array);
            }
            $parsed_sql = PMA_SQP_parse($sql_data['valid_sql'][$sql_no]);
            $table = PMA_getTableNameBySQL($sql_data['valid_sql'][$sql_no], $tables_array);
            $analyzed_sql = PMA_SQP_analyze($parsed_sql);
            $is_select = isset($analyzed_sql[0]['queryflags']['select_from']);
            $unlim_num_rows = PMA_Table::countRecords($db, $table, true);
            $showtable = PMA_Table::sGetStatusInfo($db, $table, null, true);
            $url_query = PMA_generate_common_url($db, $table);
            list($is_group, $is_func, $is_count, $is_export, $is_analyse, $is_explain, $is_delete, $is_affected, $is_insert, $is_replace, $is_show, $is_maint) = PMA_getDisplayPropertyParams($sql_data['valid_sql'][$sql_no], $is_select);
            // Handle remembered sorting order, only for single table query
            if ($GLOBALS['cfg']['RememberSorting'] && !($is_count || $is_export || $is_func || $is_analyse) && isset($analyzed_sql[0]['select_expr']) && count($analyzed_sql[0]['select_expr']) == 0 && isset($analyzed_sql[0]['queryflags']['select_from']) && count($analyzed_sql[0]['table_ref']) == 1) {
                PMA_handleSortOrder($db, $table, $analyzed_sql, $sql_data['valid_sql'][$sql_no]);
            }
            // Do append a "LIMIT" clause?
            if ($_SESSION['tmp_user_values']['max_rows'] != 'all' && !($is_count || $is_export || $is_func || $is_analyse) && isset($analyzed_sql[0]['queryflags']['select_from']) && !isset($analyzed_sql[0]['queryflags']['offset']) && empty($analyzed_sql[0]['limit_clause'])) {
                $sql_limit_to_append = ' LIMIT ' . $_SESSION['tmp_user_values']['pos'] . ', ' . $_SESSION['tmp_user_values']['max_rows'] . " ";
                $sql_data['valid_sql'][$sql_no] = PMA_getSqlWithLimitClause($sql_data['valid_sql'][$sql_no], $analyzed_sql, $sql_limit_to_append);
            }
            // Set the needed properties related to executing sql query
            $displayResultsObject->__set('db', $db);
            $displayResultsObject->__set('table', $table);
            $displayResultsObject->__set('goto', $goto);
        }
        if (!$is_affected) {
            $num_rows = $result ? @PMA_DBI_num_rows($result) : 0;
        } elseif (!isset($num_rows)) {
            $num_rows = @PMA_DBI_affected_rows();
        }
        if (isset($sql_data['valid_sql'][$sql_no])) {
            $displayResultsObject->__set('sql_query', $sql_data['valid_sql'][$sql_no]);
            $displayResultsObject->setProperties($unlim_num_rows, $fields_meta, $is_count, $is_export, $is_func, $is_analyse, $num_rows, $fields_cnt, $querytime, $pmaThemeImage, $text_dir, $is_maint, $is_explain, $is_show, $showtable, $printview, $url_query, $editable);
        }
        if ($num_rows == 0) {
            continue;
        }
        // With multiple results, operations are limied
        $disp_mode = 'nnnn000000';
        $is_limited_display = true;
        // Collect the tables
        $table_html .= $displayResultsObject->getTable($result, $disp_mode, $analyzed_sql, $is_limited_display);
        // Free the result to save the memory
        PMA_DBI_free_result($result);
        $sql_no++;
    } while (PMA_DBI_more_results() && PMA_DBI_next_result());
    return $table_html;
}
开发者ID:SashiAsakura,项目名称:AWS_QuikID_website,代码行数:88,代码来源:sql.php

示例14: PMA_getTableList

 /**
  * returns array with tables of given db with extended infomation and grouped
  *
  * @uses    $GLOBALS['cfg']['LeftFrameTableSeparator']
  * @uses    $GLOBALS['cfg']['LeftFrameTableLevel']
  * @uses    $GLOBALS['cfg']['ShowTooltipAliasTB']
  * @uses    $GLOBALS['cfg']['NaturalOrder']
  * @uses    PMA_DBI_fetch_result()
  * @uses    PMA_backquote()
  * @uses    count()
  * @uses    array_merge
  * @uses    uksort()
  * @uses    strstr()
  * @uses    explode()
  * @param   string  $db     name of db
  * return   array   (rekursive) grouped table list
  */
 function PMA_getTableList($db, $tables = null)
 {
     $sep = $GLOBALS['cfg']['LeftFrameTableSeparator'];
     if (null === $tables) {
         $tables = PMA_DBI_get_tables_full($db);
         if ($GLOBALS['cfg']['NaturalOrder']) {
             uksort($tables, 'strnatcasecmp');
         }
     }
     if (count($tables) < 1) {
         return $tables;
     }
     $default = array('Name' => '', 'Rows' => 0, 'Comment' => '', 'disp_name' => '');
     $table_groups = array();
     foreach ($tables as $table_name => $table) {
         // check for correct row count
         if (null === $table['Rows']) {
             // Do not check exact row count here,
             // if row count is invalid possibly the table is defect
             // and this would break left frame;
             // but we can check row count if this is a view,
             // since PMA_Table::countRecords() returns a limited row count
             // in this case.
             // set this because PMA_Table::countRecords() can use it
             $tbl_is_view = PMA_Table::isView($db, $table['Name']);
             if ($tbl_is_view) {
                 $table['Rows'] = PMA_Table::countRecords($db, $table['Name'], $return = true);
             }
         }
         // in $group we save the reference to the place in $table_groups
         // where to store the table info
         if ($GLOBALS['cfg']['LeftFrameDBTree'] && $sep && strstr($table_name, $sep)) {
             $parts = explode($sep, $table_name);
             $group =& $table_groups;
             $i = 0;
             $group_name_full = '';
             while ($i < count($parts) - 1 && $i < $GLOBALS['cfg']['LeftFrameTableLevel']) {
                 $group_name = $parts[$i] . $sep;
                 $group_name_full .= $group_name;
                 if (!isset($group[$group_name])) {
                     $group[$group_name] = array();
                     $group[$group_name]['is' . $sep . 'group'] = true;
                     $group[$group_name]['tab' . $sep . 'count'] = 1;
                     $group[$group_name]['tab' . $sep . 'group'] = $group_name_full;
                 } elseif (!isset($group[$group_name]['is' . $sep . 'group'])) {
                     $table = $group[$group_name];
                     $group[$group_name] = array();
                     $group[$group_name][$group_name] = $table;
                     unset($table);
                     $group[$group_name]['is' . $sep . 'group'] = true;
                     $group[$group_name]['tab' . $sep . 'count'] = 1;
                     $group[$group_name]['tab' . $sep . 'group'] = $group_name_full;
                 } else {
                     $group[$group_name]['tab' . $sep . 'count']++;
                 }
                 $group =& $group[$group_name];
                 $i++;
             }
         } else {
             if (!isset($table_groups[$table_name])) {
                 $table_groups[$table_name] = array();
             }
             $group =& $table_groups;
         }
         if ($GLOBALS['cfg']['ShowTooltipAliasTB'] && $GLOBALS['cfg']['ShowTooltipAliasTB'] !== 'nested') {
             // switch tooltip and name
             $table['Comment'] = $table['Name'];
             $table['disp_name'] = $table['Comment'];
         } else {
             $table['disp_name'] = $table['Name'];
         }
         $group[$table_name] = array_merge($default, $table);
     }
     return $table_groups;
 }
开发者ID:a195474368,项目名称:ejiawang,代码行数:92,代码来源:common.lib.php

示例15: isset

     $tbl_type = $GLOBALS['strView'];
     $show_comment = null;
 } else {
     $tbl_is_view = false;
     $tbl_type = isset($showtable['Type']) ? strtoupper($showtable['Type']) : '';
     // a new comment could be coming from tbl_operations.php
     // and we want to show it in the header
     if (isset($submitcomment) && isset($comment)) {
         $show_comment = $comment;
     } else {
         $show_comment = isset($showtable['Comment']) ? $showtable['Comment'] : '';
     }
 }
 $tbl_collation = empty($showtable['Collation']) ? '' : $showtable['Collation'];
 if (null === $showtable['Rows']) {
     $showtable['Rows'] = PMA_Table::countRecords($GLOBALS['db'], $showtable['Name'], true, true);
 }
 $table_info_num_rows = isset($showtable['Rows']) ? $showtable['Rows'] : 0;
 $auto_increment = isset($showtable['Auto_increment']) ? $showtable['Auto_increment'] : '';
 $create_options = isset($showtable['Create_options']) ? explode(' ', $showtable['Create_options']) : array();
 // export create options by its name as variables into gloabel namespace
 // f.e. pack_keys=1 becomes available as $pack_keys with value of '1'
 unset($pack_keys);
 foreach ($create_options as $each_create_option) {
     $each_create_option = explode('=', $each_create_option);
     if (isset($each_create_option[1])) {
         ${$each_create_option}[0] = $each_create_option[1];
     }
 }
 // we need explicit DEFAULT value here (different from '0')
 $pack_keys = !isset($pack_keys) || strlen($pack_keys) == 0 ? 'DEFAULT' : $pack_keys;
开发者ID:tmhaoge,项目名称:moped,代码行数:31,代码来源:tbl_info.inc.php


注:本文中的PMA_Table::countRecords方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。