Archive for: 四月, 2010

自定义规则比较字符串大小

四 22 2010 Published by zdy under 编程技巧

function compare($data1=0,$data2=0){
 //regle:1<2<3<5<4<6<7<8<10<9
 $tmp    = array(1,2,3,5,4,6,7,8,10,9);
 $cdata1=$cdata2=0;
 foreach($tmp as $key=>$value){
 if($data1==$value){
 $cdata1=$key;
 }
 if($data2==$value){
 $cdata2=$key;
 }
 }
 return ($cdata1>$cdata2)?$data1:$data2;
}

No responses yet

sql两表联查并批量更新其中一表

四 21 2010 Published by zdy under 编程技巧

简要情况如下
tableA(id,price)
tableB(pid,sid,shuliang)
其中tableA.id=tableB.pid,tableA.id=tableB.sid
大致意思是,
一个A可能由几个A元素组成,元素A有价格,组合A需要通过计算(每个元素A的价格x数量)得到价格
下面是目前想到的用法,使用了一个临时表,应该还有更好的解法

$list=array();
$bundle_id=ARRAY();
$sql="SELECT pb.bundle_id, sum(p.products_price*pb.subproduct_qty) as cout, sum(p.products_price_fournisseur*pb.subproduct_qty) as coutf FROM products p,products_bundles pb WHERE p.products_id=pb.subproduct_id GROUP BY pb.bundle_id";
$query=tep_db_query($sql);
while($value=tep_db_fetch_array($query)){
 $list[]=$value;
}
if($list){
 //clean the table
 tep_db_query("DELETE FROM products_calculer_ensemble");
 $insert="INSERT INTO products_calculer_ensemble VALUES";
 $link='';
 foreach($list as $value){
 $insert.=$link."($value[bundle_id],$value[cout],$value[coutf])";
 $link=',';
 }
 tep_db_query($insert);
 tep_db_query("UPDATE products_calculer_ensemble SET coutf=0 WHERE coutf>0 AND pid IN (SELECT pb.bundle_id FROM products p,products_bundles pb WHERE p.products_id=pb.subproduct_id AND p.products_price_fournisseur=0)");
 tep_db_query("UPDATE products p,products_calculer_ensemble pce SET p.products_price=pce.cout, p.products_price_fournisseur=pce.coutf WHERE p.products_id=pce.pid");
}

No responses yet

sql语句联表查询

四 20 2010 Published by zdy under 编程技巧

1.left join

sql语句如下:
select * from A
left join B
on A.aID = B.bID

结果如下:
aID               aNum                          bID                  bName
1                   a20050111                1                      2006032401
2                   a20050112                2                     2006032402
3                   a20050113                3                     2006032403
4                   a20050114                4                     2006032404
5                   a20050115                NULL              NULL
(所影响的行数为 5 行)

结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.

2.right join
sql语句如下:
select * from A
right join B
on A.aID = B.bID
结果如下:
aID               aNum                          bID                  bName
1                   a20050111                1                      2006032401
2                   a20050112                2                     2006032402
3                   a20050113                3                     2006032403
4                   a20050114                4                     2006032404
NULL           NULL                          8                     2006032408
(所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
3.inner join
sql语句如下:
select * from A
innerjoin B
on A.aID = B.bID

结果如下:
aID               aNum                          bID                  bName
1                   a20050111                1                      2006032401
2                   a20050112                2                     2006032402
3                   a20050113                3                     2006032403
4                   a20050114                4                     2006032404

结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.

No responses yet

php字符串处理函数

四 01 2010 Published by zdy under 编程技巧

AddSlashes: 字符串加入斜线。
bin2hex: 二进位转成十六进位。
Chop: 去除连续空白。
Chr: 返回序数值的字符。
chunk_split: 将字符串分成小段。
convert_cyr_string: 转换古斯拉夫字符串成其它字符串。
crypt: 将字符串用 DES 编码加密。
echo: 输出字符串。
explode: 切开字符串。
flush: 清出输出缓冲区。
get_meta_tags: 抽出文件所有 meta 标记的资料。
htmlspecialchars:将特殊字符转成 HTML 格式。
htmlentities: 将所有的字符都转成 HTML 字符串。
implode: 将数组变成字符串。
join: 将数组变成字符串。
ltrim: 去除连续空白。
md5: 计算字符串的 MD5 哈稀。
nl2br: 将换行字符转成 <br>。
Ord: 返回字符的序数值。
parse_str: 解析 query 字符串成变量。
print: 输出字符串。
printf: 输出格式化字符串。
quoted_printable_decode: 将 qp 编码字符串转成 8 位字符串。
QuoteMeta: 加入引用符号。
rawurldecode: 从 URL 专用格式字符串还原成普通字符串。
rawurlencode: 将字符串编码成 URL 专用格式。
setlocale: 配置地域化信息。
similar_text: 计算字符串相似度。
soundex: 计算字符串的读音值
sprintf: 将字符串格式化。
strchr: 寻找第一个出现的字符。
strcmp: 字符串比较。
strcspn: 不同字符串的长度。
strip_tags: 去掉 HTML 及 PHP 的标记。
StripSlashes: 去掉反斜线字符。
strlen: 取得字符串长度。
strrpos: 寻找字符串中某字符最后出现处。
strpos: 寻找字符串中某字符最先出现处。
strrchr: 取得某字符最后出现处起的字符串。
strrev: 颠倒字符串。
strspn: 找出某字符串落在另一字符串遮罩的数目。
strstr: 返回字符串中某字符串开始处至结束的字符串。
strtok: 切开字符串。
strtolower: 字符串全转为小写。
strtoupper: 字符串全转为大写。
str_replace: 字符串取代。
strtr: 转换某些字符。
substr: 取部份字符串。
trim: 截去字符串首尾的空格。
ucfirst: 将字符串第一个字符改大写。
ucwords: 将字符串每个字第一个字母改大写。

No responses yet