[問題] 請問如何暫存表單欄位中的資料?
小弟目前設計報表上傳系統.最後一個環節卡住了.
邏輯概念是這樣的:
使用者可利用此系統上傳多筆銷售資料.多筆資料藉由表單變數+迴圈控制達成多筆上傳功
能
上傳表單使用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
10/11 12:35, 1F
→
10/12 11:57, , 2F
10/12 11:57, 2F
→
10/12 11:58, , 3F
10/12 11:58, 3F
→
10/12 16:33, , 4F
10/12 16:33, 4F
→
10/12 18:21, , 5F
10/12 18:21, 5F
→
10/12 18:21, , 6F
10/12 18:21, 6F
→
10/12 18:30, , 7F
10/12 18:30, 7F
→
10/12 18:32, , 8F
10/12 18:32, 8F
→
10/12 18:32, , 9F
10/12 18:32, 9F
※ 編輯: chrismaggie 來自: 220.132.218.94 (10/12 23:21)
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章