" ); $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."