如何使用动态数量的输入构建表单

时间:2014-09-05 19:26:10

标签: php html forms function foreach

我想调用一个函数来创建一个基于表单的按钮,其中包含动态数量的隐藏输入。我正在努力奋斗,并希望有人能指出我正确的方向。这是背景:

我有一个函数,我调用它来返回一个带有一堆隐藏输入的按钮,这些输入必须在提交表单时位于$ _POST数组中。例如:

<?php
function my_function($var1, $var2) {

    // Initialize the $ctrls variable
    $ctrls = '';

    // Builds the form button
    $ctrls =
    '<form action="" method="post">
        <input type="hidden" name="var1" value="'.$var1.'" />
        <input type="hidden" name="var2" value="'.$var2.'" />
        <input type="submit" value="my button" id="pgn"?>
    </form>';

    return $ctrls;
}
?>

这一直很好。但是,现在我需要开始包含其他变量,其数量将根据调用函数的页面而有所不同。我想要的解决方案是创建一个数组来存储所有其他变量,以便必须修复必须传递给函数的数字变量。例如:

function my_function($ var1,$ var2,$ array)

然后在调用该函数的页面上,我将按如下方式定义数组:

$array = array("var3" => "abc", "var4"=>"def", "var5"=>"ghi");

我接下来想要做的就是按照以下方式修改功能:

<?php
function my_function($var1, $var2, $array) {

    // Initialize the $ctrls variable
    $ctrls = '';

    // Builds the form button
    $ctrls =
    '<form action="" method="post">
        <input type="hidden" name="var1" value="'.$var1.'" />
        <input type="hidden" name="var2" value="'.$var2.'" />
        '
        foreach($array as $key=>$value) {
        '
            <input type="hidden" name="'.$key.'" value="'.$value.'" />
        '
        }
        '
        <input type="submit" value="my button" id="pgn"?>
    </form>';

    return $ctrls;
}

预期的结果是foreach循环添加了与数组中的行一样多的隐藏输入。但是,将foreach循环添加到函数时,将不会加载调用该函数的页面。我也尝试在foreach循环中回显$ key和$ value变量,并且也没有取得任何成功。

期待有关如何执行此操作的任何见解。强烈倾向于坚持使用仅使用php和HTML的解决方案。提前谢谢。

3 个答案:

答案 0 :(得分:0)

Try this:

// Initialize the $ctrls variable
$ctrls = '';

// Builds the form button
$ctrls =
'<form action="" method="post">
    <input type="hidden" name="var1" value="'.$var1.'" />
    <input type="hidden" name="var2" value="'.$var2.'" />';

    foreach($array as $key=>$value) {
    $ctrls .='
        <input type="hidden" name="'.$key.'" value="'.$value.'" />
    ';
    }
    $ctrls .= '
    <input type="submit" value="my button" id="pgn"?>
</form>';

我希望这会有效..

答案 1 :(得分:-1)

好吧,你忘了将字符串添加到变量

// Initialize the $ctrls variable
$ctrls = '';

// Builds the form button
$ctrls =
'<form action="" method="post">
    <input type="hidden" name="var1" value="'.$var1.'" />
    <input type="hidden" name="var2" value="'.$var2.'" />
    ';
    foreach($array as $key=>$value) {
       $ctrls .= '<input type="hidden" name="'.$key.'" value="'.$value.'" />';
    }
    $ctrls .= '<input type="submit" value="my button" id="pgn"?></form>';

return $ctrls;

}

答案 2 :(得分:-1)

点击此链接phpfiddle查看一个有效的示例。

U也可以使用func_get_argsfunc_num_args来允许可变长度的参数列表。告诉我你是否想这样做。我很乐意帮忙。

希望它有用!