count($tables) - 1) { $table_selected = 0; } $offset = (isset($_POST['offset'])) ? intval($_POST['offset']) : 0; $tablename = isset($_GET['tablename']) ? urldecode($_GET['tablename']) : ''; // Delete if (isset($_GET['mode']) && 'kill' == $_GET['mode'] && $rk > '') { // echo "
RK ist: ".$rk."

"; $sqlk = "DELETE FROM `$tablename` WHERE ".$rk.' LIMIT 1'; // echo $sqlk; $res = mod_query($sqlk); // echo "
".$res; $aus .= '

'.$lang['L_SQL_RECORDDELETED'].'

'; } function mysqli_search($db, $tabelle, $suchbegriffe, $suchart, $offset = 0, $anzahl_ergebnisse = 20, $auszuschliessende_tabellen = '') { global $tables, $config, $lang; $ret = false; $link = mod_mysqli_connect(); if (sizeof($tables) > 0) { $suchbegriffe = trim(str_replace('*', '', $suchbegriffe)); $suchworte = explode(' ', $suchbegriffe); if (($suchbegriffe > '') && (is_array($suchworte))) { // Remove empty entries (due to double spaces) $anzahl_suchworte = sizeof($suchworte); for ($i = 0; $i < $anzahl_suchworte; ++$i) { if ('' == trim($suchworte[$i])) { unset($suchworte[$i]); } } $bedingung = []; $where = ''; $felder = []; // Determine fields $sql = 'SHOW COLUMNS FROM `'.$db.'`.`'.$tables[$tabelle].'`'; $res = mysqli_query($link, $sql); if (false === !$res) { // Determine fields of the table while ($row = mysqli_fetch_object($res)) { $felder[] = $row->Field; } } $feldbedingung = ''; if ('CONCAT' == $suchart) { if (count($felder) > 0) { // Build Concat-String $concat = implode('`),LOWER(`', $felder); $concat = 'CONCAT_WS(\'\',LOWER(`'.$concat.'`))'; $where = ''; foreach ($suchworte as $suchbegriff) { $where .= $concat.' LIKE \'%'.strtolower($suchbegriff).'%\' AND '; } $where = substr($where, 0, -4); // Remove last AND $sql = 'SELECT * FROM `'.$db.'`.`'.$tables[$tabelle].'` WHERE '.$where.' LIMIT '.$offset.','.$anzahl_ergebnisse; } else { $_SESSION['mysql_search']['suchbegriffe'] = ''; exit(sprintf($lang['L_ERROR_NO_FIELDS'], $tabelle)); } } else { $pattern = '`{FELD}` LIKE \'%{SUCHBEGRIFF}%\''; if (count($felder) > 0) { foreach ($felder as $feld) { unset($feldbedingung); foreach ($suchworte as $suchbegriff) { $suchen = [ '{FELD}', '{SUCHBEGRIFF}', ]; $ersetzen = [ $feld, $suchbegriff, ]; $feldbedingung[] = str_replace($suchen, $ersetzen, $pattern); } $bedingung[] = '('.implode(' '.$suchart.' ', $feldbedingung).') '; } } else { $_SESSION['mysql_search']['suchbegriffe'] = ''; exit(sprintf($lang['L_ERROR_NO_FIELDS'], $tabelle)); } $where = implode(' OR ', $bedingung); $sql = 'SELECT * FROM `'.$db.'`.`'.$tables[$tabelle].'` WHERE ('.$where.') LIMIT '.$offset.','.$anzahl_ergebnisse; } } else { $sql = 'SELECT * FROM `'.$db.'`.`'.$tables[$tabelle].'` LIMIT '.$offset.','.$anzahl_ergebnisse; } $res = mysqli_query($link, $sql); if (false === !$res) { while ($row = mysqli_fetch_array($res, MYSQLI_ASSOC)) { // Mark hits foreach ($row as $key => $val) { foreach ($suchworte as $suchbegriff) { $row[$key] = markiere_suchtreffer($suchbegriff, $row[$key]); } $row[$key] = ersetze_suchtreffer($row[$key]); } $ret[] = $row; } } } return $ret; } // Marks the search string with a code (ASCII 01/02) // - if not found : returns the original string function markiere_suchtreffer($suchbegriff, $suchstring) { $str = strtolower($suchstring); $suchbegriff = strtolower($suchbegriff); if ((strlen($str) > 0) && (strlen($suchbegriff) > 0)) { // Determine hit position $offset = 0; $trefferpos = 0; while (($offset <= strlen($str))) { // If only the first hit is to be marked, the line must read as follow // while ( ($offset<=strlen($str)) || ($in_html==false) ) for ($offset = $trefferpos; $offset <= strlen($str); ++$offset) { $start = strpos($str, $suchbegriff, $offset); if (false === $start) { $offset = strlen($str) + 1; } else { if ($offset <= strlen($str)) { //Treffer überprüfen $in_html = false; // Steht die Fundstelle zwischen < und > (also im HTML-Tag) ? for ($position = $start; $position >= 0; --$position) { if ('>' == substr($str, $position, 1)) { $in_html = false; $position = -1; // Schleife verlassen } if ('<' == substr($str, $position, 1)) { $in_html = true; $position = -1; // Schleife verlassen } } if ($in_html) { for ($position2 = $start; $position2 < strlen($str); ++$position2) { if ('<' == substr($str, $position2, 1)) { $position2 = strlen($str) + 1; } if ('>' == substr($str, $position2, 1)) { $in_html = true; $position2 = strlen($str) + 1; $offset = strlen($str) + 1; } } } if (!$in_html) { $ersetzen = substr($suchstring, $start, strlen($suchbegriff)); $str = substr($suchstring, 0, $start); $str .= chr(1).$ersetzen.chr(2); $str .= substr($suchstring, ($start + strlen($ersetzen)), (strlen($suchstring) - strlen($ersetzen))); $suchstring = $str; } if ($in_html) { $trefferpos = $start + 1; $offset = $trefferpos; } } $offset = $start + 1; } } } } return $suchstring; } // Ersetzt die Codes letztlich durch die Fontangabe function ersetze_suchtreffer($text) { $such = [ chr(1), chr(2), ]; $ersetzen = [ '', '', ]; return str_replace($such, $ersetzen, htmlspecialchars($text)); } $suchbegriffe = trim($suchbegriffe); // Leerzeichen vorne und hinten wegschneiden if (isset($_POST['reset'])) { $suchbegriffe = ''; $_SESSION['mysql_search']['suchbegriffe'] = ''; $suchart = 'AND'; $_SESSION['mysql_search']['suchart'] = 'AND'; $table_selected = 0; $_SESSION['mysql_search']['table_selected'] = 0; } $showtables = 0; // Anzeige der Tabellendaten im restlichen SQL-Browser ausschalten // Fix bis zur kompletten Umstellung auf Templates echo $aus; $aus = ''; $anzahl_tabellen = sizeof($tables); $table_options = ''; if ($anzahl_tabellen > 0) { for ($i = 0; $i < $anzahl_tabellen; ++$i) { if (isset($tables[$i])) { $table_options .= '