--- inc/search.php 2001/08/10 13:59:06 1.1 +++ inc/search.php 2001/10/29 14:43:21 1.10 @@ -1,10 +1,7 @@ ${"field_".$i}, "not" => ${"not_".$i}, - "query" => MyEscape(${"query_".$i}), + "query" => MyEscape(${"query_".$i}, true), "logic" => ${"logic_".$i}, "concat" => ${"concat_".$i}, "case" => ${"case_".$i} @@ -35,12 +32,13 @@ } global ${"and_".($i - 1)}, ${"or_".($i - 1)}; if (count($search) == 0 || ${"and_".($i - 1)} || ${"or_".($i - 1)}) { + $go = false; $log = ""; if (${"and_".($i - 1)}) $log = "AND"; if (${"or_".($i - 1)}) $log = "OR"; if (count($search) > 0) $search[count($search) - 1]["logic"] = $log; array_push($search, array( - "field" => "", + "field" => $def_field ? $def_field : "", "not" => "", "query" => "", "logic" => "", @@ -51,13 +49,18 @@ $search[count($search) - 1]["logic"] = ""; $tp->assign("search", $search); } else { - global $field, $query; - $tp->assign("field", $field); - $tp->assign("query", MyEscape($query)); + // Nothing. } - if (!$stype) $stype = 0; + if (!$stype) $stype = false; $tp->assign("stype", $stype); - global $go; + if (!$stype && !$go) { + reset($fields); + while (list($k, $v) = each($fields)) { + $var = "go_$k"; + global $$var; + if ($$var) $go = true; + } + } if ($go) { if ($stype) { $qry = ""; @@ -65,28 +68,26 @@ $i = 1; while (${"search_".$i}) { $field = ${"field_".$i}; - $not = ${"not_".$i} ? "NOT" : ""; + $not = ${"not_".$i} ? " NOT" : ""; $qry1 = preg_split('/\s+/', ${"query_".$i}); $qry2 = array(); $qry3 = array(); while (list($k, $v) = each($qry1)) { if (!$qry1[$k]) continue; - if (${"case_".$i}) - $qq = "(".$fields[$field]["dbname"]." $not LIKE '%".$qry1[$k]."%')"; - else - $qq = "(UPPER(".$fields[$field]["dbname"].") $not LIKE UPPER('%".$qry1[$k]."%'))"; + if (${"case_".$i}) $qq = "(".$fields[$field]["dbname"]."$not LIKE '%".$qry1[$k]."%')"; + else $qq = "(UPPER(".$fields[$field]["dbname"].")$not LIKE '%".MyUpper($qry1[$k])."%')"; $is_q1 = false; - for ($i = 0; $i < count($q1_fields); $i++) - if ($q1_fields[$i] == $field) $is_q1 = true; + for ($j = 0; $j < count($q1_fields); $j++) + if ($q1_fields[$j] == $field) $is_q1 = true; $is_q2 = false; - for ($i = 0; $i < count($q2_fields); $i++) - if ($q2_fields[$i] == $field) $is_q2 = true; + for ($j = 0; $j < count($q2_fields); $j++) + if ($q2_fields[$j] == $field) $is_q2 = true; if ($is_q1) $qry2[$k] = $qq; if ($is_q2) $qry3[$k] = $qq; } $qry1 = implode(" ".${"concat_".$i}." ", $qry2); if ($qry1) { - if ($logic) $qry .= " $logic "; + if ($logic) $qry_1 .= " $logic "; $qry_1 .= "($qry1)"; $logic = ${"logic_".$i}; } @@ -99,37 +100,51 @@ $i++; } } else { - $q = preg_split('/\s+/', $query); - $q2 = array(); - $q3 = array(); - while (list($k, $v) = each($q)) { - if (!$q[$k]) continue; - $qq = "(UPPER(".$fields[$field]["dbname"].") LIKE UPPER('%".$q[$k]."%'))"; - $is_q1 = false; - for ($i = 0; $i < count($q1_fields); $i++) - if ($q1_fields[$i] == $field) $is_q1 = true; - $is_q2 = false; - for ($i = 0; $i < count($q2_fields); $i++) - if ($q2_fields[$i] == $field) $is_q2 = true; - if ($is_q1) $q2[$k] = $qq; - if ($is_q2) $q3[$k] = $qq; + reset($fields); + while (list($k, $v) = each($fields)) { + $field = $k; + $var = "query_".$field; global $$var; + $query = $$var; + $tp->assign($var, $$var); + $go1 = "go_$field"; + if (!$$var) continue; + $q = preg_split('/\s+/', $query); + $q2 = array(); + $q3 = array(); + while (list($k, $v) = each($q)) { + if (!$q[$k]) continue; + $qq = "(UPPER(".$fields[$field]["dbname"].") LIKE '%".MyUpper($q[$k])."%')"; + $is_q1 = false; + for ($i = 0; $i < count($q1_fields); $i++) + if ($q1_fields[$i] == $field) $is_q1 = true; + $is_q2 = false; + for ($i = 0; $i < count($q2_fields); $i++) + if ($q2_fields[$i] == $field) $is_q2 = true; + if ($is_q1) $q2[$k] = $qq; + if ($is_q2) $q3[$k] = $qq; + } + global $basic_logic; + $qry_1 = implode(" ".$basic_logic." ", $q2); + $qry_2 = implode(" ".$basic_logic." ", $q3); } - $qry_1 = implode(" ".$basic_logic." ", $q2); - $qry_2 = implode(" ".$basic_logic." ", $q3); } } - uasort($fields, "myCmp"); $flds = array(); + reset($fields); while (list($k, $v) = each($fields)) { + $var = "query_$k"; + global $$var; array_push($flds, array( - "name" => MyEscape($k), - "caption" => MyEscape($v["caption"]) + "name" => MyEscape($k, true), + "caption" => MyEscape($v["caption"]), + "query" => MyEscape($$var) )); } $tp->assign("fields", $flds); - global $PHP_SELF, $section; + global $section, $section_menu; $tp->assign("section", $section); - $tp->assign("FORM_ACTION", $PHP_SELF.HTMLSpecialChars("?section=$section&stype=$stype")); + $tp->assign("section_menu", $section_menu); + $tp->assign("FORM_ACTION", HTMLSpecialChars("?section=$section§ion_menu={$section_menu}&stype=$stype")); $form = $tp->fetch("search.tpl"); return array($form, $qry_1, $qry_2); }