0, 'Rows' => 1, 'Data_length' => 2, 'Auto_increment' => 3, 'Avg_row_length' => 4, 'Max_data_length' => 5, 'Comment' => 6, 'Row_format' => 7, 'Index_length' => 8, 'Data_free' => 9, 'Collation' => 10, 'Create_time' => 11, 'Update_time' => 12, 'Check_time' => 13, 'Create_options' => 14, 'Version' => 15, 'Engine' => 16, 'Checksum' => 17, ]; $byte_output = [ 'Data_length', 'Avg_row_length', 'Max_data_length', 'Index_length', 'Data_free', ]; function add_sortkey($name) { global $keysort; //echo "
Uebergeben: ".$name; if (array_key_exists($name, $keysort)) { $ret = $keysort[$name]; } else { $ret = 0; } return $ret; } //Data-View echo $aus.'

'.((1 == $showtables) ? $lang['L_SQL_TABLEVIEW'] : $lang['L_SQL_DATAVIEW']).'

'; if (0 == $showtables) { $p = 'sql.php?sql_statement='.urlencode($sql['sql_statement']).'&db='.$db.'&tablename='.$tablename.'&dbid='.$dbid.'&limitstart='.$limitstart.'&order='.urlencode($order).'&orderdir='.$orderdir.'&tdc='.$tdcompact; echo ''.$lang['L_SQL_RECORDNEW'].'    '; echo ''.$lang['L_SQL_EDIT_TABLESTRUCTURE'].''; } else { $p = 'sql.php?db='.$db.'&dbid='.$dbid.'&context=2'; echo ''.$lang['L_SQL_TABLENEW'].''; } //Statuszeile $tn = ExtractTablenameFromSQL($sql['sql_statement']); if ($databases['Name'][$dbid] != $databases['db_actual']) { // Table is located in a different databasse // switch the actual database $databases['db_actual'] = $databases['Name'][$dbid]; // refresh menu to switch to actual database echo ''; } echo '

'.('' != $tn ? $lang['L_TABLE'].' `'.$databases['db_actual'].'`.`'.$tn.'`
' : ''); if (isset($msg)) { echo $msg; } $numrowsabs = -1; $numrows = 0; // Vorgehensweise - es soll die Summe der Datensaetze ermittelt werden, wenn es kein LIMIT gibt, // um die Blaettern-Links korrekt anzuzeigen $skip_mysql_execution = false; if (0 == $sql_to_display_data) { //mehrere SQL-Statements $numrowsabs = $numrows = 0; MOD_DoSQL($sql['sql_statement']); echo SQLOutput($out); $skip_mysql_execution = true; } else { // auch alle Tabellen-Namen werden lowercase -> das kann zu Problemen fuehren // siehe https://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivity.html $sql_temp = strtolower($sql['sql_statement']); if ('select ' == substr($sql_temp, 0, 7)) { if (false !== strpos($sql_temp, ' limit ')) { // es wurde ein eigenes Limit im Query angegeben - eigene Berechnung abbrechen $numrowsabs = -1; } else { // anstatt sql_temp in lowerase hier das 'original' sql_statement verwenden $sql_temp = "SELECT count(*) as anzahl FROM (".$sql['sql_statement'].") as query;"; $res = @mod_query($sql_temp, false); if ($res) { if ($row = mysqli_fetch_object($res)) { $numrowsabs = $row->anzahl; } } else { // Query ergab Fehler - Anzahl unbekannt; -1 übernimmt dann die Groesse des Resultsets $numrowsabs = -1; } } } } $sqltmp = $sql['sql_statement'].$sql['order_statement'].(strpos(strtolower($sql['sql_statement'].$sql['order_statement']), ' limit ') ? '' : $limit); if (!$skip_mysql_execution) { $res = mod_query($sqltmp); } $numrows = mysqli_num_rows($res); if (-1 == $numrowsabs) { $numrowsabs = $numrows; } if ($limitende > $numrowsabs) { $limitende = $numrowsabs; } if ($numrowsabs > 0 && $Anzahl_SQLs <= 1) { if (0 == $showtables) { $command_line = $lang['L_INFO_RECORDS'].' '.($limitstart + 1).' - '; if ($limitstart + $limitende > $numrowsabs) { $command_line .= $numrowsabs; } else { $command_line .= $limitstart + $limitende; } $command_line .= ' '.$lang['L_SQL_VONINS']." $numrowsabs    "; $command_line .= ($limitstart > 0) ? '<<    ' : '<<    '; $command_line .= ($limitstart > 0) ? '<    ' : '<    '; $command_line .= ($limitstart + $limitende < $numrowsabs) ? '>    ' : '>    '; $command_line .= ($limitstart + $limitende < ($numrowsabs - $config['sql_limit'])) ? '>>' : '>>'; echo $command_line; } else { echo $numrowsabs.' '.($numrowsabs > 1 ? $lang['L_TABLES'] : $lang['L_TABLE']); } echo '

'; //Datentabelle echo ''; $t = $d = ''; $fdesc = []; $key = -1; if ($numrows > 0) { //Infos und Header holen //1.Datensatz fuer Feldinfos $row = mysqli_fetch_row($res); //Kompaktmodus-Switcher $t = ''; $t .= ''; $temp = []; for ($x = 0; $x < count($row); ++$x) { // $temp[$x]['data'] =mysqli_fetch_field($res, $x); $temp[$x]['data'] = mysqli_fetch_field($res); $temp[$x]['sort'] = add_sortkey($temp[$x]['data']->name); } if (1 == $showtables) { $temp = mu_sort($temp, 'sort'); } for ($x = 0; $x < count($temp); ++$x) { $str = $temp[$x]['data']; $t .= ''; } unset($temp); $temp = []; //und jetzt Daten holen mysqli_data_seek($res, 0); $s = $keysort; $s = array_flip($keysort); ksort($s); for ($i = 0; $i < $numrows; ++$i) { $data[0] = mysqli_fetch_array($res, MYSQLI_ASSOC); if (1 == $showtables && 1 == $tabellenansicht) { // Spalten sortieren, wenn wir uns in einer Tabellenuebersicht befinden $xx = mu_sort($data, "$s[0], $s[1], $s[2], $s[3], $s[4], $s[5], $s[6], $s[7], $s[8], $s[9], $s[10], $s[11], $s[12], $s[13], $s[14], $s[15], $s[16]"); $temp[$i] = $xx[0]; /*********************** Ergänzung www.betanet-web.ch - 30.04.2019 Anz. Einträge in der Tabelle wird in Ausgabe Array überschrieben, damit alle Daten exportiert werden. ************************/ $tabellenname = $data[0]['Name']; $numrows12 = 0; $select12 = "select * from $tabellenname"; $res12 = mod_query($select12, false); if (!empty($res12)) { $numrows12 = mysqli_num_rows($res12); } // Überschreiben mit neuem Wert $temp[$i]['Rows'] = $numrows12; } else { $temp[$i] = $data[0]; } } $rownr = $limitstart + 1; for ($i = 0; $i < $numrows; ++$i) { $row = $temp[$i]; // mysqli_fetch_row($res); $cl = ($i % 2) ? 'dbrow' : 'dbrow1'; $erste_spalte = 1; // bei Tabellenuebersicht soll nach vorgefertigter Reihenfolge sortiert werden, ansonsten einfach Daten anzeigen if (1 == $showtables) { $sortkey = $keysort; } else { $sortkey = $row; } $spalte = 0; // get primary key link for editing if ($key > -1) { $primary_key = ''; $keys = explode('|', $key); foreach ($sortkey as $rowkey => $rowval) { if (in_array($rowkey, $keys)) { if (strlen($primary_key) > 0) { $primary_key .= ' AND '; } $primary_key .= '`'.urlencode($rowkey).'`=\''.urlencode($rowval).'\''; } } //echo "

