php同时修改多个mysql表内的多条数据

By admin | 七月 31, 2010
今天碰到更新多个表问题。因为想同时更改多个用户的表数据,可是这些用户的信息又不在个一表内。一时之间还真有点范难。不过,经过不断的测试,终于通过while循环语句解决了这个问题。下面是我同时修改三个表内10条数据(user[]包含了10个用户id)的例子,如果有更多的表按照例子添加即可,还是来看看代码吧:
if ($uids = implode_ids($_POST['user'])) {
//将提交来得的用户id作为数组保存在$uids中,implode_ids是自定义函数,用来处理user
$aids = $a_tatol = 0;
// 定义计数变量
$query = $DB->query(“SELECT u.id,p.pdistribution,p.pwithdraw,w.wwithdraw,w.wyesorno FROM users as u ,profit as p,withdraw as w WHERE u.id=p.uid and p.pid=w.pwid and u.id IN ($uids)”);
//逐一查询10个用户的相关信息
while ($article = $DB->fetch_array($query)) {
//将10个用户的信息作为数组赋值给$article
$pdistribution = $article['pdistribution'] – $article['wwithdraw'];
$pwithdraw     = $article['pwithdraw'] + $article['wwithdraw'];
$xianjin       = $pdistribution – $pwithdraw ;
//信息处理,可以写成自己需要的信息
if ($article['wyesorno'] && $xianjin >= ’0′) {
//条件判断
$a_tatol++;
//计数,该段程序中并未用到,可以去掉,为了省事就直接发上来了
$DB->unbuffered_query(“UPDATE users as u ,profit as p,withdraw as w SET p.pdistribution=’”.$pdistribution.”‘, p.pwithdraw=’”.$pwithdraw.”‘, w.wwithdraw=’0′, w.wwithdate=’0′,w.wreason=’0′,w.wyesorno=’0′ WHERE u.id=p.uid and p.pid=w.pwid and u.id=’”.$article['id'].”‘”);
//根据每个用户不同的id号修改与该用户相关的三个表中数据
}
//end if
}//end while
}
redirect(‘用户信息修改成功’, ‘admin.php’);
//redirect也是自定义函数,用户进行跳转的,可以随便写些东西在上面
} else {
redirect(‘未选择任何用户!’);
}

通过该php语句即可轻松的修改多个mysql表中的数据了,如果还有不明白的可以给我留言。

和时间赛跑

By admin | 七月 30, 2010

随着做不完的事情增多,每天的压力也就自然的增长。感觉还没怎么着呢,黄昏的太阳就出来了。时间是一去不返了,可我却没有获得相应的成就。对于我不得不说是一种疑憾。可即便这样,时间还是不肯回头看我一眼。怎么才能在有限的时间里做更多的事呢。每天不断的思索,还是没有答案。不知不觉的孩子都快降生了,如今的我还是一无所成。

对于家庭,我有很好的理财计划。根据复利公式,从现在起每年进行相应的投资即可解决生存问题。家庭和睦,自认为做的也不错。我跟妻子的生活都很幸福。我不是那种工作起来什么都不顾及的人。今生最大的幸福无论什么原因都是来自家庭的。所以必须要以这个为中心的。而真正困扰我的却是,没有什么留传下来的成就。对于一向要强的我来说是不能容忍的。也就是我必须要在事业上做出一些成就。

曾几何时我是如此的爱装电脑的操作系统,爱下载一些东西,爱聊天,爱看书,爱给别人修电脑,免费帮助别人做他们不想做的事。还喜欢查看别人的东西,修改别人的代码以供自己使用等等。而现在的我最头痛的就是电脑中毒,杀软升级进而系统崩溃。因为这样的话就得重新安装系统和软件,这个时间我可是真舍不得。鉴于此,我用上了linux。面对长时间的下载,我也怒了。实在需要下载的话就边做网站边下。聊天软件基本不用了,需要什么知识直接从网上看,宁肯自己花钱给别人修电脑也不亲自去修了。别人让帮忙时,如不是非我不可的情况,都会以工作推脱的。现在做网站基本上全是自己原创的了,因为我发现花3天修改别人的还不如花2天自己做。

