两行代码搞定多级关联搜索

上一篇 / 下一篇  2007-01-06 00:43:26

CODE:

(@$Ov1^8w0<?php
[6R"jO5p9Orm&n@0/*PHPChina 开源社区门户%Y:A,A}Q2h
        Name:                 Search.class.phpPHPChina 开源社区门户*Y$Cq$Z4E.|
        Author:         Genghonghao
Ge'] I/Bu0        Revisions:        2006/12/16PHPChina 开源社区门户T q3g"r_;^m K`
        功能     :   多条件关联查寻类
8nF'Js*Z+_PM0*/
2x%Q/OYH6K+M4EU0class Search extends Mysql_Class
"A{&R6JxPw T0{
V!t*g:F2Ga/p0        /**PHPChina 开源社区门户8EF ?.]n
         * $dbname:数据库名
dS(g K%a6Q{)z0         * $searchfiled:查询的字段名例如:SELECT username,userage,usersex FROM
2D\X%Bw"|8T0         * $termfiled查询的条件的字段,where后面的字段名。例如:如WHERE USERID<>25 AND usersex=1PHPChina 开源社区门户4FXK.`:UYBL
         * $termvalue查询条件对应的值和条件符号,例如:=@1@,<>@25@,like '%@com@%'等,最之是条件表达式右侧的东西和$termfiled数组一一对应,PHPChina 开源社区门户Rt2UD-??v"[b
         * 且下标必需为数字,通常情况下符号右边可能是变量,所以变量的前后一定要加上'@'符号
_?)oV4Wb0         *PHPChina 开源社区门户+F[1@9VW(HOgR"P
         */
GXB,|C[9`I0        private $dbname;                  
$k8o2L;\RZ k0        private $searchfiled = array();  PHPChina 开源社区门户$~kID _8z4|6{
        private $termfiled = array();   PHPChina 开源社区门户(l9s n%t;`+v
        private $termvalue = array();PHPChina 开源社区门户I0lw9W@,Qc6iS U
PHPChina 开源社区门户x%AcUUV!},o
        /**PHPChina 开源社区门户6a(Y ]Y9i(WN
         * 设置所有属性的值,参数为两个属性和其值PHPChina 开源社区门户 r0EMID1y
         */
BxhK)BU0        public function __construct($dbv,$sv,$fiv,$vv)PHPChina 开源社区门户L H-it7G
        {PHPChina 开源社区门户Zkj(w`(LZ,]&[)H
                $this->SetPm($dbv,$sv,$fiv,$vv);PHPChina 开源社区门户dvkY"pv3wV
        }PHPChina 开源社区门户%Xpy4?},NDn
        
P6Dwo8}j#H7? R0        /**PHPChina 开源社区门户_Yc ?1ir#t3j;r
         * 设置所有属性的值PHPChina 开源社区门户"R2MW}5l%E
         *PHPChina 开源社区门户&K`$`/o%RN}pB
         */
yB7sc^:T0        public function SetPm($v1,$v2,$v3,$v4)
@p5e.sU4F.j:Mm fNX0        {PHPChina 开源社区门户Q/y-H J!w S p
                self::__set('dbname',$v1);PHPChina 开源社区门户*GqTw.w;FZ
                self::__set('searchfiled',$v2);PHPChina 开源社区门户1EnXl.pv HU,n
                self::__set('termfiled',$v3);PHPChina 开源社区门户 e.{tyAJ,A4Y
                self::__set('termvalue',$v4);PHPChina 开源社区门户(p,]j4MP2NS1U*N [
        }PHPChina 开源社区门户&Z)`Q7R#Z%g2c^
        // * 设置属性的值的函数PHPChina 开源社区门户@a j Z+H~(C%ms?
        public function __set($pmname,$value)
X6} }%t-bzX+^ A H0        {PHPChina 开源社区门户 Y[J1qR T$bm
                if(isset($value))
0p2EjZ.q0                {
v3L SEk;h{0                        $this->$pmname = $value;
'O~@5GaD0                }PHPChina 开源社区门户;I5M(Rh:u p$LN
                else
L \zJ([ hSM0                {
r\y.i-k^Q.T0                        return null;
3Tp]J1v0                }
%R7\ Fzrn@x1B0        }
/`7u#];?e&]0        PHPChina 开源社区门户C`$nIbr7U
        /**
G6Z po%[ v0         * 参数$id是WHERE 后边跟的第一个字段名用来进行第一次判断PHPChina 开源社区门户1p&\U+[(g5y'hp+h
         * 参数$value是字段$id的默认值PHPChina 开源社区门户-j}z-V3v0k
         * 参数$emblem是条件判断的符号,例如>,<,<>等
#dqDV1l$x yR0         * 参数$last是SQL语句最部分,可以为空
[/T:j)b?#L4`&b/x0         * */
2MKYZ|z q#|0        public function GetSearch($id,$emblem="<>",$emblemvalue=0,$last="ORDER BY subtime DESC")PHPChina 开源社区门户+p GXou1r
        {PHPChina 开源社区门户"V)pFRJ$O1m
                $termfiled = $this->termfiled;PHPChina 开源社区门户ZR-p#A/nJUO%}j
                $termvalue = $this->termvalue;
|D-}5wN0                $filenum = count($this->termvalue);PHPChina 开源社区门户.Fa-o5Dj5o3W[
                if(count($this->termfiled) != count($this->termvalue))PHPChina 开源社区门户^n1Hu!N+X'{9c$J6Pi#B
                {
"Q,{X N2?'\bD.e @%UW0                        return null;
Hy"[ `#\ dj0                }PHPChina 开源社区门户3M,Dc%z5N#d/n\6O L
                elsePHPChina 开源社区门户rw+AC(m:UI
                {
J;N0xLD"G0                        $filed = "";
[ _*sh1K:D+i~|0                        foreach($this->searchfiled as $value)PHPChina 开源社区门户Mr/{f.I5H
                        {
eH"X0A"Q0                                $filed .= $value.",";PHPChina 开源社区门户;Pkr|%`w+[3K,a k
                        }PHPChina 开源社区门户udGg@
                        $fnum = strlen($filed);PHPChina 开源社区门户w'e;n.D/TX9T#y4|]
                        $filed = substr($filed,0,($fnum-1));
8kAdI$^7^#r P/r0                        $sql = "SELECT ";
`ZN^ [5v)UF4h#V^0                        $sql .= $filed;PHPChina 开源社区门户#ZmH9LY!pL v
                        $sql .= " FROM ";PHPChina 开源社区门户ygdRQXm
                        $sql .= $this->dbname;
gE%L*Ck!}+pb0                        $sql .= " WHERE {$id}{$emblem}{$emblemvalue} ";PHPChina 开源社区门户~ AB{HfJ
                        for($i=0;$i<$filenum;$i++)
Dk7KBW?qub u0                        {
~k#H;m+kqTNl0Q_0                                //$termvalue[$i] = str_replace(" ","",$termvalue[$i]);PHPChina 开源社区门户`_G6eP~
                                if(!strstr($termvalue[$i],"@@") and !strstr($termvalue[$i],"\"\"") and !strstr($termvalue[$i],"%%"))PHPChina 开源社区门户@0lI[(~:{VE
                                {
CO o-ot$AXJ6f0                                        $termvalue[$i] = str_replace("@","",$termvalue[$i]);
1j9Na)?FyPX0                                        $sql.= "AND {$termfiled[$i]}{$termvalue[$i]} ";
i:l6?4T-a9A"Y0                                }PHPChina 开源社区门户6q7v&M?| f_:y
                        }PHPChina 开源社区门户6i V\ N PBl }
                        if(!empty($last))
W2q4RQ.^0                        {
W1I!B\'q0                                $sql.=$last;PHPChina 开源社区门户+mxC]f7g5I;e#g
                        }PHPChina 开源社区门户%{Kc3h p-hU
                        // * Execute为父类中的数据据库操作方法,返回的值是数组!
?9j5Q+{C-u0                        return parent::Execute($sql);PHPChina 开源社区门户 p;W)cZOYK R9Kk
                }
n a0I5k"kt9t6N0        }
n4\*^\[0}PHPChina 开源社区门户&S3[;R}d&p.g#G
?>PHPChina 开源社区门户(R5@q2@']"n,I
实例:
"v^}M4\3m(xP-S)Q0<?php
C{1|%BsW0include_once('include/common.inc.php');
lw`(?eu0include_once('include/Search.class.php');  // 调用这个文件PHPChina 开源社区门户j~7y8NuI
$table = "tax_codex";  //查寻的数据库表名PHPChina 开源社区门户f6Vz j.G}l
$filedd = array('Title','Text'); //要查寻的字段PHPChina 开源社区门户y+]5zj:q%d
$term  = array('Click','City','Title'); // 要查寻的条件字段
yeGx5^ \eF^ S$|0$termv = array('>@0@','="@上海@"',' LIKE "%@中国@%"'); // 要查寻的条件
nZ c/FYh1cW/[0$objsql = new Mysql_Class();  
j*XA5U va~"I0$objsearch = new Search($table,$filedd,$term,$termv);  // 实例化这个类PHPChina 开源社区门户c.Q b s*Nl
$print_arr = $objsearch->GetSearch('CodexId',"<>","0","ORDER BY SubTime DESC"); // 调用类中方法行到结果数组
C#Burs X%C0print_r($print_arr); // 打印出数组中的值.PHPChina 开源社区门户;nx0Oq5`T\
?>
PHPChina 开源社区门户6o'\j,CCSW;]

 PHPChina 开源社区门户-e;A3O+zI8`:{


TAG:

274784501的个人空间 引用 删除 274784501   /   2007-09-13 20:26:50
太繁杂,不好用
Administrator_yqk 引用 删除 yinqikai1984   /   2007-02-04 21:22:29
5
这就两行啊
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

数据统计

  • 访问量: 27868
  • 日志数: 99
  • 图片数: 1
  • 建立时间: 2006-10-25
  • 更新时间: 2007-02-06

RSS订阅

Open Toolbar