PHP POST不发送所有输入

时间:2017-01-09 13:53:41

标签: php mysql sql forms post

mysql查询从我的数据库中获取数据并通过while循环将其发布到表中的输入字段中。这很好,所有252个预期的表行都显示出来。 在相应的PHP页面上按下提交按钮应将数据发送到计算脚本并(重新)将数据写入数据库。

问题:处理页面只有200行。即52条线路没有通过。我已经设置了一个快速脚本来检查输出,这也表明只有200行。

我已经发现的东西:一旦我逐行减少表格,通过的数据量就会增加。只有3行(tipp_id,tipp_heim,tipp_gast),所有252行都可以通过。

是否存在我不知道的吞吐量限制?或者任何想法如何解决这个问题?

查询&表(表包含252行):

$records = mysqli_query($conn, "
    SELECT
        sp.spiel_id,
        sp.tore_heimteam,
        sp.tore_gastteam,
        t.match_id,
        t.tipp_heim,
        t.tipp_gast,
        t.tipp_id
    FROM 
        spielplan sp
    LEFT JOIN tipps t
        ON sp.spiel_id = t.match_id
");
while($fields = mysqli_fetch_assoc($records)) {
?>
    <tr>
        <td><input type="text" name="tipp_ids[]" value="<?php echo fields["tipp_id"] ?>"></td>
        <td><input type="text" name="goals_hometeams[]" value="<?php echo $fields["tore_heimteam"] ?>"></td>
        <td><input type="text" name="goals_guestteams[]" value="<?php echo $fields["tore_gastteam"] ?>"></td>
        <td><input type="text" name="tipp_guestteams[]" value="<?php echo $fields["tipp_gast"] ?>"></td>
        <td><input type="text" name="tipp_hometeams[]" value="<?php echo $fields["tipp_heim"] ?>"></td>
    </tr>

检查POST输出的脚本(输出= 200行):

$goalsHome = $_POST['goals_hometeams'];
$goalsGuest = $_POST['goals_guestteams'];
$tippHomes = $_POST['tipp_hometeams'];
$tippGuests = $_POST['tipp_guestteams'];
$tipp_id = $_POST['tipp_ids'];

$i=0;
foreach($goalsHome as $key => $ghome) {
    $i++;
    echo $ghome.";";
    echo $goalsGuest[$key].";";
    echo $tippHomes[$key].";";
    echo $tippGuests[$key].";";
    echo $tipp_id[$key].";";
    echo "<br>";
}
echo $i;

2 个答案:

答案 0 :(得分:4)

我相信您可能会达到max_input_vars限制。默认值为1000。

您可以通过编辑php.ini来解决此问题。 (见:This post on SO

虽然我建议更改界面。

界面中的一点细节;

如果您尝试让访问者填写1000多个输入字段,请使用增加的max_input_vars选项。周期。

但是,如果输入字段实际上只是一个前端机制,那么你错误地使用它们(在我看来)。输入字段就是它们的INPUT字段。如果您不需要最终用户的输入,请不要使用输入字段。您可以使用任何HTML元素来显示数据。

如果您只需要用户提供一个或两个值。只要求那些一两个值。也许创建一个小的javascript弹出窗口,请求你需要的输入。从那里,您可以重新计算数据并使用xhttp请求将其发回数据库。

答案 1 :(得分:3)

查看您的php.ini参数max_input_vars = 2500,默认值为2500,但您的设置可能不同。我猜你已经超过了这个表格

尝试将其增加到与所有表单输入的计数相匹配的值

max_input_vars = 3500