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です。このフォームを投稿すると、これらの値の 1 つだけが繰り越されます。

名前を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'

もしそうなら、それは私の人生を10倍楽にするでしょう.フォームを介して無限の量の情報を送信し、「件名」という名前のアイテムの配列をループするだけでサーバーによって処理されるからです. 等

于 2012-11-29T19:20:40.290 に答える
0

次のような入力配列を使用する必要があります。

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

そして、attendin のすべての値を取得し、arrayそれをループできます$_POST['attend']

于 2012-11-29T19:20:41.080 に答える