query("SELECT 1 FROM skik_admin_rechte, skik_admin_rechte_zuord , skik_admin where skik_admin_rechte.skik_admin_rolle = skik_admin_rechte_zuord.skik_admin_rolle AND skik_admin_rechte_zuord.faid = skik_admin.faid AND skik_admin.user = '$user_admin' AND skik_admin_rechte_zuord.skik_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


Bezeichnung:
Dozent: "; $db = dbconnect(); $query = "SELECT distinct doz.doz_nr, doz_name, doz_vorname, doz_titel FROM doz, skik_doz, skik_kurs WHERE doz.doz_nr = skik_doz.doz_nr AND skik_kurs.id = skik_doz.id AND skik_kurs.jahr = '$jahrgang' ORDER BY doz_name ASC"; $result = $db->query ($query) or die ("Cannot execute query"); echo "
Suchart:


"; 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 skik_kurs.id) as anz_treffer FROM skik_kurs, skik_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 skik_kurs.jahr = '$jahrgang' AND skik_doz.id = skik_kurs.id AND skik_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

keine Treffer

Es wurden keine Suchergebnisse gefunden


"; exit; } function kurzer_text($string,$laenge){ $origin=strlen($string); $stri_arr=explode(" ",$string); $anzzahl=count($stri_arr); $gekuerzt=0; $string=""; while($gekuerzt<$anzzahl){ $string_alt=$string; $string=$string." ".$stri_arr[$gekuerzt]; $gekuerzt++; if(strlen($string)>$laenge){ $gekuerzt=$anzzahl; $string=$string_alt; } } if($laenge<$origin){ $string=$string." ..."; } return $string; } echo " Statistik

Suchergebnisse
Treffer: $res[anz_treffer]
"; $db = dbconnect(); $sql1 = "SELECT distinct skik_kurs.id, skik_kurs.FPRNr, bezeichnung, beschreibung, Ansprechpart, termine FROM skik_kurs, skik_doz WHERE "; $sql2 = " ORDER BY id asc"; $query = $sql1.$sql.$sql2; $result = $db->query($query) or die ("Cannot execute query"); while ($row = $result->fetch_array()){ $preview = kurzer_text(strip_tags($row[beschreibung]),200); echo " "; } echo"

$row[1]) $row[bezeichnung]


";if(strlen($preview) > 1){echo "$preview
";} echo" ";if($row[Ansprechpart] != ''){ echo "Ansprechpartner: $row[Ansprechpart]
";} echo " ";if($row[termine] != ''){ echo "Termine: $row[termine]
";} echo "

"; } // If Anweisung Action-Abfrage ?>