/[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

Annotation of /inc/search.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.5 - (hide annotations)
Mon Sep 3 15:52:16 2001 UTC (22 years, 7 months ago) by ravilov
Branch: MAIN
Changes since 1.4: +10 -4 lines
Made the menu on the left into images. More bugfixes.

1 ravilov 1.1 <?php
2 ravilov 1.3 $basic_logic = "AND";
3 ravilov 1.5 function MySort($a, $b) {
4     return MyCompare($a["caption"], $b["caption"]);
5     }
6 ravilov 1.4 function Search($fields, $q1_fields, $q2_fields, $def_field = "") {
7 ravilov 1.3 global $go;
8 ravilov 1.1 $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 ravilov 1.3 if (${"delete_".$i}) { $go = false; $i++; continue; }
24     if (${"and_".$i}) { $go = false; ${"logic_".$i} = "AND"; }
25     if (${"or_".$i}) { $go = false; ${"logic_".$i} = "OR"; }
26 ravilov 1.1 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 ravilov 1.3 $go = false;
39 ravilov 1.1 $log = "";
40     if (${"and_".($i - 1)}) $log = "AND";
41     if (${"or_".($i - 1)}) $log = "OR";
42     if (count($search) > 0) $search[count($search) - 1]["logic"] = $log;
43     array_push($search, array(
44 ravilov 1.4 "field" => $def_field ? $def_field : "",
45 ravilov 1.1 "not" => "",
46     "query" => "",
47     "logic" => "",
48     "concat" => "OR",
49     "case" => ""
50     ));
51     }
52     $search[count($search) - 1]["logic"] = "";
53     $tp->assign("search", $search);
54     } else {
55     global $field, $query;
56 ravilov 1.4 $tp->assign("field", $field?$field:$def_field);
57 ravilov 1.1 $tp->assign("query", MyEscape($query));
58     }
59     if (!$stype) $stype = 0;
60     $tp->assign("stype", $stype);
61     if ($go) {
62     if ($stype) {
63     $qry = "";
64     $logic = "";
65     $i = 1;
66     while (${"search_".$i}) {
67     $field = ${"field_".$i};
68 ravilov 1.5 $not = ${"not_".$i} ? " NOT" : "";
69 ravilov 1.1 $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 ravilov 1.5 if (${"case_".$i}) $qq = "(".$fields[$field]["dbname"]."$not LIKE '%".$qry1[$k]."%')";
75     else $qq = "(UPPER(".$fields[$field]["dbname"].")$not LIKE '%".MyUpper($qry1[$k])."%')";
76 ravilov 1.1 $is_q1 = false;
77 ravilov 1.4 for ($j = 0; $j < count($q1_fields); $j++)
78     if ($q1_fields[$j] == $field) $is_q1 = true;
79 ravilov 1.1 $is_q2 = false;
80 ravilov 1.4 for ($j = 0; $j < count($q2_fields); $j++)
81     if ($q2_fields[$j] == $field) $is_q2 = true;
82 ravilov 1.1 if ($is_q1) $qry2[$k] = $qq;
83     if ($is_q2) $qry3[$k] = $qq;
84     }
85     $qry1 = implode(" ".${"concat_".$i}." ", $qry2);
86     if ($qry1) {
87 ravilov 1.4 if ($logic) $qry_1 .= " $logic ";
88 ravilov 1.1 $qry_1 .= "($qry1)";
89     $logic = ${"logic_".$i};
90     }
91     $qry1 = implode(" ".${"concat_".$i}." ", $qry3);
92     if ($qry1) {
93     if ($logic) $qry_2 .= " $logic ";
94     $qry_2 .= "($qry1)";
95     $logic = ${"logic_".$i};
96     }
97     $i++;
98     }
99     } else {
100     $q = preg_split('/\s+/', $query);
101     $q2 = array();
102     $q3 = array();
103     while (list($k, $v) = each($q)) {
104     if (!$q[$k]) continue;
105 ravilov 1.5 $qq = "(UPPER(".$fields[$field]["dbname"].") LIKE '%".MyUpper($q[$k])."%')";
106 ravilov 1.1 $is_q1 = false;
107     for ($i = 0; $i < count($q1_fields); $i++)
108     if ($q1_fields[$i] == $field) $is_q1 = true;
109     $is_q2 = false;
110     for ($i = 0; $i < count($q2_fields); $i++)
111     if ($q2_fields[$i] == $field) $is_q2 = true;
112     if ($is_q1) $q2[$k] = $qq;
113     if ($is_q2) $q3[$k] = $qq;
114     }
115 ravilov 1.3 global $basic_logic;
116 ravilov 1.1 $qry_1 = implode(" ".$basic_logic." ", $q2);
117     $qry_2 = implode(" ".$basic_logic." ", $q3);
118     }
119     }
120     $flds = array();
121     while (list($k, $v) = each($fields)) {
122     array_push($flds, array(
123     "name" => MyEscape($k),
124     "caption" => MyEscape($v["caption"])
125     ));
126     }
127 ravilov 1.5 usort($flds, "MySort");
128 ravilov 1.1 $tp->assign("fields", $flds);
129 ravilov 1.2 global $PHP_SELF, $section, $section_menu;
130 ravilov 1.1 $tp->assign("section", $section);
131 ravilov 1.2 $tp->assign("section_menu", $section_menu);
132 ravilov 1.3 $tp->assign("FORM_ACTION", $PHP_SELF.HTMLSpecialChars("?section=$section&section_menu={$section_menu}&stype=$stype"));
133 ravilov 1.1 $form = $tp->fetch("search.tpl");
134 ravilov 1.5 global $onload;
135     $onload .= "document.forms[0].elements[".($stype?2:1)."].focus();";
136 ravilov 1.1 return array($form, $qry_1, $qry_2);
137     }
138     ?>

  ViewVC Help
Powered by ViewVC 1.1.26