/[health_html]/inc/search.php
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /inc/search.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations)
Fri Aug 10 13:59:06 2001 UTC (22 years, 8 months ago) by ravilov
Branch: MAIN
Search form modularized.

1 <?php
2 $basic_logic = "OR";
3 function myCmp($a, $b) {
4 if ($a["caption"] == $b["caption"]) return 0;
5 return ($a["caption"] < $b["caption"]) ? -1 : 1;
6 }
7 function Search($fields, $q1_fields, $q2_fields) {
8 $tp = new Smarty();
9 $qry_1 = "";
10 $qry_2 = "";
11 $form = "";
12 global $stype;
13 if ($stype) {
14 $search = array();
15 $i = 1;
16 while (true) {
17 global ${"search_".$i};
18 if (!${"search_".$i}) break;
19 global ${"delete_".$i}, ${"and_".$i}, ${"or_".$i},
20 ${"field_".$i}, ${"not_".$i},
21 ${"query_".$i}, ${"logic_".$i},
22 ${"concat_".$i}, ${"case_".$i};
23 if (${"delete_".$i}) { $i++; continue; }
24 if (${"and_".$i}) ${"logic_".$i} = "AND";
25 if (${"or_".$i}) ${"logic_".$i} = "OR";
26 array_push($search, array(
27 "field" => ${"field_".$i},
28 "not" => ${"not_".$i},
29 "query" => MyEscape(${"query_".$i}),
30 "logic" => ${"logic_".$i},
31 "concat" => ${"concat_".$i},
32 "case" => ${"case_".$i}
33 ));
34 $i++;
35 }
36 global ${"and_".($i - 1)}, ${"or_".($i - 1)};
37 if (count($search) == 0 || ${"and_".($i - 1)} || ${"or_".($i - 1)}) {
38 $log = "";
39 if (${"and_".($i - 1)}) $log = "AND";
40 if (${"or_".($i - 1)}) $log = "OR";
41 if (count($search) > 0) $search[count($search) - 1]["logic"] = $log;
42 array_push($search, array(
43 "field" => "",
44 "not" => "",
45 "query" => "",
46 "logic" => "",
47 "concat" => "OR",
48 "case" => ""
49 ));
50 }
51 $search[count($search) - 1]["logic"] = "";
52 $tp->assign("search", $search);
53 } else {
54 global $field, $query;
55 $tp->assign("field", $field);
56 $tp->assign("query", MyEscape($query));
57 }
58 if (!$stype) $stype = 0;
59 $tp->assign("stype", $stype);
60 global $go;
61 if ($go) {
62 if ($stype) {
63 $qry = "";
64 $logic = "";
65 $i = 1;
66 while (${"search_".$i}) {
67 $field = ${"field_".$i};
68 $not = ${"not_".$i} ? "NOT" : "";
69 $qry1 = preg_split('/\s+/', ${"query_".$i});
70 $qry2 = array();
71 $qry3 = array();
72 while (list($k, $v) = each($qry1)) {
73 if (!$qry1[$k]) continue;
74 if (${"case_".$i})
75 $qq = "(".$fields[$field]["dbname"]." $not LIKE '%".$qry1[$k]."%')";
76 else
77 $qq = "(UPPER(".$fields[$field]["dbname"].") $not LIKE UPPER('%".$qry1[$k]."%'))";
78 $is_q1 = false;
79 for ($i = 0; $i < count($q1_fields); $i++)
80 if ($q1_fields[$i] == $field) $is_q1 = true;
81 $is_q2 = false;
82 for ($i = 0; $i < count($q2_fields); $i++)
83 if ($q2_fields[$i] == $field) $is_q2 = true;
84 if ($is_q1) $qry2[$k] = $qq;
85 if ($is_q2) $qry3[$k] = $qq;
86 }
87 $qry1 = implode(" ".${"concat_".$i}." ", $qry2);
88 if ($qry1) {
89 if ($logic) $qry .= " $logic ";
90 $qry_1 .= "($qry1)";
91 $logic = ${"logic_".$i};
92 }
93 $qry1 = implode(" ".${"concat_".$i}." ", $qry3);
94 if ($qry1) {
95 if ($logic) $qry_2 .= " $logic ";
96 $qry_2 .= "($qry1)";
97 $logic = ${"logic_".$i};
98 }
99 $i++;
100 }
101 } else {
102 $q = preg_split('/\s+/', $query);
103 $q2 = array();
104 $q3 = array();
105 while (list($k, $v) = each($q)) {
106 if (!$q[$k]) continue;
107 $qq = "(UPPER(".$fields[$field]["dbname"].") LIKE UPPER('%".$q[$k]."%'))";
108 $is_q1 = false;
109 for ($i = 0; $i < count($q1_fields); $i++)
110 if ($q1_fields[$i] == $field) $is_q1 = true;
111 $is_q2 = false;
112 for ($i = 0; $i < count($q2_fields); $i++)
113 if ($q2_fields[$i] == $field) $is_q2 = true;
114 if ($is_q1) $q2[$k] = $qq;
115 if ($is_q2) $q3[$k] = $qq;
116 }
117 $qry_1 = implode(" ".$basic_logic." ", $q2);
118 $qry_2 = implode(" ".$basic_logic." ", $q3);
119 }
120 }
121 uasort($fields, "myCmp");
122 $flds = array();
123 while (list($k, $v) = each($fields)) {
124 array_push($flds, array(
125 "name" => MyEscape($k),
126 "caption" => MyEscape($v["caption"])
127 ));
128 }
129 $tp->assign("fields", $flds);
130 global $PHP_SELF, $section;
131 $tp->assign("section", $section);
132 $tp->assign("FORM_ACTION", $PHP_SELF.HTMLSpecialChars("?section=$section&stype=$stype"));
133 $form = $tp->fetch("search.tpl");
134 return array($form, $qry_1, $qry_2);
135 }
136 ?>

  ViewVC Help
Powered by ViewVC 1.1.26