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['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") { $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.='