如何将HTML表单提交到PHP数组中

时间:2012-01-24 05:33:21

标签: php arrays multidimensional-array

我已经查看过这里的一些帖子,但我仍在努力让我的代码正常工作....

我有一个动态创建的表单,所以我永远不会知道它会有多少行,但列数是静态的。这是我目前的代码......

echo '<form name = "confirmPlayers" enctype="multipart/form-data" action="page.php" method="POST">';
    echo '<input type="hidden" name="confirm" value="1"/>';
    echo '<input type="hidden" name="pg_function" value="match"/>';
    echo '<table border = "1">';
    echo '<tr> <td colspan = "7"> <b>Matched Members</b></td> </tr>';
    echo '<tr> <td> Match </td> <td>Division</td> <td>Number</td> <td>Upload Number</td> <td>KDGA Name</td>  <td>Upload Name</td> <td>Score</td></tr>';

    while($row = mysql_fetch_array($result)){
        echo "<tr>";
        echo '<td> <input type="checkbox" name="match_chkBox[]" value="1" checked>';
        echo '<td> ' . $row['division'] . ' </td>';
        echo '<td> ' . $row['mplayer_number'] . ' </td>';
        echo '<td> ' . $row['tplayer_number'] . ' </td>';   
        echo '<td> ' . $row['mfirst_name'] . ' ' . $row['mlast_name'] . ' </td>';
        echo '<td> ' . $row['tfirst_name'] . ' ' . $row['tlast_name'] . ' </td>';
        echo '<td> ' . $row['score'] . ' </td>';
        echo "</tr>";
    }
    echo '<tr> <td>';
    echo '<input type="submit" value="Submit" />';
    echo '</td> </tr>';
    echo '</table> </form>';

我已经尝试了几种创建数组的变体,但似乎只是造成一团糟。我基本上需要返回每个单元格的所有信息,以便传递给数据库进行进一步处理。我希望返回一个数组,为生成的表中的每个对应行添加一行,然后显示每列的键/索引。现在,如果我使用print_r($ _ POST ['match_chkBox']);然后它正确地返回我提交之前检查的行数,但任何其他更改......不是那么漂亮。

感谢你能给予的任何帮助......这让我疯了!

3 个答案:

答案 0 :(得分:1)

尝试给予值唯一ID

echo '<td> <input type="checkbox" name="match_chkBox[]" value=value=\"".$row['id']."\"checked>';

答案 1 :(得分:0)

如果我是你,我将仅发布$ row [id](由angel定义),并从我的PHP代码中获取数据库中的相应数据。

但如果您想随身携带所有数据,您只需执行以下操作即可。

<pre>
 $i=0;
 while($row = mysql_fetch_array($result)){
    $i++;
    echo "<tr>";
    echo '<td> <input type="checkbox" name="match_chkBox[$i]" value="'.$row['id'].'" checked>';
    echo '<td> ' . $row['division'] . ' <input type="hidden" name="division['.$i.']"> </td>';
    echo '<td> ' . $row['mplayer_number'] . ' <input type="hidden" name="mplayer_number['.$i.']"> </td>';
// and so on....
    echo "</tr>";
 }
</pre>

因为html表单只向服务器发送了选中复选框,你可以使用以下代码检查用户选择

<pre>
   foreach($_POST['match_chkBox'] as $k=>$value) {
      $divi  = division[$k];
      $mplay = mplayer_number[$k];
      //now insert into your database.
   }
</pre> 

希望这会有所帮助

答案 2 :(得分:0)

将复选框的值设置为该行的唯一键,当发布表单时,match_chkBox []将包含唯一键。

   echo"<input type='checkbox' name='match_chkBox[]' value=\"$row[unique_id]\" />";

使用视图源查看每行值是否设置为该行的unique_id