佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 976|回复: 14

php的问题

[复制链接]
发表于 12-7-2009 01:05 AM | 显示全部楼层 |阅读模式
要做的功能是:
part1:在form.html里要填大量的信息(要输入资料库),然后按submit,转到新一页(a页)
part2:a页要用到form.htm所填的一些信息,在a页又要填一些新信息(要输入资料库),然后根据客户的选择做以下的动作:
1.直接跳到第3方提供的cgi,同时要传一些值过去(好像只能用form直接submit的方法,所以要在a页放一个hidden form)。
2.在同一个页面,但要显示一些客户的信息。所以要考虑到页面刷新的问题,我又不能清空post的资料,因为新页面要用到,在最后要直接跳到cgi也是问题,问题是要怎么在期间save。

我想到的做法
(第一部分)
A:在form.html填资料过后进入save.php储存资料,再跳到a.php,从资料库提取资料在show出来
缺点:要用多一次资料库
B:在用form.html提取资料后进入a.php,用session方式防止刷新
缺点:session浪费记忆体
C我(目前的做法)在form.php设置一个date(),再用js来让他的时间一直跑下去,转到a.php后再呼叫date()判断时间,如果超过5秒就不储存进资料库
缺点:有一些不稳定,怀疑是页面cache的问题,如果再进入多一次form.html的话browser会用cache的资料,不能output最新的date(),当然,到了下一页就会超过5秒了。
(第二部分,目前在用)
跳到cgi的做法:在a页面后跳到save2.php储存后生成一个form再用js自动submit
跳回自己的做法:在a页面后跳到save2.php,储存后用header(Location)的get的方式传回值给a页

本人还是学生,现在在做parttime幫公司写的,以前写的都是小众网页,现在做的可能很多user,怕效率问题,本人没实际经验。希望高手们能帮我提议更好的方法,或帮我选一个最好的方法,谢谢!

[ 本帖最后由 y小叶y 于 12-7-2009 01:18 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 16-7-2009 12:28 AM | 显示全部楼层
我的话。。。

就post来post去咯
回复

使用道具 举报

发表于 16-7-2009 10:02 AM | 显示全部楼层
放 timer 来试看哪个方法比较快啰
回复

使用道具 举报

 楼主| 发表于 16-7-2009 05:45 PM | 显示全部楼层
原帖由 小陈陈 于 16-7-2009 12:28 AM 发表
我的话。。。

就post来post去咯
可是如果是大量的input,下一頁的話不是要有大量的hidden input?
回复

使用道具 举报

 楼主| 发表于 16-7-2009 05:47 PM | 显示全部楼层
原帖由 hooi1983 于 16-7-2009 10:02 AM 发表
放 timer 来试看哪个方法比较快啰
我是怕很多人使用的時候才有問題,現在自己用沒有什么差
回复

使用道具 举报

发表于 16-7-2009 08:16 PM | 显示全部楼层
建议用 session。
原因:
1) A 会应为使用 database 而浪费时间 (多人同时使用更明显), C 会应为输入速度而无法缓等待,需要 refresh,而且,目前已经不稳定了,正式使用可能会产生更多问题。

2) 记忆体很便宜,尤其是大型网站的 server, 基本上 16G 以上没问题。

3) 既然你说可能很多user 怕效率问题,那么当然是选最快的方法。当然也可以考虑混合 cookie 和 session 的做法。
回复

使用道具 举报

Follow Us
 楼主| 发表于 16-7-2009 10:18 PM | 显示全部楼层
原帖由 flashang 于 16-7-2009 08:16 PM 发表
建议用 session。
原因:
1) A 会应为使用 database 而浪费时间 (多人同时使用更明显), C 会应为输入速度而无法缓等待,需要 refresh,而且,目前已经不稳定了,正式使用可能会产生更多问题。

2) 记忆体很便 ...

那我改去用session好了,
至于c.会应为输入速度而无法缓等待,這問題是不存在的,
因為是用js在跑,他停在頁面多久時間就跑多久,例子:
我剛load form的時候呼叫date(),是5分20秒,然后我用js讓他一直加(settimeout ),
假設加到了5分30秒,load到a.php的時候我再呼叫date(),也會是5分30秒,
不用refresh。
我懷疑不穩定的問題是:
現在是6分40秒,如果我之前load過form.html的話(例如refresh,或填寫錯誤返回),
broswer還是會load會cache里的5分20秒那個form.html,而不是從server里load最新的date(),
所以又從5分20秒跑,然后跑到a.php,由于a.php是直接在server side判斷,所以是最新的6分40多秒,
判斷就會出問題。所以我倒是希望不要refresh,一次過完成。
回复

使用道具 举报

发表于 16-7-2009 10:23 PM | 显示全部楼层
原帖由 y小叶y 于 16-7-2009 05:45 PM 发表
可是如果是大量的input,下一頁的話不是要有大量的hidden input?


