Php 检索循环文本框

Php 检索循环文本框,php,Php,page_form.php echo '<div style="text-align:center;margin-left:25px;"> <form action="grad.php" method="post"> <table width-"100%"> <tr><th style="padding:12px;">LETTE

page_form.php

echo '<div style="text-align:center;margin-left:25px;">
          <form action="grad.php" method="post">               
            <table width-"100%">
                  <tr><th style="padding:12px;">LETTER </th>
                      <th style="padding:12px;">INTERVAL</th>
                      <th style="padding:12px;">GT</th>
                  </tr>';
                 for($i=0;$i<=5;$i++)
                  {
                   echo '<tr><td style="padding:12px;"><input type="text" name="letter_'.$i.'"></td>
                             <td style="padding:12px;"><input type="text" name="interval'.$i.'"></td>
                             <td style="padding:12px;"><input type="text" name="gt'.$i.'"></td>
                         </tr>';
                  }
                  echo '<tr><td><input type="submit" name="submit" value="submit"></td></tr>';
           echo '</table>
         </form>
        </div>';
我把所有的文本框都放在一个forloop中。当我点击提交时,我需要得到所有5个文本框的值,但现在我只得到第一行

数据库结构

   Field   Type          Collation      Attributes     Extra
     id    bigint(10)                    UNSIGNED     AUTO_INCREMENT
   letter  varchar(255)  utf+general_ci  
   markint  bigint(10)
     gt     bigint(10)

您使用的文本框名称不是
字母
,而是
字母0
字母1
,等等

另外,
interval
是一个字符串,您需要使用倒勾来转义它:
`interval`

要检索它们,您可以硬编码它们的所有名称,例如
$letter1=$\u POST['letter\u 1'],或者您可以在另一个循环中执行此操作:

for ($i=0; $i<5; $i++) {
    $letter = $_POST['letter_' . $i]; 
    $interval = $_POST['interval' . $i]; 
    $gt = $_POST['gt' . $i]; 
    $s = mysql_query("INSERT INTO `grad_table` (`letter`, `interval`, `gt`) VALUES ('$letter',$interval,$gt)");
}

现在,这不会“验证”您的数据,但至少有助于防止SQL注入和简单的PHP错误。

您的帖子数据应该包含
$\u post['interval0']
$\u post['interval1']
$\u post['interval2']


你必须仔细阅读每一篇
$\u帖子
,才能得到所有答案。坦率地说,我很惊讶您的代码中竟然有任何post数据。

您应该修改以下内容

for($i=0;$i<=5;$i++)
{
  echo '<tr><td style="padding:12px;"><input type="text" name="letter['.$i.']"></td>
  <td style="padding:12px;"><input type="text" name="interval['.$i.']"></td>
  <td style="padding:12px;"><input type="text" name="gt['.$i.']"></td>
  </tr>';
}
foreach($_POST['letter'] as $i=>$v) {
    mysql_query("INSERT INTO grad_table(letter,interval,gt) VALUES('{$_POST['letter'][$i]}',{$_POST['interval'][$i]},{$_POST['gt'][$i]}) ");
}

谢谢,我一定会在我的文件中设置isset。代码运行良好,我能够回显所有值,但不能插入到databasenewfurniturey@The您答案中的代码运行良好,但无法插入数据库[谈论您的答案代码]@thersa啊-我第一次错过了这个。是MySQL保留字,需要使用反勾号进行转义。我已经用转义的所有表/列名更新了我的答案。我已经在两个文件中将interval替换为inter,但即使是我也能回显它们,但不能插入到表中。它只是插入了最后一个,但不是全部。这可能无助于回答您的问题,但您应该停止使用
mysql.*
函数。他们被弃用了。改为使用(从PHP5.1开始支持)或(从PHP4.1开始支持)。如果您不确定使用哪一个。
for($i=0;$i<=5;$i++)
{
  echo '<tr><td style="padding:12px;"><input type="text" name="letter['.$i.']"></td>
  <td style="padding:12px;"><input type="text" name="interval['.$i.']"></td>
  <td style="padding:12px;"><input type="text" name="gt['.$i.']"></td>
  </tr>';
}
foreach($_POST['letter'] as $i=>$v) {
    mysql_query("INSERT INTO grad_table(letter,interval,gt) VALUES('{$_POST['letter'][$i]}',{$_POST['interval'][$i]},{$_POST['gt'][$i]}) ");
}