Initial commit
This commit is contained in:
148
lieder/livesearch_lieder.php
Normal file
148
lieder/livesearch_lieder.php
Normal file
@ -0,0 +1,148 @@
|
||||
<?php
|
||||
header("Content-Type: text/html;charset=utf-8");
|
||||
require_once("../config.inc.php");
|
||||
$db = dbconnect();
|
||||
|
||||
if (isset($_GET['getWord']) && isset($_GET['letters'])) {
|
||||
$sql_gesamt == '';
|
||||
# Einige Textzeichen wurden aus den Suchspalten entfernt, daher m<>ssen sie auch aus suchanfragen entfernt werden
|
||||
$bereinigung = array(
|
||||
",",
|
||||
".",
|
||||
"!",
|
||||
"?",
|
||||
";",
|
||||
"|",
|
||||
"'",
|
||||
"<",
|
||||
">"
|
||||
);
|
||||
$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 "<pre>";
|
||||
#print_r($Worte[0]);
|
||||
#echo "</pre>";
|
||||
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 <20> 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<72>nzen. Bei ALL braucht es keine Erg<72>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<68>nkung, braucht hier nicht ber<65>cksichtigt werden.
|
||||
if($row_usr['lied_status'] == 'A'){
|
||||
# Auff<66>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/<2F>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<61>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."<br>";
|
||||
|
||||
#$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] <br>($inf[kategorie] -> $inf[unterkategorie])";
|
||||
$name = "$inf[art] $inf[nr] $inf[zusatz] - $inf[titel]";
|
||||
echo $name . "|";
|
||||
}
|
||||
}
|
||||
?>
|
Reference in New Issue
Block a user