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']) && $_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['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.='