0

我有以下代码。我的文本框参加循环了很多次。我想在我的表单发布以在数据库中插入值时获取每个参加的值。

 <form method="post" action="insert.php">
<label>Subject</label>
<input type="text" maxlength="30" name="subject" />
<label>Total Lectures</label>
<input type="text" maxlength="30" name="total" />
<table width="537" border="1">
 <tr>
   <td width="90">Name</td>
   <td width="139">Roll Number </td>
   <td width="136">&nbsp;</td>
   <td width="144">Attendence</td>
 </tr>
     <?php 
 $query=mysql_query("SELECT * FROM STUDENT");
 $i=0;
 while($rec=mysql_fetch_array($query)){
 $i++;

  ?>
   <tr>
   <td><?php echo $rec['name']; ?></td>
   <td><?php echo $rec['roll_number']; ?></td>
   <td>&nbsp;</td>
   <td><input type="text" maxlength="10" name="atten" /></td>
 </tr>
 <?php } ?>
</table>
 <input type="submit" value="submit" />
</form>

我的 insert.php 页面是

if($_SERVER['REQUEST_METHOD']=='POST'){
$query=mysql_query("SELECT * FROM STUDENT");
while($rec=mysql_fetch_array($query)){
$attend=$_POST['atten'];
$subject=$_POST['subject'];
$total=$_POST['total'];

$query1=mysql_query("INSERT INTO course   VALUES('$i','$subject','$total','$attend','')") or die(mysql_error());
}
}

我只得到 1 个文本框值。

4

3 回答 3

2

问题是您有许多输入都带有 name atten。当您发布此表单时,只会结转其中一个值。

如果您将名称更改为atten[]所有值,则所有值都将作为数组发布,然后您必须遍历该数组以构建插入查询。

您可以按如下方式访问此发布的数组:

$attendee_array = $_POST['atten'];

foreach($attendee_array as $attendee) {
    // perform insert or build insert query (prefereable as you can do all these inserts at once) here
    // make sure to escape your data for input
}
于 2012-11-29T19:20:03.253 回答
0

更改输入的名称:

<input name="subject[]" value="Lorem" />
<input name="total[]" value="ipsum"  />
<input name="atten[]" value="dolor" />
Then:

$_POST['subject'][0] == 'Lorem'
$_POST['total'][4] == 'amet'

如果是这样,那将使我的生活轻松十倍,因为我可以通过表单发送无限量的信息,并通过简单地循环遍历名为“主题”的项目数组来让服务器对其进行处理。等等

于 2012-11-29T19:20:40.290 回答
0

您需要使用输入数组,如:

<input type="text" maxlength="10" name="attend[]" />

然后你会得到attendin 的所有值,array你可以遍历它$_POST['attend']

于 2012-11-29T19:20:41.080 回答