如何以html格式向php发送许多变量?

时间:2015-12-06 19:31:34

标签: php html forms

我正在尝试编写一个学生输入时间表的网络应用程序。例如:周一的第一个周期是数学,周一的第二个周期是英语,...周二的第一个周期是历史,周二的第二个周期是生物学,...等等。

所以我写了一个这样的表格:

<form method="post" action="timetable_handling.php">
    <?php
        for ($period=1;$period<=9;$period++)
        {
            echo "<tr>";
            for ($day=1;$day<=7;$day++)
                {
                    echo "<td><input name="the_subject_of_the_nth_$period_on_$day" type="text"></td></tr>";
                     //the problem is here
                }
        } 
    ?>
</form>

所以我的问题是,有没有办法将许多变量传递给另一个php文件来处理而不必手动明确地写出它的名字?

编辑1:我的意思是无论如何都要对名称中的句点和日期信息进行编码,这样当它发送到timetable_handling.php时我可以循环遍历它以将其保存到sql数据库中。类似数组$ subject [day] [period]。

如果有人能帮助我,我将不胜感激。

4 个答案:

答案 0 :(得分:0)

是。如果格式化变量名称,如

        for ($day=1;$day<=7;$day++)
            { ?>
                <td><input name="subject['<?= $period ?>'][<?= $day ?>]" type="text"></td></tr>
                 //the problem is here
            <?php }

PHP会将$_POST['subject']转换为2D数组。 (注意我不承诺这没有语法错误。)

答案 1 :(得分:0)

在表单处理程序中,您可以遍历所有已发布的字段,如下所示:

foreach($_POST as $field => $value)
{

}

其中$ field是输入标记名称,$ value是值。 如果您有其他表单元素,您可以使用某种前缀检查您需要哪些表单元素,例如,如果字段名称以'the_subject'开头,则您知道它是动态添加的字段之一。

答案 2 :(得分:0)

当然,你已经做了部分答案:) 第一个问题:你没有正确地转义你的字符串: 这是另一种方式

echo '<td><input name="'.$period.'_on_'.$day.'" type="text"></td></tr>';

至于处理帖子,这里是你可以做的。您可能需要调整它以获得确切的预期结果。但是你在谈论多维数组。

if (isset($_POST)){

    $something=array();
    foreach ($_POST as $single=>$value)
    {
        array_push($something, array('period_'.substr($single,0,1) => array('day_'.substr($single,-1)=>$value)));
    }
}

echo '<pre>'.print_r($something,true).'</pre>';

祝你好运。

答案 3 :(得分:0)

时间表数据录入页面开始:

<form method="post" action="timetable_handling.php">
    <table>
        <?php
            for ($period=1; $period<=9; $period++)
            {
                echo '<tr>';
                for ($day=1; $day<=7; $day++)
                    {
                        echo '<td><input name="subject_of_period_'.$period.'_on_day_'.$day.'" type="text"></td>';
                        //the problem is here
                    }
                echo '</tr>';
            } 
        ?>
    </table>

<input type="submit" value="Submit Form" />
</form>

然后在timetable_handling.php

上跟进此脚本
<?php

for ($day=1; $day<=7; $day++)
    {
        for ($period=1; $period<=9; $period++ )
            {
                ${'subject_of_period_'.$period.'_on_day_'.$day} = htmlspecialchars($_POST['subject_of_period_'.$period.'_on_day_'.$day],ENT_QUOTES);
                echo '<p>Subject of Period '.$period.' on Day '.$day.' is '.${'subject_of_period_'.$period.'_on_day_'.$day}.'</p>';
            }
    }

?>

它很安全且有效。