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 .= '