" ); $letters = str_replace($bereinigung, "", $_GET['letters']); $letters = addslashes($letters)." "; $result_usr = $db->query("SELECT lied_search, lied_bestand, lied_favorit, lied_status FROM profil WHERE user = '$user_admin'"); $row_usr = $result_usr->fetch_array(); if ($row_usr['lied_search'] == 'regexp') { $trenner = 'REGEXP '; $start = '[[:<:]]'; $ende = '[[:>:]]'; } else { $trenner = 'LIKE '; $start = '%'; $ende = '%'; } $inhalt = preg_replace('/\s{2,}/sm', ' ', $letters, PREG_SET_ORDER); //Mehr als zwei leerzeichen entfernen $sql1 = "SELECT art, nr, zusatz, titel, text, kategorie, unterkategorie FROM lieder_synopse WHERE "; preg_match_all("/(\-{0,1}\+{0,1}\*{0,1}%{0,1}\"([^\"]+)\"\*{0,1}%{0,1}\+{0,1}\-{0,1}|\-{0,1}\+{0,1}\*{0,1}%{0,1}(\w+)\*{0,1}%{0,1}\+{0,1}\-{0,1})/u", $inhalt, $Worte); #echo "
";
  #print_r($Worte[0]);
  #echo "
"; if ($inhalt != "") { # $sql .= " ("; for ($i = 0; $i < count($Worte[0]); $i++) { $suchwort = str_replace(array( "+", "-", "\"", "\\" ), array( "", "", "", "" ), $Worte[0][$i]); if ($i == 0) { $oper = ""; } else { $oper = "AND"; } # Uppercase $suchwort = mb_strtoupper($suchwort); # if (strpos($Worte[0][$i], "+") === 0) { # $sql .= "(UPPER(text_suche) $trenner '$start" . $suchwort . "$ende'"; # } elseif (strpos($Worte[0][$i], "-") === 0) { # $sql .= "$oper UPPER(inhalt1) NOT $trenner '$start" . $suchwort . "$ende' "; # } elseif ($Worte[0][$i] == "") { # NULL; # } else { ## die Felder _suche sind als utf8_bin definiert: Die collation unterscheidet Umlaute ## Sonst würde bei ü auch u gescuht werden: Müller würde auch Muller finden. Bei ut8_bin wird unterschieden $sql .= "$oper (UPPER(text_suche) $trenner '$start" . $suchwort . "$ende' OR upper(titel_suche) $trenner '$start" . $suchwort . "$ende' OR nr = '" . $suchwort . "') "; # } } } # Liedbestand: ALL / CB / GB ergänzen. Bei ALL braucht es keine Ergänzung der where-Bedingung if($row_usr['lied_bestand'] != 'ALL'){ $sql3 = "AND art='$row_usr[lied_bestand]' "; } # In Favoriten suchen if($row_usr['lied_favorit'] == '1'){ $sql4 = "AND concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) IN (SELECT concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) FROM lieder_favorit WHERE vaid=$user_vaid)"; } # In Status suche # K A P U: Status K: Keine Einschränkung, braucht hier nicht berücksichtigt werden. if($row_usr['lied_status'] == 'A'){ # Aufführbare Lieder $sql5 = "AND concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) IN (SELECT concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) FROM lieder_status WHERE vaid=$user_vaid AND status='A')"; }elseif($row_usr['lied_status'] == 'P'){ #Probe/Übphase $sql5 = "AND concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) IN (SELECT concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) FROM lieder_status WHERE vaid=$user_vaid AND status='U')"; }elseif($row_usr['lied_status'] == 'U'){ # Alle außer status A und U $sql5 = "AND concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) NOT IN (SELECT concat(art,nr,CASE WHEN zusatz IS NULL THEN '' ELSE zusatz END) FROM lieder_status WHERE vaid=$user_vaid)"; } $sql_gesamt = $sql1 . $sql . $sql3 . $sql4 . $sql5 ." ORDER BY nr, art, titel"; #echo $sql_gesamt."
"; #$handle = fopen ("sql.txt", w); #fwrite ($handle, $sql_gesamt); #fclose ($handle); /* SELECT art, nr, zusatz, titel, text, kategorie, unterkategorie FROM `lieder_synopse` WHERE ( UPPER(text_suche) REGEXP '[[:<:]]ACH[[:>:]]' OR upper(titel_suche) REGEXP '[[:<:]]ACH[[:>:]]' OR nr = 'ARMEN' ) AND ( UPPER(text_suche) REGEXP '[[:<:]]ARMEN[[:>:]]' OR upper(titel_suche) REGEXP '[[:<:]]ARMEN[[:>:]]' OR nr = 'ARMEN' ) ORDER BY art, nr, titel */ #$letters = preg_replace("/[^a-z0-9 ]/si","",$letters); $res = $db->query($sql_gesamt) or die(mysql_error()); #echo "1###select ID,textstelle Name from ajax_countries where textstelleName like '".$letters."%'|"; # Vor Zusatz muss ein Leerzeichen kommen, damit man den mit explode bei der liedanzeige trennen kann while ($inf = $res->fetch_array()) { #$name= "$inf[art] $inf[nr] $inf[zusatz] - $inf[titel]
($inf[kategorie] -> $inf[unterkategorie])"; $name = "$inf[art] $inf[nr] $inf[zusatz] - $inf[titel]"; echo $name . "|"; } } ?>