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

"; if (strpos($rk, "|") != false) $rk = str_replace('|', ' AND ', $rk); $sqlk = "DELETE FROM `$tablename` WHERE " . $rk . " LIMIT 1"; echo $sqlk; $res = MSD_query($sqlk); // echo "
".$res; $aus .= '

' . $lang['L_SQL_RECORDDELETED'] . '

'; } function mysql_search($db, $tabelle, $suchbegriffe, $suchart, $offset = 0, $anzahl_ergebnisse = 20, $auszuschliessende_tabellen = '') { global $tables, $config; $ret = false; $link = MSD_mysql_connect(); if (sizeof($tables) > 0) { $suchbegriffe = trim(str_replace('*', '', $suchbegriffe)); $suchworte = explode(' ', $suchbegriffe); if (($suchbegriffe > '') && (is_array($suchworte))) { // Leere Einträge (durch doppelte Leerzeichen) entfernen $anzahl_suchworte = sizeof($suchworte); for ($i = 0; $i < $anzahl_suchworte; $i++) { if (trim($suchworte[$i]) == '') unset($suchworte[$i]); } $bedingung = ''; $where = ''; $felder = ''; // Felder ermitteln $sql = 'SHOW COLUMNS FROM `' . $db . '`.`' . $tables[$tabelle] . '`'; $res = mysql_query($sql, $link); unset($felder); if (!$res === false) { // Felder der Tabelle ermitteln WHILE ($row = mysql_fetch_object($res)) { $felder[] = $row->Field; } } $feldbedingung = ''; if ($suchart == 'CONCAT') { if (is_array($felder)) { //Concat-String bildem $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); // letztes AND entfernen $sql = 'SELECT * FROM `' . $db . '`.`' . $tables[$tabelle] . '` WHERE ' . $where . ' LIMIT ' . $offset . ',' . $anzahl_ergebnisse; } } else { $pattern = '`{FELD}` LIKE \'%{SUCHBEGRIFF}%\''; if (is_array($felder)) { foreach ($felder as $feld) { unset($feldbedingung); foreach ($suchworte as $suchbegriff) { $suchen = ARRAY( '{FELD}', '{SUCHBEGRIFF}'); $ersetzen = ARRAY( $feld, $suchbegriff); $feldbedingung[] = str_replace($suchen, $ersetzen, $pattern); } $bedingung[] = '(' . implode(' ' . $suchart . ' ', $feldbedingung) . ') '; } } else die('
Fehler bei Suche: ich konnte nicht ermitteln welche Felder die Tabelle "' . $tabelle . '" hat!'); $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 = @mysql_query($sql, $link); if ($res) { WHILE ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { //Treffer markieren 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; } // Markiert den Suchbegriff mit einem Code (ASCII 01/02) // - falls nicht gefunden : Rückgabe des Originalstrings // function markiere_suchtreffer($suchbegriff, $suchstring) { $str = strtolower($suchstring); $suchbegriff = strtolower($suchbegriff); if ((strlen($str) > 0) && (strlen($suchbegriff) > 0)) { // Treffer Position bestimmen $offset = 0; $trefferpos = 0; while (($offset <= strlen($str))) //Wenn nur der erste Treffer markiert werden soll, so muss die Zeile so lauten // while ( ($offset<=strlen($str)) || ($in_html==false) ) { for ($offset = $trefferpos; $offset <= strlen($str); $offset++) { $start = strpos($str, $suchbegriff, $offset); if ($start === false) $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 = ARRAY( chr(1), chr(2)); $ersetzen = ARRAY( '', ''); 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 .= '