现在的我晚上睡的较晚,早上不到5点就起了。做着自己喜欢的事情,期待有朝一日能做出让别人都认可的成就。有了梦想和目标,这样的生活才勉强让自己舒心一些。

是时候学习smarty模板引擎了

By admin | 七月 29, 2010

实践了几年的php,对于界面的修改实在是忍无可忍了。另一方面对它也有了一定的功底。于是想更进一步。在网上搜了一下,对smarty模版引擎的好评如潮。它的好处我就不介绍了,有兴趣的朋友可以自己去搜索一下。还是来规定一下怎么学习吧。

在网上随便搜索了一下,粗略的认为:smarty模板引擎就是在php中定义变量,然后通过制作的模板将其引入后显示在终端。也就是说,别人生产好了的产品,看看那里需要就送往那里。既然是这样,那就围绕这一主题加目的来学习吧!

还是跟以前学习php的过程一样,从实践中学习。因为我发现个问题,就是看书学不会,听课学不会,即使把知识全部倒背如流还是学不会。幸好我发现,从实践中学习的速度是很快而且很好的。这次学习smarty的实践项目就定位个企业网站的cms。成果就是,通过制作简单的模版就能制作好一个强大的企业网站。当然,优化是必不可少的,生成静态,网址转向,关键词设置是最基本的功能。其它的就等以后慢慢添加吧!必竟是个学习的产物,也是自己要用的。所以安全是最重要的。

好了,从今天开始就正式开始php+smarty的旅程了。先预祝自己一路顺风,成功大吉。哈哈……

Fatal error: Call to a member function on a non-object 的一种解决办法

By admin | 七月 28, 2010

这两天被一个莫名其妙的错误:Fatal error: Call to a member function on a non-object in d://www/htdocs/inc.php 77  搞的是晕头转向的。花了两天的功夫也没找出原因。在网上也没有搜索到解决的办法。无奈之下只好一行一行的比对代码,最后终于发现了错误之处:数据库字段错误!

一开始我根本就没有联想到这方面的原因,只是不断的在代码中找原因。无论怎么找都是没问题的,甚至将函数重写也无济于事。之后查看数据库表的时后发现了问题:原来表格中的”hash”定义错误,程序上设置的是32位编码,而我在数据库中设置 的字段类型却是varchar(16)。也就是这个原因导致用户登录时session无法进入数据库表。从而出现类似:Fatal error: Call to a member function on a non-object的错误。

将数据库表中”hash”字段数据库类型改为varchar(32)。一切正常。多么可笑的错误呀,却浪费了我这么长的时间。在网上搜索时,多数人跟我一开始一样,都是从程序中找问题。这也是没有解决这个问题的原因。看来以后要多方位找问题的原因。希望跟我有同样问题的人能尽快解决问题。

同时提交多个表单的解决方法

By admin | 七月 27, 2010

这两天应客户要求,建了几个投票项目。等建好后,客户很满意,只是有一点不足之处,那便是无法同时提交多个表单。也就是说,在同一个页面内的几个投票表单只需点击一个提交按扭,便可完成所有投票项目的提交。因先前没处理过这类问题,一时还真不知如何解决,在网上搜索同时提交多个表单的方法,也没找到适用的。于是,反复实践了N下。最终找到一种有效同时提交多个表单的方法。

还是先来看看代码吧,这样解释起来比较轻松:

<form id=”form1″ name=”form”>
….
</form>
<form id=”form2″ name=”form”>
….
</form>

<div style=”display:none;”>
<iframe name=”form1″></iframe>
<iframe name=”form2″></iframe>
</div>

<input type=”button” onclick=”submit_forms();”>提交</button>

<SCRIPT LANGUAGE=”JavaScript”>
<!–
function submit_forms()
{
form1.target=”form1″
form1.submit();

form2.target=”form2″
form2.submit();
}
//–>
</SCRIPT>

够简单吧,上面的代码同时提交了两个表单。同样,同时提交多个表单只需要多加就个ID和iframe即可。当然还要有一小段javascript。

centos5.4下安装chrome能输入中文

By admin | 六月 18, 2010

被windows的病毒折腾烦了。对于一直做开发的我来说,用一个稳定的系统是很重要的,于是选中了centos。对于追求快速的我来说,firefox虽然强大,但就是慢。四处搜索,终于找到了google的chrome浏览器。这样一来就满足了快速安全的需要。唯一让我郁闷的是官方产品不支持centos5.4。