Primaerschluessel erkannt: ".$primary_key; } foreach ($sortkey as $rowkey => $rowval) { if (('Name' == $rowkey) && 1 == $tabellenansicht && isset($row['Name'])) { $tablename = $row['Name']; } if (1 == $erste_spalte) { //edit-pics $d .= $nl.''; ++$rownr; $erste_spalte = 0; } $d .= ''; } // Tabellenueberschrift en ausgeben if (0 == $i) { echo ''.$t.''; } // Daten anzeigen echo "\n\n".''.$d.''."\n\n"; $d = ''; } } echo '
'.((1 == $tdcompact) ? $lang['L_SQL_VIEW_STANDARD'] : $lang['L_SQL_VIEW_COMPACT']).''; $t .= '   '.$lang['L_SQL_QUERYENTRY'].' '.count($row).' '.$lang['L_SQL_COLUMNS']; $t .= '
 #'; $pic = ''; $fdesc[$temp[$x]['data']->name]['name'] = isset($str->name) ? $str->name : ''; $fdesc[$temp[$x]['data']->name]['table'] = isset($str->table) ? $str->table : ''; $fdesc[$temp[$x]['data']->name]['max_length'] = isset($str->max_length) ? $str->max_length : ''; $fdesc[$temp[$x]['data']->name]['not_null'] = isset($str->not_null) ? $str->not_null : ''; $fdesc[$temp[$x]['data']->name]['primary_key'] = isset($str->primary_key) ? $str->primary_key : ''; $fdesc[$temp[$x]['data']->name]['unique_key'] = isset($str->unique_key) ? $str->unique_key : ''; $fdesc[$temp[$x]['data']->name]['multiple_key'] = isset($str->multiple_key) ? $str->multiple_key : ''; $fdesc[$temp[$x]['data']->name]['numeric'] = isset($str->numeric) ? $str->numeric : ''; $fdesc[$temp[$x]['data']->name]['blob'] = isset($str->blob) ? $str->blob : ''; $fdesc[$temp[$x]['data']->name]['type'] = isset($str->type) ? $str->type : ''; $fdesc[$temp[$x]['data']->name]['unsigned'] = isset($str->unsigned) ? $str->unsigned : ''; $fdesc[$temp[$x]['data']->name]['zerofill'] = isset($str->zerofill) ? $str->zerofill : ''; $fdesc[$temp[$x]['data']->name]['Check_time'] = isset($str->Check_time) ? $str->Check_time : ''; $fdesc[$temp[$x]['data']->name]['Checksum'] = isset($str->Checksum) ? $str->Checksum : ''; $fdesc[$temp[$x]['data']->name]['Engine'] = isset($str->Engine) ? $str->Engine : ''; if (isset($str->Comment) && 'VIEW' == substr($str->Comment, 0, 4)) { $fdesc[$temp[$x]['data']->name]['Engine'] = 'View'; } $fdesc[$temp[$x]['data']->name]['Version'] = isset($str->Version) ? $str->Version : ''; $tt = $lang['L_NAME'].': '.$fdesc[$temp[$x]['data']->name]['name'].' Type: '.$fdesc[$temp[$x]['data']->name]['type'].' Max Length: '.$fdesc[$temp[$x]['data']->name]['max_length'].' Unsigned: '.$fdesc[$temp[$x]['data']->name]['unsigned'].' zerofill: '.$fdesc[$temp[$x]['data']->name]['zerofill']; $pic = ''; if ((isset($str->primary_key) && (1 == $str->primary_key)) || (isset($str->unique_key) && (1 == $str->unique_key))) { if (-1 == $key) { $key = $temp[$x]['data']->name; } else { $key .= '|'.$temp[$x]['data']->name; } if (1 == $str->primary_key) { $pic = $icon['key_primary']; } elseif (1 == $str->unique_key) { $pic = $icon['index']; } } // show sorting icon $arname = ('ASC' == $orderdir) ? $icon['arrow_down'] : $icon['arrow_up']; if ($str->name == $order) { $t .= $arname; } if (-1 == $bb) { $bb_link = ('blob' == $str->type) ? '   [BB]' : ''; } else { $bb_link = ('blob' == $str->type) ? '   [no BB]' : ''; } if (false == $no_order && 0 == $showtables) { $t .= $pic.' '.$str->name.''.$bb_link; } else { $t .= $pic.' '.$str->name.''.$bb_link; } $t .= ' '.$nl; $p = 'sql.php?sql_statement='.urlencode($sql['sql_statement']).'&db='.$databases['db_actual'].'&tablename='.$tablename.'&dbid='.$dbid.'&limitstart='.$limitstart.'&order='.urlencode($order).'&orderdir='.$orderdir.'&tdc='.$tdcompact; if (-1 == $key) { $rk = build_where_from_record($temp[$i]); $p .= '&recordkey='.urlencode($rk); } else { //Key vorhanden $p .= '&recordkey='.urlencode($primary_key); //urlencode("`".$fdesc[$key]['name']."`='".$rowval."'"); } if (1 == $showtables) { $p .= '&recordkey='.urlencode($tablename); } if (!isset($no_edit) || !$no_edit) { if (0 == $showtables) { $d .= ''.$icon['edit'].' '; } } if (0 == $showtables && 0 == $tabellenansicht) { $d .= ''.$icon['delete'].''; } else { if (1 == $tabellenansicht && 1 == $showtables) { $d .= ''.$icon['edit'].' '.$nl.$nl; if (!(isset($row['Comment']) && ('VIEW' == substr(strtoupper($row['Comment']), 0, 4)))) { $d .= ''.$icon['table_truncate'].' '.$nl.$nl; $d .= ''.$icon['table_truncate_reset'].' '.$nl.$nl; $d .= ''.$icon['delete'].' '.$nl.$nl; } else { $d .= ''.$icon['delete'].' '.$nl.$nl; } } } $d .= ''.$rownr.'. '; $divstart = ''; $divend = ''; if ($bb == $spalte) { $data = convert_to_utf8(simple_bbcode_conversion($rowval)); } else { if (0 == $showtables) { if (isset($fdesc[$rowkey]['type'])) { $data = ('string' == $fdesc[$rowkey]['type'] || 'blob' == $fdesc[$rowkey]['type']) ? convert_to_utf8($rowval) : $rowval; } } else { if (isset($temp[$i][$rowkey])) { $data = ('string' == $fdesc[$rowkey]['type'] || 'blob' == $fdesc[$rowkey]['type']) ? convert_to_utf8($temp[$i][$rowkey]) : $temp[$i][$rowkey]; } else { $data = ''; } if (in_array($rowkey, $byte_output)) { $data = byte_output($data); } } } //v($fdesc[$rowkey]); if (0 == $showtables) { if (is_null($rowval)) { $data = 'NULL'; } else { $data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8'); } } ++$spalte; $browse_link = ''; $d .= (1 == $tabellenansicht && 'Name' == $rowkey) ? $divstart.$browse_link.$icon['browse'].' '.$browse_link.$data."$divend" : $divstart.$data.$divend; $d .= '
'; if (0 == $showtables) { echo '
'.$command_line; } } else { echo '

'.$lang['L_SQL_NODATA'].'

'; }