php+mysql 一次更新多行数据 UPDATE能实现吗? 真急!真急!

magicone 2008-03-08 08:15:45
要做一个让用户打分的东西出来,要一次更新多行数据,update能实现吗?用的是mysql

我mysql水平比较烂~~ 没办法,要是多行select我知道可以用while,update有什么办法吗???

用户看到的界面是这样的,让用户来打分,读SESSION可以得到 当前用户

编号 标题 作者 打分
1 标题1 小a 50
7 标题2 小a 60
53 标题3 小a 70

填完以后写到表里就可以了


在用户填表前会自动形成此起表结构 就像这样

编号 标题 作者 用户1 用户2 用户3 总分 平均分
1 标题1 小a 50 60 70
7 标题2 小b 40 50 70
53 标题3 小c 20 60 80

问题是,怎么updata把用户打的分填进来

还要自动算出总分和平均分


分不多,大家多帮忙吧

多谢多谢,急急急急,不尽快交,boss又该骂了...... 刚进行小小程序员的悲哀


...全文
1028 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbhero 2010-08-12
  • 打赏
  • 举报
回复
就这都能结贴?

为什么一定要用update?

REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},…),(…),…

REPLACE into 表情 (编号,标题,作者,用户2,用户2,用户3) values (1,'标题1','小a',50,60,70),(7,'标题2','小b',50,60,70),(35,'标题2','小b',50,60,70);

这样就好了呀。。。
  • 打赏
  • 举报
回复
哎,我给他说了用FOR
他都没想到
magicone 2008-03-10
  • 打赏
  • 举报
回复
恩,楼上老大,多谢了,加个好友吧
magicone 2008-03-10
  • 打赏
  • 举报
回复
恩,楼上的老大一看就是高手.

有的时候胡涂起来,简单的问题也不明白了
joycheney 2008-03-09
  • 打赏
  • 举报
回复
原来你是这问题,早说嘛,你看你问题提的,这和mysql有啥关系?

php里面可以有数组的,哪用你那么麻烦:

<?php
if (isset( $_POST [ 'action' ]) && $_POST [ 'action' ] == 'submitted' ) {
$arr = $_POST["mark"];
foreach ($arr as $key => $value) {
UPDATE………………
}
} else {
?>
<form action=" <?php echo $_SERVER [ 'PHP_SELF' ]; ?> " method="post">

………………………………………………………………………………………………………………

作品1评分: <input type="text" name="mark[作品1]"><br />

………………………………………………………………………………………………………………

作品2评分: <input type="text" name="mark[作品2]"><br />

………………………………………………………………………………………………………………

<input type="hidden" name="action" value="submitted" />
<input type="submit" name="submit" value="submit me!" />
</form>
<?php
}
?>
magicone 2008-03-09
  • 打赏
  • 举报
回复
哈哈,楼上的老大最近睡的不好吧,火气有点大,连数组都不知道还写什么php~~

用了个list+each搞定了 

while(list($name,$value)=each($_POST))

UPDATE.......

打了那么多字,辛苦了..... 分都给您吧.... 要是最近太辛苦,吃个黄牛清心吧,比较有帮助^^
joycheney 2008-03-09
  • 打赏
  • 举报
回复
兄弟,你知道啥叫异步啥叫同步么。。。。我看到你的描述就晕掉了,你有能力得到用户在编号1的评分,编号7的评分,编号53的评分么?

如果没这能力,多看看php的书

如果有这能力,从第一个执行到最后一个
UPDATE 'table' set 用户1=评分1 WHERE 编号=1

如果你告诉我们大家你连从第一个执行到最后一个都不会,你自己多看点书,看看for语句怎么写的吧,数组是个啥东西好了,在这也问不出啥东西来的,一点基础都没有我们讲了你也听不懂?

前面说的很好了,循环执行
  • 打赏
  • 举报
回复
for.....

update `table` set `总分`=`用户1`+`用户2`+`用户3`,`平均分`=(`用户1`+`用户2`+`用户3`)/3 where `总分` = null;

next
magicone 2008-03-09
  • 打赏
  • 举报
回复
伟大的程序员们,回复下呀
  • 打赏
  • 举报
回复
for.....

update `table` set `总分`=`用户1`+`用户2`+`用户3`,`平均分`=(`用户1`+`用户2`+`用户3`)/3 where `总分` = null;

next
magicone 2008-03-09
  • 打赏
  • 举报
回复
楼上的老大,先谢谢您.

请再看一次我描述的内容, 我写的表比较简单,是因为想把问题简单化,不把别的数据加进来

第一个不是表,是用户界面.....

因为用户打分是异步的,

基本这个问题主要是想当用户打分

编号 标题 作者 打分
1 标题1 小a 50
7 标题2 小a 60
53 标题3 小a 70

填完以后写到表里就可以了


编号 标题 作者 用户1 用户2 用户3 总分 平均分
1 标题1 小a 50 60 70
7 标题2 小b 60 20 70
53 标题3 小c 70 80 80



因为这个用户1打完分后要update所有行的用户1字 所以我估计要写个循环,不太会写,就是这么回事。

可能是我前面的循环有错的地方吧,报歉了。

您再多帮忙吧。谢谢
joycheney 2008-03-09
  • 打赏
  • 举报
回复
兄弟,要我是你boss我也想骂你。。。。

不过现在不是骂你的时候,你的问题是不是说用户之间互相不了解,用户数目也不确定,数据表不知道怎么设计才能采集每个用户的评分,是这样么?

如果不是,我们就没有看出你问题在什么地方,首先多的不说,总分平均分就不该放在数据库里面,需要输出到页面的时候,自己计算好了

如果是用户数目不确定,数据库这么设计:

作品编号 用户 评分
1 用户1 评分1
1 用户2 评分2
1 用户3 评分3

SELECT 评分 FROM 评分表 WHERE 作品编号=1 AND 用户="用户1";
SELECT SUM(评分) as 总分, AVG(评分) as 平均分 FROM 评分表 GROUP BY 作品编号 WHERE 作品编号=1;

如果不是用户数目不确定,都不知道你在问什么莫名其妙的东西
magicone 2008-03-08
  • 打赏
  • 举报
回复
楼上的老大,如何循环
cuidenghong123 2008-03-08
  • 打赏
  • 举报
回复
循环执行
magicone 2008-03-08
  • 打赏
  • 举报
回复
1楼上的老大,如何实现,帮写个意思出来就行...多谢

总分比较好办,最后再加就可以了.

因为当前用户只操作自己的数据,也就是说当前用户只update自己字段的每行数据

多谢多谢!!
SysTem128 2008-03-08
  • 打赏
  • 举报
回复

update `table` set `总分`=`用户1`+`用户2`+`用户3`,`平均分`=(`用户1`+`用户2`+`用户3`)/3 where `总分` = null;
myvicy 2008-03-08
  • 打赏
  • 举报
回复
多行select我知道可以用while,update也是用while.
你这样的表总分就是3个字段相加,平均分则是前面加的和除以3

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