assign('bib_popup_anz_buch', "$anz_buch"); $smarty->assign('bib_popup_buch', "$buch"); $smarty->assign('bib_popup_kapitel', "$kapitel"); $smarty->assign('bib_popup_vers_anf', "$vers_anf"); $smarty->assign('bib_popup_vers_trenner', "$vers_trenner"); $smarty->assign('bib_popup_vers_ende', "$vers_ende"); $smarty->assign('bib_popup_vers_select', "$vers_select"); $smarty->assign('bib_popup_stopmark', "$stopmark"); $buch_vollst=trim("$anz_buch $buch $kapitel"); $db = dbconnect(); $result_cur = $db->query( "SELECT bid FROM bibel_chapter_2017 WHERE buch = '$buch_vollst' ORDER BY bid ASC "); $row_cur = $result_cur->fetch_array(); $next = $row_cur['bid']+1; $prev = $row_cur['bid']-1; $result_next = $db->query( "SELECT buch FROM bibel_chapter_2017 WHERE bid = '$next' ORDER BY bid ASC "); $row_next = $result_next->fetch_array(); $result_prev = $db->query( "SELECT buch FROM bibel_chapter_2017 WHERE bid = '$prev' ORDER BY bid ASC "); $row_prev = $result_prev->fetch_array(); if($row_prev['buch']!=''){ $smarty->assign('bib_popup_prev', "1"); $smarty->assign('bib_popup_prev_buch', "$row_prev[buch]"); } if($row_next['buch']!=''){ $smarty->assign('bib_popup_next', "1"); $smarty->assign('bib_popup_next_buch', "$row_next[buch]"); } } if($action == 'suche'){ $suche = trim($_POST['search_bibel']); setcookie("ck_suche",$suche); ############################################################ ## Wenn jemand ein Buch auswählt: 1. Mose; Matthäus.... ## dann direkt zum 1.Kapitel des Buches leiten ############################################################ $db = dbconnect(); $result_anz = $db->query("SELECT count(*) Anz FROM bibel_books_2017 WHERE bezeichnung ='$suche'"); $row_anz = $result_anz->fetch_array(); if($row_anz['Anz'] == 1){ $result_wort = $db->query("SELECT bezeichnung FROM bibel_books_2017 WHERE bezeichnung ='$suche'"); $row_wort = $result_wort->fetch_array(); echo ""; exit; } ############################################################ ## Wenn jemand ein Textwort eingibt, ## dann direkt zum Textwort leiten ############################################################ function refill($a,$b,$c,$d,$e,$f,$g,$h,$i) { // Funktion die aus Textstellenkurzeichen die vollständige Textstelle erstellt /* echo "a: '$a'
b: '$b'
c: '$c'
d: '$d'
e: '$e'
f: '$f'
g: '$g'
h: '$h'
i: '$i'
"; */ switch($c) { case'Mo': $c= 'Mose'; break; case'Jos': $c= 'Josua'; break; case'Ri': $c= 'Richter'; break; case'Rut': $c= 'Rut'; break; case'Sam': $c= 'Samuel'; break; case'Kön': $c= 'Könige'; break; case'Chr': $c= 'Chronik'; break; case'Esr': $c= 'Esra'; break; case'Neh': $c= 'Nehemia'; break; case'Est': $c= 'Esther'; break; case'Hiob': $c= 'Hiob'; break; case'Hi': $c= 'Hiob'; break; case'Ps': $c= 'Psalm'; break; case'Spr': $c= 'Sprüche'; break; case'Pred': $c= 'Prediger'; break; case'Hld': $c= 'Hoheslied'; break; case'Jes': $c= 'Jesaja'; break; case'Jer': $c= 'Jeremia'; break; case'Kla': $c= 'Klagelieder'; break; case'Hes': $c= 'Hesekiel'; break; case'Dan': $c= 'Daniel'; break; case'Hos': $c= 'Hosea'; break; case'Joel': $c= 'Joel'; break; case'Am': $c= 'Amos'; break; case'Obd': $c= 'Obadja'; break; case'Jona': $c= 'Jona'; break; case'Mi': $c= 'Micha'; break; case'Nah': $c= 'Nahum'; break; case'Hab': $c= 'Habakuk'; break; case'Zef': $c= 'Zefanja'; break; case'Hag': $c= 'Haggai'; break; case'Sach': $c= 'Sacharja'; break; case'Mal': $c= 'Maleachi'; break; case'Tob': $c= 'Tobias'; break; case'Mt': $c= 'Matthäus'; break; case'Mat': $c= 'Matthäus'; break; case'Math': $c= 'Matthäus'; break; case'Mk': $c= 'Markus'; break; case'Mar': $c= 'Markus'; break; case'Mark': $c= 'Markus'; break; case'Lk': $c= 'Lukas'; break; case'Luk': $c= 'Lukas'; break; case'Joh': $c= 'Johannes'; break; case'Jh': $c= 'Johannes'; break; case'Apg': $c= 'Apostelgeschichte'; break; case'Röm': $c= 'Römer'; break; case'Rom': $c= 'Römer'; break; case'Kor': $c= 'Korinther'; break; case'Gal': $c= 'Galater'; break; case'Eph': $c= 'Epheser'; break; case'Phil': $c= 'Philipper'; break; case'Kol': $c= 'Kolosser'; break; case'Thess': $c= 'Thessalonicher'; break; case'Tim': $c= 'Timotheus'; break; case'Tit': $c= 'Titus'; break; case'Phlm': $c= 'Philemon'; break; case'Ptr': $c= 'Petrus'; break; case'Petr': $c= 'Petrus'; break; case'Hbr': $c= 'Hebräer'; break; case'Hebr': $c= 'Hebräer'; break; case'Jak': $c= 'Jakobus'; break; case'Jk': $c= 'Jakobus'; break; case'Jud': $c= 'Judas'; break; case'Offb': $c= 'Offenbarung'; break; case'Off': $c= 'Offenbarung'; break; } # $a=trim($a); if($a !=""){$a=trim($a).".";} // nach der Zahl noch der Punkt hinzufügen if($a != ""){$a=trim($a)." ";$b="";} // nach dem Punkt ein Leerzeichen, B kann dann entfallen if($d ==""){$d=" ";} if($g !=""){$g=" ".$g." ";} // --> "1. Johannes 3,aus3" wird "1. Johannes 3, aus 3" #return sprintf('%s', $a.$b.$c.$d.$e.$f.$g.$h, $a.$b.$c.$d.$e.$f.$g.$h); return trim($a.$b.$c.$d.$e.$f.$g.$h); } $suche =preg_replace_callback("/([1-9]\s*)?()(Mo|Jos|Ri|Rut|Sam|Kön|Chr|Esr|Neh|Est|Hiob|Ps|Spr|Pred|Hld|Jes|Jer|Kla|Hes|Dan|Hos|Joel|Am|Obd|Jona|Mi|Nah|Hab|Zef|Hag|Sach|Mal|Tob|Mt|Mat|Math|Mar|Mark|Mk|Lk|Luk|Joh|Jh|Apg|Röm|Rom|Kor|Gal|Eph|Phil|Kol|Thess|Tim|Tit|Phlm|Ptr|Petr|Joh|Hbr|Hebr|Jak|Jk|Jud|Offb|Off)(\s*)". "([0-9]{1,3})(\,\s*)?(aus\s*)?([0-9]{0,3})/", function($m) { return refill($m[1], $m[2], $m[3], $m[4], $m[5], $m[6], $m[7], $m[8], $m[9]);}, $suche); if (( // Bücher mit mehreren Bücher 1. Johannes... preg_match("/^([1-9])\.\s* (Makkabäer|Johannes|Mose|Könige|Chronik|Korinther|Samuel|Thessalonicher|Timotheus|Petrus)\s*[0-9]{1,2}(\,)?\s*(aus)?\s*[0-9]{1,3}(\.|-)?([0-9]{1,3})?(\.)?([0-9]{1,3})?$/imu", $suche) or // Bücher mit nur einem Buch Rut 3,5-7 preg_match("/^(Gebet Manasses|Stücke zu Daniel|Stücke zu Ester|Baruch|Weisheit|Judit|Johannes|Sirach|Josua|Richter|Rut|Ruth|Esra|Nehemia|Esther|Ester|Hiob|Psalm|Sprüche|Prediger|Hoheslied|Jesaja|Jeremia|Klagelieder|Hesekiel|Daniel|Hosea|Joel|Amos|Tobias|Obadja|Jona|Micha|Nahum|Habakuk|Zefanja|Haggai|Sacharja|Maleachi|Matthäus|Markus|Lukas|Apostelgeschichte|Römer|Galater|Epheser|Philipper|Kolosser|Titus|Hebräer|Jakobus|Offenbarung)\s*[0-9]{1,3}(\,)?\s*(aus)?\s*[0-9]{1,3}(\.|-)?([0-9]{1,3})?(\.)?([0-9]{1,3})?$/imu", $suche) or // Bücher ohne Kapitel preg_match("/^(Philemon|Judas)\s*(aus)?\s*[0-9]{1,3}(\.|-)?([0-9]{1,3})?(\.)?([0-9]{1,3})?$/imu", $suche) ) AND $suche != "" ){ // verschiedene Schreibweisen möglich. DB enthält die Varianten ohne "H" $suche =str_replace ("Ruth", "Rut" , $suche); $suche =str_replace ("Esther", "Ester" , $suche); $suche =str_replace ("Judith", "Judit" , $suche); $suche =str_replace ("Ezechiel", "Hesekiel" , $suche); $suche =str_replace ("Ijob", "Hiob" , $suche); // Preg auf vollständige Bibelbücher überprüft $suche=preg_replace_callback("/^([1-9]\.)*\s*". //1 a "(Philemon|Judas|Johannes|Mose|Könige|Korinther|Petrus|Sirach|Josua|Richter|Rut|Ruth|Samuel|Chronik|Esra|Nehemia|Esther|Ester|Hiob|Psalm|Sprüche|Prediger|Hoheslied|Jesaja|Jeremia|Klagelieder|Hesekiel|Daniel|Hosea|Joel|Amos|Tobias|Obadja|Jona|Micha|Nahum|Habakuk|Zefanja|Haggai|Sacharja|Maleachi|Judit|Weisheit|Baruch|Makkabäer|Stücke zu Ester|Stücke zu Daniel|Gebet Manasses|Matthäus|Markus|Lukas|Apostelgeschichte|Römer|Galater|Epheser|Philipper|Kolosser|Thessalonicher|Timotheus|Titus|Hebräer|Jakobus|Offenbarung)\s*". //2 "([0-9]{1,3})". //3 c "(\,)?\s*". //4 "(aus)?\s*". //5 "([0-9]{0,3})". //6 d "(\.|-)?". //7 e "([0-9]{0,3})?". //8 f "(\.|-)?". //9 g "([0-9]{0,3})". //10 h "$/", function($m) { return splitword($m[1], $m[2], $m[3], $m[6], $m[7], $m[8], $m[9], $m[10]);}, $suche); $trenner = explode("|", $suche); $anz_buch = $trenner[0]; $buch = $trenner[1]; $kapitel = $trenner[2]; $vers_anf = $trenner[3]; $vers_trenner = $trenner[4]; $vers_ende = $trenner[5]; $db = dbconnect(); $result_anz = $db->query("SELECT count(*) Anz FROM bibel_lut_2017 WHERE anz_buch ='$anz_buch' AND buch ='$buch' AND kapitel ='$kapitel' AND vers ='$vers_anf'"); $row_anz1 = $result_anz->fetch_array(); // Wenn man zB. nur Römer 11 eingibt, dann soll nicht das ganze Kapitel markiert werden if($vers_anf ==''){ $vers_select = "N"; }else{ $vers_select = "Y"; } if($row_anz1['Anz'] > 0) { echo ""; }else{ $smarty->assign('bib_popup_nohit', "1"); } }else{ echo ""; } } if($action == 'suche2'){ ############################################################ ## Wenn jemand ein Suchbegriffe eingibt, ## dann direkt zum Textwort leiten, wenns nur ein Treffer gibt, ## sonst Ergebnisliste anzeigen ############################################################ $suche = $_COOKIE["ck_suche"]; $suche = trim(strtoupper($suche)); $trenner4 = 'LIKE '; $start4 = '%'; $ende4 = '%'; $sql1 = "SELECT count(*) as anz_treffer FROM bibel_lut_2017 WHERE bibelstelle !='' "; $suche = preg_replace('/\s{2,}/sm',' ',$suche,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})/u", $suche, $Worte); if($suche != ""){ $sql .= "AND ("; for($i=0; $i < count($Worte); $i++) { #$suche = str_replace (array("\\", "ä", "ö", "ü", "ß", "Ä", "Ö", "Ü"), array("", "&AUML;", "&OUML;", "&UUML;", "&SZLIG;", "&AUML;", "&OUML;", "&UUML;"), $Worte[0][$i]); #$suchwort = str_replace (array("+", "-", "\"", "\\"), array("", "", "", ""), $suche); $suchwort = str_replace (array("+", "-", "\"", "\\"), array("", "", "", ""), $Worte[0][$i]); if($i == 0){ $oper = ""; }else{ $oper = "AND"; } if(strpos($Worte[0][$i],"+") === 0){ $sql .= "UPPER(inhalt) $trenner4 '$start4".$suchwort."$ende4' "; } elseif(strpos($Worte[0][$i],"-") === 0){ $sql .= "$oper UPPER(inhalt) NOT $trenner4 '$start4".$suchwort."$ende4' "; } elseif($Worte[0][$i] == ""){ NULL; }else{ $sql .= "$oper UPPER(inhalt) $trenner4 '$start4".$suchwort."$ende4' "; } } } $sql .= ")"; $db = dbconnect(); $query1 = $sql1.$sql; $result = $db->query($query1); $res = $result->fetch_array() or die ("Cannot execute query"); if($res['anz_treffer'] == '' or $res['anz_treffer'] == 0){ $smarty->assign('bib_popup_nohit', "1"); }else{ // Bei nur einem Treffer keine Liste anzeigen, sondern direkt weiteleiten $db = dbconnect(); $sql1 = "SELECT bid, bibelstelle, inhalt, vers FROM bibel_lut_2017 WHERE bibelstelle !='' "; $sql2 = " ORDER BY bid ASC"; $query = $sql1.$sql.$sql2; $result = $db->query( $query ) or die ("Cannot execute query"); while ($row = $result->fetch_array()){ if($res['anz_treffer'] == 1){ echo ""; exit; } } // 1 Treffer Ende 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; } // Datendefinition für die Clientausgabe $start = (isset($_GET['start'])) ? abs((int)$_GET['start']) : 0; $limit = 5; // Datensätze pro Ausgabeseite // Feststellen der Anzahl der verfügbaren Datensätze. $resultID = $db->query( $query1 ); $row_anz2 = $resultID->fetch_array(); $total = $row_anz2['anz_treffer']; #$total = $db->result($query1,0); // Ggf. $start korrigieren (falls Parameter in // der URL manipuliert wurde) $start = ($_GET['start'] >= $total) ? $total - $limit : $start; // Datenbankabfrage ausführen. $db = dbconnect(); $sql1 = "SELECT bid, bibelstelle, inhalt, vers FROM bibel_lut_2017 WHERE bibelstelle !='' "; $sql2 = " ORDER BY bid ASC LIMIT ".$start.",".$limit; $query = $sql1.$sql.$sql2; $resultID = $db->query( $query ); $smarty->assign('bib_popup_hit', "1"); $smarty->assign('bib_popup_anz_treffer', "$res[anz_treffer]"); while ($row = $resultID->fetch_array()){ $preview = kurzer_text(strip_tags($row['inhalt']),100); $row['preview'] = $preview; $value[] = $row; } $smarty->assign('table_data', $value); $show = ceil($total/$limit); //Seitenzahlen aufrunden $last = floor($total/$limit)*$limit; //Sprungziel zur letzten Seite BSP abrunden(1954/13)*13 ==> 150*13=1950 Sprungmarke auf Zeile 1950, 4 DS werden angezeigt $akt = round((($start-$limit)/$limit+2),0); $smarty->assign('bib_popup_currpage', "$akt"); $smarty->assign('bib_popup_pagecount', "$show"); // Zurück- und Vorblättern if ($start > 0) { $newStart = ($start - $limit < 0) ? 0 : ($start-$limit); // wenn $start-$limit kleiner 0 dann $newstart=0 sonst $start-$limit $smarty->assign('bib_popup_start0', "1"); $smarty->assign('bib_popup_start_newstart', "$newStart"); }else{ $smarty->assign('bib_popup_start0', "2"); } if ($start + $limit < $total) { $newStart = $start + $limit; $smarty->assign('bib_popup_end0', "1"); $smarty->assign('bib_popup_end_newstart', "$newStart"); $smarty->assign('bib_popup_end_last', "$last"); }else{ $smarty->assign('bib_popup_end0', "2"); } } } $smarty->assign('action', "$action"); $smarty->display("../templates/$template/$templatename"); ?>