用array咯

一个input咯
回复

使用道具 举报


ADVERTISEMENT

发表于 17-7-2009 01:29 AM | 显示全部楼层
教你另一个方法,如果觉得不好就放弃它吧。
看看我这方法能给你什么。

在<head>与</head>之间加入一下程式
  1. <style>
  2. .hidden {visibility:hidden;}
  3. .show{visibility:visible;}
  4. </style>
  5. <script language="javascript">
  6. function chg(str)
  7. {
  8.         if(str == 'b') {
  9.                 document.getElementById('formb').className = 'show';
  10.                 document.getElementById('forma').className = 'hidden';
  11.         } else {
  12.                 document.getElementById('forma').className = 'show';
  13.                 document.getElementById('formb').className = 'hidden';
  14.         }
  15. }
  16. </script>
复制代码
在<body>与</body>之间加入以下代码,然后执行看看。
  1. <form action="a.php" method="post">
  2. <div class="show" id="forma">This is example form a <input type="text" name="f1" /><input type="button" name="submit" value="Send" onclick="chg('b')"></div>
  3. <div class="hidden" id="formb">This is example form b <input type="text" name="f2" /><a onclick="chg()">Back</a> | <input type="submit" name="submit" value="Send"></div>
  4. </form>
复制代码
实用性:高,很多知名网站都在使用。
解说:用css来隐藏内容,需要时只是把它显示出来。这是基本概念做法。当然应用得好的话,也可以做复杂性质的显示方式。
好处:使用妥当的话,记忆用量很少。
坏处:使用不妥当,可以体验下不同的可能问题(抱歉,这里卖关子了)。
回复

使用道具 举报

 楼主| 发表于 17-7-2009 08:10 AM | 显示全部楼层
原帖由 小陈陈 于 16-7-2009 10:23 PM 发表


用array咯

一个input咯
對哦,我沒想到array,不過老實說是比較陌生,很少用到,謝謝你的提醒
回复

使用道具 举报

 楼主| 发表于 17-7-2009 08:14 AM | 显示全部楼层
原帖由 jinn 于 17-7-2009 01:29 AM 发表
教你另一个方法,如果觉得不好就放弃它吧。
看看我这方法能给你什么。

在与之间加入一下程式
.hidden {visibility:hidden;}
.show{visibility:visible;}


function chg(str)
{
        if(str == 'b') {
                do ...

根據我的理解,你是要我在同一頁完成?
submit form之后隱藏起來?
這樣我還要面對一個問題,layout不是我負責,
我再想想看,好像有一點概念了
另外,
.hidden {visibility:hidden;}
.show{visibility:visible;}
換成display:none不是更好?visibility還是會占用空間(頁面空間)

[ 本帖最后由 y小叶y 于 17-7-2009 08:19 AM 编辑 ]
回复

使用道具 举报

发表于 17-7-2009 12:17 PM | 显示全部楼层
原帖由 y小叶y 于 17-7-2009 08:14 AM 发表

根據我的理解,你是要我在同一頁完成?
submit form之后隱藏起來?
這樣我還要面對一個問題,layout不是我負責,
我再想想看,好像有一點概念了
另外,
.hidden {visibility:hidden;}
.show{visibility: ...


每关系吧,看你怎么用js/css的方式显示就好了。
哦~是的。css中的display可以不占用空间下隐藏起来。
回复

使用道具 举报

 楼主| 发表于 17-7-2009 12:30 PM | 显示全部楼层
原帖由 jinn 于 17-7-2009 12:17 PM 发表


每关系吧,看你怎么用js/css的方式显示就好了。
哦~是的。css中的display可以不占用空间下隐藏起来。

我有了一些想法,可是要考慮的很多啊,
refresh后基本上那個form又會跑出來了,如果一開始就知道的話,我會用這個方法,
現在應該不會用這個辦法,因為要改的東西很多,沒那個時間了,所以用session了。
其實你的辦法結合ajax概念可以有更好的實現,謝謝你給我有了新的概念。
回复

使用道具 举报

发表于 17-7-2009 07:22 PM | 显示全部楼层
原帖由 y小叶y 于 17-7-2009 12:30 PM 发表

我有了一些想法,可是要考慮的很多啊,
refresh后基本上那個form又會跑出來了,如果一開始就知道的話,我會用這個方法,
現在應該不會用這個辦法,因為要改的東西很多,沒那個時間了,所以用session了。
其實你 ...


o 哦~
不错哦。。。
做好了,记得再和大家分享哦~
或许你的方法可以做个借鉴。
回复

使用道具 举报

发表于 19-7-2009 03:40 PM | 显示全部楼层
原帖由 y小叶y 于 17-7-2009 08:10 AM 发表
對哦,我沒想到array,不過老實說是比較陌生,很少用到,謝謝你的提醒


array很好用的
我天天都在用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 6-12-2025 08:15 AM , Processed in 0.137755 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表