据说有人联系过google chrome linux版的开发人员,chrome linux的开发人员说 “CentOS/RHEL5 are unfortunately too old” Some people even tried upgrading the packages and turning off the warnings but eventually gave up.” 就是说,CentOS/RHEL5的某些软件包太老了,有人冒险升级软件包,忽略警告,但最终还是没有办法让chrome linux beta启动起来。
不能因为这点事就放弃,于是开始不停的查找centos5.4下安装chrome的方法。经过两天的搜索,终于找到了两种可行的方法:

第一:通过chrome wrapper在RHEL5/CentOS5上运行chrome:

有国外的朋友做了个chrome wrapper, 作者主页; http://www.cs.bham.ac.uk/~cxs548/chrome
(chrome wrapper下载地址: http://www.cs.bham.ac.uk/~cxs548/chrome.tar.gz) , 下载chrome wrapper这个包,解压并运行 “chrome-wrapper”, 这个包自带chrome的依赖环境,不需要做任何设置,可以顺利将chrome运行起来。但我发现无法使用scime输入中文,就像我无法在wine下输入中文一样。找了好多方法也没能解决这个问题,这点真是太疑憾了。

第二:通过Chromium在RHEL5/CentOS5上运行chrome:

http://www.linux-powered.com/~ryoji.kamei/ChromiumCentOS5.xhtml

chromium相关rpm包下载页面 ftp://ftp.linux-powered.com/CentOS/5.x/Chromium/RPMS/
chromium相关源码rpm包下载页面 ftp://ftp.linux-powered.com/CentOS/5.x/Chromium/SRPMS/
Public key下载地址: ftp://ftp.linux-powered.com/keys/rk-public.key
安装预编译版的chromium

1.: 从ftp://ftp.linux-powered.com/CentOS/5.x/Chromium/RPMS/下载所有安装包,因为有些包安不上,只有把这些都下载下来才能安装成功.
2.  下载完毕后用“rpm -ivh” 命令安装它们,如遇依赖包问题,请先安装所需要依赖再试(我用的方法是:安装不上的就先不安,先去安装别的能装上的,等都装完了再返回来装先前装不上的)。
3.   从菜单Applications -> Internet 下找到“chromium” (Gnome), 或  /usr/bin/chromium 打开 chromium运行。OK~开始使用chromium.

自行编译安装chromium
1.   从ftp://ftp.linux-powered.com/CentOS/5.x/Chromium/SRPMS/下载这些rpm包 chromium-atk, chromium-cairo, chromium-expat, chromium-pango , chromium-glib2, chromium-gtk2, chromium-freetype, chromium-pixman, 并下载chromium源码rpm包。
2.   下载完毕后用“rpm -ivh” 命令安装它们,如遇依赖包问题,请先安装所需要依赖再试,别忘了chromium源码rpm包.
3.   安装更多的开发软件包用于编译. (如. gcc44-g++) 如果在上边的步骤已经安装过“chromium-” 开头的包则不需要再重新安装一次。比如安装过chromium-gtk2-devel 则不需要再安装 gtk2-devel.
4.   从http://dev.chromium.org/developers/how-tos/get-the-code获得最新的chromium源码包, chromium.xxxxxx.tgz 及  depot_tools.tgz 把它们放到 /usr/src/redhat/SOURCES/.
5.  cd /usr/src/redhat/SPECS. 编辑 chromium.spec文件中的 “Source0” 部分替换成你下载的源码包文件名. 并设置 %enable_network 0, 因为已经下载了最新的源码了。
6.  运行命令 “rpmbuild -ba chromium.spec”, 如果你无法编译成功chromium,可能是因为:

(1) 未安装完所需要的rpm包.
(2) 压缩包中的源代码被破坏.
如果是 (2) 你可以试试“%enable_network 1”。它会通过网络同步源码。 如果是 (1) 请看错误消息并补装相应的依赖包再试。

自行编译安装也是从网上找到的,没有进行过实际的安装,我是用的第一种RPM包安装的,一切运行正常。能输入汉字。而chrome wrapper始终无法输入汉字!

css+javascript实现鼠标点击后状态不变

By admin | 五月 21, 2010

网站一般都有比较漂亮的导航菜单,尤其是当鼠标经过时发生的激活变化。唯一遗憾的就是,这种状态在点击后就消失了。需要重新将鼠标移动其上进行激活。为了解决这点遗憾,经过两天的试验,终于找到一条实现方法。这是用javascript加css来实现的。

首先说明,该段代码是在一个页面内实现的。也就是,所有内容均在一个页面内进行调用。做为一个小栏目的导航还是很不错的。代码很少,却很实用,还是先看看代码。

<div id=”headerdi”><div>
<div id=”neirongmu1″ onclick=”neirong(1)”>1</div>
<div id=”neirongmu2″ onclick=”neirong(2)”>2</div>
<div id=”neirongmu3″ onclick=”neirong(3)”>3</div>
<div id=”neirongmu4″ onclick=”neirong(4)”>4</div>
<div id=”neirongmu5″ onclick=”neirong(5)”>5</div>
<div id=”neirongmu6″ onclick=”neirong(6)”>6</div>
<div id=”neirongmu7″ onclick=”neirong(7)”>7</div>
<div id=”neirongmu8″ onclick=”neirong(8)”>8</div>
<div id=”neirongmu9″ onclick=”neirong(9)”>9</div>

<SCRIPT LANGUAGE=”JavaScript”>
<!–
function neirong(t){
for(var i=1;i<10 ;i++ ){
if(i==t){
document.getElementById(“neirong”+i).style.display=”;
if(i==t){
document.getElementById(“neirongmu”+i).className=(“tiao”+i+”p”+i);
}else{
document.getElementById(“neirongmu”+i).className=(“tiao”+i);
}
}else{
document.getElementById(“neirong”+i).style.display=’none’;
if(i==9){
document.getElementById(“neirongmu”+i).className=(“tiao”+i);
}else{
document.getElementById(“neirongmu”+i).className=(“tiao”+i);
}
}
}
}
neirong(1);
//–>
</SCRIPT>
</div>
</div>

<div id=”neirong1″>
1

</div>

<div id=”neirong2″ style=”display:none;”>
2
</div>

<div id=”neirong3″ style=”display:none;”>
3
</div>

<div id=”neirong4″ style=”display:none;”>
4
</div>

<div id=”neirong5″ style=”display:none;”>
5
</div>

<div id=”neirong6″ style=”display:none;”>
6
</div>

<div id=”neirong7″ style=”display:none;”>
7
</div>

<div id=”neirong8″ style=”display:none;”>
8
</div>

<div id=”neirong9″ style=”display:none;”>
9
</div>

css代码部分

#headerdi{width:100%;height:35px;margin:0px;}
.headerdi{position:absolute;width:940px;height:35px;margin:0 auto;top:155px;}
.headerdi .tiao1{position:absolute;left:21px;background:url(zhunbei_an.gif) no-repeat;width:112px;height:35px;z-index:9;}
.headerdi .tiao2{position:absolute;left:119px;background:url(huaiyun_an.gif) no-repeat;width:112px;height:35px;z-index:8;}
.headerdi .tiao3{position:absolute;left:217px;background:url(fenmian_an.gif) no-repeat;width:112px;height:35px;z-index:7;}
.headerdi .tiao4{position:absolute;left:315px;background:url(yuezi_an.gif) no-repeat;width:112px;height:35px;z-index:6;}
.headerdi .tiao5{position:absolute;left:413px;background:url(xinsheng_an.gif) no-repeat;width:112px;height:35px;z-index:5;}
.headerdi .tiao6{position:absolute;left:511px;background:url(01_an.gif) no-repeat;width:112px;height:35px;z-index:4;}
.headerdi .tiao7{position:absolute;left:609px;background:url(13_an.gif) no-repeat;width:112px;height:35px;z-index:3;}
.headerdi .tiao8{position:absolute;left:707px;background:url(35_an.gif) no-repeat;width:112px;height:35px;z-index:2;}
.headerdi .tiao9{position:absolute;left:805px;background:url(shaoer_an.gif) no-repeat;width:112px;height:35px;z-index:1;}

.headerdi .tiao1p1{position:absolute;left:21px;background:url(zhunbei_liang.gif) no-repeat;width:112px;height:35px;z-index:11;}
.headerdi .tiao2p2{position:absolute;left:119px;background:url(huaiyun_liang.gif) no-repeat;width:112px;height:35px;z-index:10;}
.headerdi .tiao3p3{position:absolute;left:217px;background:url(fenmian_liang.gif) no-repeat;width:112px;height:35px;z-index:9;}
.headerdi .tiao4p4{position:absolute;left:315px;background:url(yuezi_liang.gif) no-repeat;width:112px;height:35px;z-index:8;}
.headerdi .tiao5p5{position:absolute;left:413px;background:url(xinsheng_liang.gif) no-repeat;width:112px;height:35px;z-index:7;}
.headerdi .tiao6p6{position:absolute;left:511px;background:url(01_liang.gif) no-repeat;width:112px;height:35px;z-index:6;}
.headerdi .tiao7p7{position:absolute;left:609px;background:url(13_liang.gif) no-repeat;width:112px;height:35px;z-index:5;}
.headerdi .tiao8p8{position:absolute;left:707px;background:url(35_liang.gif) no-repeat;width:112px;height:35px;z-index:4;}
.headerdi .tiao9p9{position:absolute;left:805px;background:url(shaoer_liang.gif) no-repeat;width:112px;height:35px;z-index:3;}

这段css代码是我写程序时用的,没有任何更改。可以根据自己的需要进行适当的修改。也可以完全删除重写。具体实现什么样的样式就看大家的想像力了。如所有导航菜单背景都相同。只要写四条css就行了。细看一下javascript代码就懂了。

google的收录量少于baidu?

By admin | 五月 20, 2010

前些日子,小站在谷歌的收录量呈直线下划趋势,心急如焚。本以为与百度的情况一样。只是搜索引擎内部短暂的更新所致。在同样的情况下,百度对本站的收录量反而不断的增长。曾一度莫名其妙的认为,这两家公司是不是一个老板当家。不过,最终还是否定了这个观点。

直到最近,情况才有所好转。google对本站的收录量不在减少,停在了一个相对稳定的数字上。而百度却增长了不少。对比了这两个搜索引擎发现,也是我第一次发现。google的收录量竟然少于baidu。难道是google搬家,掉了不少东西,还是百度少了个国内对手一时高兴过了头?一直以来,百度对网站的收录量都是低于google,这次却来了个360度大转变。

经过思索,以及google网站的变化。个人觉得,不是google收录能力下降,也不是被搬家影响。而是google更加强大了,更加个性了。对网站的质量,考虑的更加严格了。也就是说,技术上了一个新的台阶。必竟,现在的“优化”技术太在乎排名而不是做大做强网站了,加上百度升级,自己搬家。google要是不升级才奇怪呢。

不管怎么弄吧,反正我不会因为网站的收录量少而不高兴。因为搜索引擎的升级只会给用户带来好处。而我的网站也是同一个目的,所以还是很放心的。

用CSS设置半透明的背景

By admin | 五月 5, 2010

在CSS中有一个Alpha滤镜,这个滤镜可以设置目标元素的透明度。还可以通过指定坐标,从而实现各种不同范围的透明度。具体语法如下:
{filter: alpha(opacity=#opacity,finishopacity=#finishopacity,style=#style,

startx=#startx,starty=#starty,finishx=#finishx,finishy=#finishy)}

具体参数含义如下:
opacity 透明度。默认的范围是从0 到 100,他们其实是百分比的形式。也就是说,0代表完全透明,100代表完全不透明。
finishopacity 是一个可选参数,如果想要设置渐变的透明效果,就可以使用他们来指定结束时的透明度。范围也是0 到 100。
style   指定透明区域的形状特征:0 代表统一形状,1 代表线形,2 代表放射状,3 代表矩形
startx  渐变透明效果开始处的 X坐标。
starty  渐变透明效果开始处的 Y坐标。
finishx 渐变透明效果结束处的 X坐标。
finishy 渐变透明效果结束处的 Y坐标。

以上的参数可以选用,可以只设置一个opacity
例如:
{filter:alpha(opacity=50)}
这个就是半透明的设置,只要把{}中的代码加入到需要设置的模版中的{}的即可,记得与前面的代码之间要用”;”间隔,不然设置是无效的

例如:
我要设置模版区域背景的颜色(白色)+半透明[就是我现在blog的效果]
只要在
.modbox{}
.modbl{}
.modbc{}
.modbr{}
中都设置background-color:white
这些就是模版背景设置的ID

然后再在.modbox,.modbl,.modbc,.modbr{}如果没有这个的话可以自己加一个
中加入filter : alpha(opacity=80)就可以达到所有模版的背景都是半透明的效果了

如果希望像我这样只显示blog的背景,别的都全透明的话,那么就在别的模版中加入背景全透明的代码即可
background:transparent                       这就是背景全透明的代码
各模版ID请参照链接:百度空间CSS说明

不过这样的话,相关模版的主要区域是透明了,可是底下还会有一条颜色留着的,所以另外还要在
.modbl{}
.modbc{}
.modbr{}
中也加入背景全透明的代码,这样才能让模版区域完全透明,就像我现在的效果一样

另外这个参数目前只能用于背景色的设置,背景图片无法设置为半透明

我把我的背景半透明代码贴出来吧
.modbox{padding:10px 10px 0 10px;background-color:#FFFFFF;border-left:1px solid #813533;border-right:1px solid #813533}
.modbl{background:transparent;border-left:1px solid #813533;border-bottom:1px solid #813533;line-height:1px}
.modbc{background:transparent;border-bottom:1px solid #813533;line-height:1px}
.modbr{background:transparent;;border-right:1px solid #813533;border-bottom:1px solid #813533;line-height:1px}
.modbox,.modbl,.modbc,.modbr{filter:alpha(opacity=80);-moz-opacity:0.8;width:auto !important;width:100%}
红色字是关键设置,如果不想设置全透明的话,可以把.modbl{}.modbc{}.modbr{}三个中的background:transparent改成.modbox{}中的background-color:#FFFFFF,当然这里的#FFFFFF你可以换成自己喜欢的颜色,不过为了美观统一,建议这4个的颜色代码最好设置为一样的

附:#FFFFFF就是white,白色;#000000就是black,黑色

鉴于很多朋友都想知道我设置全透明的模块ID的代码,所以这里特别贴出来,供大家参考:
个人档案#m_pro{}
空间标题栏#m_header{}
菜单栏是#tab{}
文章区域#m_blog{}
相册区#m_album{}
友情链接#m_links{}
文章分类#m_artclg{}
最新评论#m_comment{}
访问量区域#comm_info{}
以上所有模块[除空间标题和菜单外]背后的大模块.stage{}
这就是几个大模块的ID,大家只要把全透明代码添加到其中想要设置全透明的ID{}内就可以了,如果没有你要设置的模块ID{},就自己添加上去,添加在空白处就可以了

突然觉得自己很忙

By admin | 四月 28, 2010

这段时间,随着工作量的增大。闲暇时间越来越少,本来想晚上加班做些事情,以弥补白天的不足。可结婚后的生活不允许你这样做,老婆的一句话。就彻底断了晚上加班的事实。

自己的理想在这样的情况下,还能存下多少。一次次一回回的把任务往后托,也就造成了现在的状况。突然就有种忙不完的感觉,感觉自己很累。无论是身体还是心灵,都是这样的无助。也许真该休息一下了,现实又不允许你这样。五一放假去旅行一天,放松一下紧张的心灵,也许会好些吧。

都市中的生活也许就这样吧,让你永远没有时间去做自己的事情。不断的消耗你的时间与精力,直到你没有了时间与精力去奋斗、去做自己喜欢的事情时,才让你在无尽的悔恨中把希望寄托在下一代身上。一代一代的这样传承。这就是生活吗?

不想这样,可是又没有力量去扭转即成的事实。连自己的老婆都无法说服,还谈什么别的吗?可这样一天一天的过,又觉得很痛苦。生活真的只能这样吗。我不是个认命的人,我不想要这样的生活。我要去奋斗,去做一个有用的人。

有时,也只有坚强的意志才能扭转人生自然产生的方向。这就是个人的力量。

分页导航: 上页 1 2 3 4 5 6 7 8 9 10 ...13 14 15 下页