|
|
要做的功能是:
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 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 16-7-2009 12:28 AM
|
显示全部楼层
我的话。。。
就post来post去咯 |
|
|
|
|
|
|
|
|
|
|
发表于 16-7-2009 10:02 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 16-7-2009 05:45 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 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 的做法。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 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
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 17-7-2009 01:29 AM
|
显示全部楼层
教你另一个方法,如果觉得不好就放弃它吧。
看看我这方法能给你什么。
在<head>与</head>之间加入一下程式- <style>
- .hidden {visibility:hidden;}
- .show{visibility:visible;}
- </style>
- <script language="javascript">
- function chg(str)
- {
- if(str == 'b') {
- document.getElementById('formb').className = 'show';
- document.getElementById('forma').className = 'hidden';
- } else {
- document.getElementById('forma').className = 'show';
- document.getElementById('formb').className = 'hidden';
- }
- }
- </script>
复制代码 在<body>与</body>之间加入以下代码,然后执行看看。- <form action="a.php" method="post">
- <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>
- <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>
- </form>
复制代码 实用性:高,很多知名网站都在使用。
解说:用css来隐藏内容,需要时只是把它显示出来。这是基本概念做法。当然应用得好的话,也可以做复杂性质的显示方式。
好处:使用妥当的话,记忆用量很少。
坏处:使用不妥当,可以体验下不同的可能问题(抱歉,这里卖关子了)。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 17-7-2009 08:10 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 17-7-2009 08:14 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 17-7-2009 12:17 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 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
|
显示全部楼层
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|