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

Diff of /inc/search.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by ravilov, Mon Aug 27 09:17:40 2001 UTC revision 1.5 by ravilov, Mon Sep 3 15:52:16 2001 UTC
# Line 1  Line 1 
1  <?php  <?php
2          $basic_logic = "AND";          $basic_logic = "AND";
3          function myCmp($a, $b) {          function MySort($a, $b) {
4                  if ($a["caption"] == $b["caption"]) return 0;                  return MyCompare($a["caption"], $b["caption"]);
                 return ($a["caption"] < $b["caption"]) ? -1 : 1;  
5          }          }
6          function Search($fields, $q1_fields, $q2_fields) {          function Search($fields, $q1_fields, $q2_fields, $def_field = "") {
7                  global $go;                  global $go;
8                  $tp = new Smarty();                  $tp = new Smarty();
9                  $qry_1 = "";                  $qry_1 = "";
# Line 42  Line 41 
41                                  if (${"or_".($i - 1)}) $log = "OR";                                  if (${"or_".($i - 1)}) $log = "OR";
42                                  if (count($search) > 0) $search[count($search) - 1]["logic"] = $log;                                  if (count($search) > 0) $search[count($search) - 1]["logic"] = $log;
43                                  array_push($search, array(                                  array_push($search, array(
44                                          "field" => "",                                          "field" => $def_field ? $def_field : "",
45                                          "not" => "",                                          "not" => "",
46                                          "query" => "",                                          "query" => "",
47                                          "logic" => "",                                          "logic" => "",
# Line 54  Line 53 
53                          $tp->assign("search", $search);                          $tp->assign("search", $search);
54                  } else {                  } else {
55                          global $field, $query;                          global $field, $query;
56                          $tp->assign("field", $field);                          $tp->assign("field", $field?$field:$def_field);
57                          $tp->assign("query", MyEscape($query));                          $tp->assign("query", MyEscape($query));
58                  }                  }
59                  if (!$stype) $stype = 0;                  if (!$stype) $stype = 0;
# Line 66  Line 65 
65                                  $i = 1;                                  $i = 1;
66                                  while (${"search_".$i}) {                                  while (${"search_".$i}) {
67                                          $field = ${"field_".$i};                                          $field = ${"field_".$i};
68                                          $not = ${"not_".$i} ? "NOT" : "";                                          $not = ${"not_".$i} ? " NOT" : "";
69                                          $qry1 = preg_split('/\s+/', ${"query_".$i});                                          $qry1 = preg_split('/\s+/', ${"query_".$i});
70                                          $qry2 = array();                                          $qry2 = array();
71                                          $qry3 = array();                                          $qry3 = array();
72                                          while (list($k, $v) = each($qry1)) {                                          while (list($k, $v) = each($qry1)) {
73                                                  if (!$qry1[$k]) continue;                                                  if (!$qry1[$k]) continue;
74                                                  if (${"case_".$i})                                                  if (${"case_".$i}) $qq = "(".$fields[$field]["dbname"]."$not LIKE '%".$qry1[$k]."%')";
75                                                          $qq = "(".$fields[$field]["dbname"]." $not LIKE '%".$qry1[$k]."%')";                                                          else $qq = "(UPPER(".$fields[$field]["dbname"].")$not LIKE '%".MyUpper($qry1[$k])."%')";
                                                 else  
                                                         $qq = "(UPPER(".$fields[$field]["dbname"].") $not LIKE UPPER('%".$qry1[$k]."%'))";  
76                                                  $is_q1 = false;                                                  $is_q1 = false;
77                                                  for ($i = 0; $i < count($q1_fields); $i++)                                                  for ($j = 0; $j < count($q1_fields); $j++)
78                                                          if ($q1_fields[$i] == $field) $is_q1 = true;                                                          if ($q1_fields[$j] == $field) $is_q1 = true;
79                                                  $is_q2 = false;                                                  $is_q2 = false;
80                                                  for ($i = 0; $i < count($q2_fields); $i++)                                                  for ($j = 0; $j < count($q2_fields); $j++)
81                                                          if ($q2_fields[$i] == $field) $is_q2 = true;                                                          if ($q2_fields[$j] == $field) $is_q2 = true;
82                                                  if ($is_q1) $qry2[$k] = $qq;                                                  if ($is_q1) $qry2[$k] = $qq;
83                                                  if ($is_q2) $qry3[$k] = $qq;                                                  if ($is_q2) $qry3[$k] = $qq;
84                                          }                                          }
85                                          $qry1 = implode(" ".${"concat_".$i}." ", $qry2);                                          $qry1 = implode(" ".${"concat_".$i}." ", $qry2);
86                                          if ($qry1) {                                          if ($qry1) {
87                                                  if ($logic) $qry .= " $logic ";                                                  if ($logic) $qry_1 .= " $logic ";
88                                                  $qry_1 .= "($qry1)";                                                  $qry_1 .= "($qry1)";
89                                                  $logic = ${"logic_".$i};                                                  $logic = ${"logic_".$i};
90                                          }                                          }
# Line 105  Line 102 
102                                  $q3 = array();                                  $q3 = array();
103                                  while (list($k, $v) = each($q)) {                                  while (list($k, $v) = each($q)) {
104                                          if (!$q[$k]) continue;                                          if (!$q[$k]) continue;
105                                          $qq = "(UPPER(".$fields[$field]["dbname"].") LIKE UPPER('%".$q[$k]."%'))";                                          $qq = "(UPPER(".$fields[$field]["dbname"].") LIKE '%".MyUpper($q[$k])."%')";
106                                          $is_q1 = false;                                          $is_q1 = false;
107                                          for ($i = 0; $i < count($q1_fields); $i++)                                          for ($i = 0; $i < count($q1_fields); $i++)
108                                                  if ($q1_fields[$i] == $field) $is_q1 = true;                                                  if ($q1_fields[$i] == $field) $is_q1 = true;
# Line 120  Line 117 
117                                  $qry_2 = implode(" ".$basic_logic." ", $q3);                                  $qry_2 = implode(" ".$basic_logic." ", $q3);
118                          }                          }
119                  }                  }
                 uasort($fields, "myCmp");  
120                  $flds = array();                  $flds = array();
121                  while (list($k, $v) = each($fields)) {                  while (list($k, $v) = each($fields)) {
122                          array_push($flds, array(                          array_push($flds, array(
# Line 128  Line 124 
124                                  "caption" => MyEscape($v["caption"])                                  "caption" => MyEscape($v["caption"])
125                          ));                          ));
126                  }                  }
127                    usort($flds, "MySort");
128                  $tp->assign("fields", $flds);                  $tp->assign("fields", $flds);
129                  global $PHP_SELF, $section, $section_menu;                  global $PHP_SELF, $section, $section_menu;
130                  $tp->assign("section", $section);                  $tp->assign("section", $section);
131                  $tp->assign("section_menu", $section_menu);                  $tp->assign("section_menu", $section_menu);
132                  $tp->assign("FORM_ACTION", $PHP_SELF.HTMLSpecialChars("?section=$section&section_menu={$section_menu}&stype=$stype"));                  $tp->assign("FORM_ACTION", $PHP_SELF.HTMLSpecialChars("?section=$section&section_menu={$section_menu}&stype=$stype"));
133                  $form = $tp->fetch("search.tpl");                  $form = $tp->fetch("search.tpl");
134                    global $onload;
135                    $onload .= "document.forms[0].elements[".($stype?2:1)."].focus();";
136                  return array($form, $qry_1, $qry_2);                  return array($form, $qry_1, $qry_2);
137          }          }
138  ?>  ?>

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.5

  ViewVC Help
Powered by ViewVC 1.1.26