[問題] 請問如何暫存表單欄位中的資料?

看板Ajax作者 (中仔)時間17年前 (2008/10/11 00:32), 編輯推噓0(009)
留言9則, 2人參與, 最新討論串1/1
小弟目前設計報表上傳系統.最後一個環節卡住了. 邏輯概念是這樣的: 使用者可利用此系統上傳多筆銷售資料.多筆資料藉由表單變數+迴圈控制達成多筆上傳功 能 上傳表單使用jquery連動選單,js欄位檢查與加總運算. 問題點: 使用者當填入第一份報表部份資料後想新增第二筆資料,按下Add New Report送出表單變 數新增第二份報表,但剛剛所填寫第一份報表的資料沒辦法暫存. 因為頁面reload,但卻無相關表單變數,如圖所示 http://140.124.90.41/up/a/23.jpg
程式部份: 1.上方表單-用來傳遞表單變數搭配迴圈.按下Add New Report會傳遞變數number給下方上 傳表單使用,利用send()控制報表生成數量上限值 <form name="form2" method="post" action="week_up.php?type=report"> <font color=red onclick='send()'> Add New Report</font>; <input name="number" type="text" id="number" value="<?php echo((isset($_POST["number"]))?$_POST["number"]+1:"1") ?>" style="display:none"> <input type="submit" name="button5" value="Submit" style="display:none"> </form> JS send()-報表生成最大值為10 function send(){ if(document.form2.number.value==10) {alert('report number limit') return false;} document.form2.submit(); } 2.上傳表單部份-利用迴圈程式接收表單變數生成表格 <?php for( $i=1; isset($_POST['number'])?$i<=1+$_POST['number']:$i<=1; $i++){ ?> <table id="table" width='90%' border="1" align=center cellpadding=5 cellspacing=2 bordercolor="#E4E4E4"> <tr> <td valign=middle class='f_one'><font color="red">*</font>Report Type</td> <td class='f_one'><select name="report_type[]" id="report_type<?php echo $i?>"> <option value="">------------</option> <option value="Sell-In" >Sell-In</option> <option value="Sell-Out">Sell-Out</option> <option value="Inventory">Inventory</option> </select></td> </tr> <tr> <td width=19% valign=middle class='f_one'><font color="red">*</font>Channel Type</td> <td width=81% class='f_one'><select name="class1[]" id="class1<?php echo $i?>" onclick="if(this.options[this.selectedIndex].value =='Retail'){this.form.class2<?php echo $i?>.style.display='inline';} else this.form.class2<?php echo $i?>.style.display='none';"> <option value="">Channel Type</option> <?php // 資料庫設定 mysql_select_db($database_mio, $mio); $query = sprintf("SELECT DISTINCT class1 FROM company"); $result = mysql_query($query, $mio); while ($row = mysql_fetch_assoc($result)) { echo '<option value="' . $row["class1"] . '">' . $row["class1"] . '</option>' . "\n"; } ?> </select> <select name="class2[]" id="class2<?php echo $i?>" style="display:none" > <option value="NULL">-Channel Type 2-</option> <?php do { ?> <option value="<?php echo $row_c_type2['class2']?>"><?php echo $row_c_type2['class2']?></option> <?php} while ($row_c_type2 = mysql_fetch_assoc($c_type2)); $rows = mysql_num_rows($c_type2); if($rows > 0) { mysql_data_seek($c_type2, 0); $row_c_type2 = mysql_fetch_assoc($c_type2); } ?> </select> - <select name="class3[]" id="class3<?php echo $i?>"> <option value="">-Distribution Channel-</option> <?php do {?> <option value="<?php echo $row_c_type3['class3']?>"><?php echo $row_c_type3['class3']?></option> <?php} while ($row_c_type3 = mysql_fetch_assoc($c_type3)); $rows = mysql_num_rows($c_type3); if($rows > 0) { mysql_data_seek($c_type3, 0); $row_c_type3 = mysql_fetch_assoc($c_type3); } ?> </select> <script> jQuery(document).ready(function(){ $('#class3<?php echo $i?>').cascade('#class1<?php echo $i?>', { ajax: { type: "GET", url: 'action.php', data: { act: 'distribution', val: $('#class3<?php echo $i?>').val() } }, template: function(item) { return "<option value='" + item.Value + "'>" + item.Text + "</option>"; }, match: function(selectedValue) { return this.When == selectedValue; } }); }); </script></td></tr></table> 這個部份比較複雜,有些欄位我就省下不寫.這個表單的欄位id是配合迴圈變數$i有所不 同,當報表只有一份,報表編號欄位為report_type1,當報表有兩份.則為report_type1跟 report_type2而jquery跟欄位檢查也都是依據欄位id去作實現. 只是目前每份報表的欄位都沒辦法紀錄資料 那使用者就不能隨時新增報表,而要在一開始就確定 報表數量.這樣有點不太人性化.不知道要怎麼改善.請幫忙指點一下要從哪邊改善呢 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.218.94

10/11 12:35, , 1F
demo連不上 :p
10/11 12:35, 1F

10/12 11:57, , 2F
t大您好.可是是學校主機問題.現在是可以連上的.
10/12 11:57, 2F

10/12 11:58, , 3F
請您幫我看一下.謝謝
10/12 11:58, 3F

10/12 16:33, , 4F
感謝T大鼎力相助.真是高手.望塵莫及阿..ORZ.
10/12 16:33, 4F

10/12 18:21, , 5F
以這個問題來講 , 存下所有的資料塞到hidden input
10/12 18:21, 5F

10/12 18:21, , 6F
submit後重新填回來是比較一般的解.
10/12 18:21, 6F

10/12 18:30, , 7F
推T大.之前我是想從這方面著手.用表單變數塞回來用
10/12 18:30, 7F

10/12 18:32, , 8F
但還是要JS輔助.還是卡在JS...不過T大的解不用reload
10/12 18:32, 8F

10/12 18:32, , 9F
利用JS就解決了..強
10/12 18:32, 9F
※ 編輯: chrismaggie 來自: 220.132.218.94 (10/12 23:21)
文章代碼(AID): #18xuEq-A (Ajax)
文章代碼(AID): #18xuEq-A (Ajax)