query("SELECT 1 FROM fach_admin_rechte, fach_admin_rechte_zuord , fach_admin where fach_admin_rechte.fach_admin_rolle = fach_admin_rechte_zuord.fach_admin_rolle AND fach_admin_rechte_zuord.faid = fach_admin.faid AND fach_admin.user = '$user_admin' AND fach_admin_rechte_zuord.fach_admin_rolle = 'a_suche'");
$row = $result->fetch_array();
if ($row[0] != 1){ include("kurs/rechte.php"); exit;}
// Rechteüberprüfung ende
if (isset($_GET['action']))
$action = $_GET['action'];
else
$action = "";
switch($action){
default:
echo "
Suche
Suche
";
break;
case "suche":
$bezeichnung = strtoupper($_POST[bezeichnung]);
$dozent = strtoupper($_POST[dozent]);
$art = $_POST[art];
//Select zusammenbauen
if($art == 'exact' AND $bezeichnung != ''){ // wenn leer, darf kein regexp kommen, sonst würde er nichts finden
$trenner1 = 'REGEXP ';
$start1 = '[[:<:]]';
$ende1 = '[[:>:]]';
}else{
$trenner1 = 'LIKE ';
$start1 = '%';
$ende1 = '%';
}
$sql1 = "SELECT count(distinct fachprojekt.id) as anz_treffer
FROM fachprojekt, fach_doz
WHERE ";
######################################################################################################
## SQL ZUSAMMENBAUEN FÜR DIE ÜBERSCHRIFT
######################################################################################################
$bezeichnung = preg_replace('/\s{2,}/sm',' ',$bezeichnung,PREG_SET_ORDER); //Mehr als zwei leerzeichen entfernen
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})/", $bezeichnung, $Bezeichnungen);
# Erklärung: \-{0,1} --> 0 oder 1 Minuszeichen kann string enthalten
# \+{0,1} --> 0 oder 1 Pluszeichen kann string enthalten
# \*{0,1} --> 0 oder 1 Asterisk kann string enthalten
# %{0,1} --> 0 oder 1 Prozentzeichen kann string enthalten, muss nicht durch \ escaped werden
# Vorderer Teil bis | überprüft ob "" eingegeben wurden und splittet innerhalb der "" nicht. Hinterer Teil wenn Wörter ohne "" eingegeben wurde
if($bezeichnung != ""){
$sql .= " ("; //Kein AND vor der Klammer notwendig, da direkt nach where, bei anderen muss AND davor stehen
for($i=0; $i < count($Bezeichnungen); $i++)
{
#In der Überschrift kommen Umlaute vor, daher keine Ersetzung der Umlaute
#$ueberschrift = str_replace (array("\\", "ä", "ö", "ü", "ß", "Ä", "Ö", "Ü"), array("", "&AUML;", "&OUML;", "&UUML;", "&SZLIG;", "&AUML;", "&OUML;", "&UUML;"), $Ueberschriften[0][$i]);
$ueber = str_replace (array("+", "-", "\"", "\\"), array("", "", "", ""), $Bezeichnungen[0][$i]);
if($i == 0){
$oper = "";
}else{
$oper = "AND";
}
if(strpos($Bezeichnungen[0][$i],"+") === 0){
$sql .= "UPPER(bezeichnung) $trenner1 '$start1".$ueber."$ende1' ";
} elseif(strpos($Bezeichnungen[0][$i],"-") === 0){
$sql .= "$oper UPPER(bezeichnung) NOT $trenner1 '$start1".$ueber."$ende1' ";
} elseif($Bezeichnungen[0][$i] == ""){
NULL;
}else{
$sql .= "$oper UPPER(bezeichnung) $trenner1 '$start1".$ueber."$ende1' ";
}
}
$sql .= ")";
}else{
$sql .= " UPPER(bezeichnung) LIKE '%' "; //Wenn nichts eingegeben, dann soll alles angzeigt werden. Das braucht man hier weil zusammengesetzter string sonst WHERE AND TEXTSTELLE = .... heißen könnte
}
######################################################################################################
## SQL ZUSAMMENBAUEN FÜR DIE ÜBERSCHRIFT ENDE
######################################################################################################
$sql .= "AND fachprojekt.jahr = '$jahrgang'
AND fach_doz.id = fachprojekt.id
AND fach_doz.doz_nr LIKE '$dozent'";
#####################################################################################################
## SQL ZUSAMMENBAUEN FÜR DIE RESTLICHEN FELDER ENDE
######################################################################################################
######################################################################################################
## GESAMTSELECT - SQL ZUSAMMENBAUEN
######################################################################################################
$query = $sql1.$sql;
#echo $query;
#exit;
$result = $db->query($query);
$res = $result->fetch_array()
or die ("Cannot execute query");
if($res[anz_treffer] == '' or $res[anz_treffer] == 0){
echo "
keine Treffer