存档: 07月, 2010

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

2 条评论 2010年7月31日
今天碰到更新多个表问题。因为想同时更改多个用户的表数据,可是这些用户的信息又不在个一表内。一时之间还真有点范难。不过,经过不断的测试,终于通过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表中的数据了,如果还有不明白的可以给我留言。

和时间赛跑

1条评论 2010年7月30日

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

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

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

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

是时候学习smarty模板引擎了

没有评论 2010年7月29日

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

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

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

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

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

3 条评论 2010年7月28日

这两天被一个莫名其妙的错误: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)。一切正常。多么可笑的错误呀,却浪费了我这么长的时间。在网上搜索时,多数人跟我一开始一样,都是从程序中找问题。这也是没有解决这个问题的原因。看来以后要多方位找问题的原因。希望跟我有同样问题的人能尽快解决问题。

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

1条评论 2010年7月27日

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