根据用户的要求添加文本输入

时间:2009-10-21 09:08:27

标签: php forms dom-manipulation

<form action = "numbericalInput.php" method = "Get">

Please enter the number of input areas you wish 
<input type = "text" name = "amountOfEntry"/>
<input type = "submit" name = "GO"/>

</form>

<?php

if(!empty($_GET("amountOFEntry")){
    for($i = 0; $i < $_GET("amountOFEntry"); $i++){
        <input type= "text" name = "nums[]" size = "2" />
    }
}

?>

我要做的是要求用户在文本区域输入一个值,然后让我为他们提供适当数量的文本输入,以便输入他们的值。所以用户输入10 ,他们有10个文本输入和一个提交按钮或东西。我很欣赏这一行不会在哪里工作

<input type= "text" name = "nums[]" size = "2" />

但我相信这是正确的排序?还有,这条线有什么问题?

if(!empty($_GET("amountOFEntry")){

感谢

5 个答案:

答案 0 :(得分:3)

使用:isset() http://php.net/manual/en/function.isset.php

<form action = "numbericalInput.php" method = "Get">

Please enter the number of input areas you wish 
<input type = "text" name = "amountOfEntry"/>
<input type = "submit" name = "GO"/>

</form>

<?php

if(isset($_GET['amountOfEntry'])){
    for($i = 0; $i < $_GET['amountOfEntry']; ++$i){
        ?><input type= "text" name = "nums[]" size = "2" /><?
    }
}

?>

这将检查是否存在$ _GET ['amountOFEntry'](注意方括号为$ _GET且$ _POST为数组)

请注意使用++ $ i而不是$ i ++。这里的性能略有提升。不多,但值得做。

EDIT ::: 请注意,变量将区分大小写,您在表单中使用amountOfEntry,在循环中使用$ _GET ['amountOFEntry']。 (注意国会大厦F)

答案 1 :(得分:2)

$ _ GET是一个数组,你必须使用[]来获取元素。所以:

if(!empty($_GET['amountOFEntry']){

答案 2 :(得分:1)

正如所指出的,$ _GET返回一个值数组。因此,使用方括号来查找所需的变量。你也不能混用HTML和PHP。因此,您需要将HTML作为字符串(通过引用它)和用户echo(或print)来输出字符串。

if(!empty($_GET["amountOFEntry"]){
    for ($i = 0; $i < $_GET["amountOFEntry"]; $i++) {
        echo '<input type= "text" name = "nums[]" size = "2" />';
    }
}

另外,正如Lizard所述,您应该使用isset来确定变量是否已设置。

答案 3 :(得分:1)

您也可以获取$ _GET的数值以避免运行时错误:

intval($_GET['amountOFEntry'])

答案 4 :(得分:1)

如果您愿意,可以使用JavaScript。使用像JQuery这样的库会有很大帮助。

JavaScript的:

$("#goButton").bind("click",function(e){
        numberOfEntries = parseInt($("#numberOfEntries").attr("value"));
        for(i=0;i<numberOfEntries;i++){
            newInput = document.createElement("input");
            $(newInput).attr("type","text").attr("name","nums[]").attr("size","2");
            $("#inputEntries").append(newInput);
        }
    }
);

HTML:

<body>
<input id="numberOfEntries" type = "text" name = "amountOfEntry"/>
<input id="goButton" type = "submit" name = "GO"/>
<div id="inputEntries"></div>
</body>

这是为了避免将页面发送回服务器并在服务器端执行工作而进行的大量工作,但我认为无论如何我都会建议...