大家好我的问题是我根据用户输入动态创建了一排表。现在每行包含文本框,comboxbox从组合框中选择值从文本框输入前三列中的值,结果将显示。在下一页上传递这些选定的n输入值时,只有最后一行值移动到下一页。我想通过所有循环值到下一页 javascripting代码
<script>
function getText3(row){
var in1=document.getElementById('in1-' + row).value;
var in2=document.getElementById('in2-' + row).value;
var in4=document.getElementById('in4-' + row).value;
var in3=(in1*in2*in4*30)/1000;
document.getElementById('in3-' + row).value=in3.toFixed(2 );
}
</script>
表格代码
<?php
$de=$_POST['text123'];
echo $de;
?>
<body>
<form action="kl2.php" method="post" >
<table border="1" align="center" id="wr123">
<tr>
<th>WAS</th>
<th>NO.</th>
<th>AVERAGE</th>
<th>APPROX</th>
</tr>
<?php
for ($i = 1; $i <= $de; $i++) {
?>
<tr>
<td>Tube</td>
<td>
<select id="in4-<?php echo $i; ?>" name="t1" onclick="getText3(<?php echo $i; ?>)" >
<option value="0">0</option>
<option value="12">12</option>
<option value="18">18</option>
<option value="24">24</option>
<option value="75">75</option>
</select>
</td>
<td>
<input type="text" name="t2" id="in1-<?php echo $i; ?>" onblur="getText3(<?php echo $i; ?>)" />
</td>
<td>
<select name="a1" id="in2-<?php echo $i; ?>" onclick="getText3(<?php echo $i; ?>)" >
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
</td>
<td>
<input type="text" id="in3-<?php echo $i; ?>" name="username" readonly="readonly" />
</td>
<td>
</tr>
<?php } ?>
<input type="submit" name="submit" />
</table>
</form>
kl2.php
<?php
@$a=$_POST['t1'];
echo @$a;
$sl = $_POST['t2'];
echo $sl;
$b=$_POST['a1'];
echo $b;
$c=$_POST['username'];
echo $c;
?>
提交单击它只显示最后一行值,即如果用户输入3,则单击提交后只显示最后一行数据显示3行
答案 0 :(得分:0)
你需要传递一个数组,你可以在PHP端将它作为一个数组来处理。
为此,在每个输入中,将name =“X”更改为name =“X []”
示例:
<input type="text" name="t2" id="in1-<?php echo $i; ?>" onblur="getText3(<?php echo $i; ?>)" />
为:
<input type="text" name="t2[<?php echo $i; ?>]" id="in1-<?php echo $i; ?>" onblur="getText3(<?php echo $i; ?>)" />
另外,在php中使用@来抑制错误通常是个坏主意。
尝试类似:
var_dump($_POST);
您将看到数据是如何传达给您的。
提示:
if (isset($_POST['t1']) {
$t1_data = $_POST['t1'];
}
**编辑**
尝试这样的事情:
<?php
if (isset($_POST['submit'])) {
$data_t1 = $_POST['t1'];
foreach ($data_t1 as $key => $value) {
echo 'T1: ' . $value . '<br />';
echo 'T2: ' . $_POST['t2'][$key] . '<br />';
echo 'Username: ' . $_POST['username'][$key] . '<br /><br />';
}
}
?>
<html>
<head>
<script>
function getText3(row){
var in1=document.getElementById('in1-' + row).value;
var in2=document.getElementById('in2-' + row).value;
var in4=document.getElementById('in4-' + row).value;
var in3=(in1*in2*in4*30)/1000;
document.getElementById('in3-' + row).value=in3.toFixed(2 );
}
</script>
</head>
<body>
<form action="" method="POST">
<table border="1" align="center" id="wr123">
<tr>
<th>WAS</th>
<th>NO.</th>
<th>AVERAGE</th>
<th>APPROX</th>
</tr>
<?php
for ($i = 1; $i < 4; $i++) {
?>
<tr>
<td>Tube</td>
<td>
<select id="in4-<?php echo $i; ?>" name="t1[<?php echo $i; ?>] onclick="getText3(<?php echo $i; ?>)" >
<option value="0">0</option>
<option value="12">12</option>
<option value="18">18</option>
<option value="24">24</option>
<option value="75">75</option>
</select>
</td>
<td>
<input type="text" name="t2[<?php echo $i; ?>]" id="in1-<?php echo $i; ?>" onblur="getText3(<?php echo $i; ?>)" />
</td>
<td>
<select name="a1[<?php echo $i; ?>]" id="in2-<?php echo $i; ?>" onclick="getText3(<?php echo $i; ?>)" >
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
</td>
<td>
<input type="text" id="in3-<?php echo $i; ?>" name="username[<?php echo $i; ?>]" readonly="readonly" />
</td>
<td>
</tr>
<?php } ?>
</table>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>