【问题标题】:Add text inputs based on user's requirement根据用户要求添加文本输入
【发布时间】:2010-12-08 15:33:13
【问题描述】:
<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")){

谢谢

【问题讨论】:

  • 您应该考虑重命名您的问题,以帮助其他有同样问题的人 - 将来。
  • 同意。将问题重命名为问题,以便更多人找到此主题。

标签: php forms dom-manipulation


【解决方案1】:

使用: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++。这里有一个小的性能提升。不多,但值得一试。

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

【讨论】:

  • $_GET("amountOFEntry") 语法无效,应该是$_GET["amountOFEntry"]
  • 请注意我对变量名大小写的最新评论
  • 这是一个很好的解决方案,但我会检查 $_GET['amountOfEntry'] 是否为数字(php.net/is_numeric()),因为这是 for 循环的唯一有效输入。跨度>
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    正如所指出的,$_GET 返回一个值数组。所以使用方括号来找到你想要的变量。你也不能混合 HTML 和 PHP。所以你需要把 HTML 变成一个字符串(通过引用它)和用户回显(或打印)来输出字符串。

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

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

    【讨论】:

    • 如果文本框使用这种方法,我仍然无法打印正确的数字:S
    • Ricki,请重新检查我的答案,关于变量的情况,我已经添加了一个我认为可以解决它的人。
    【解决方案4】:

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

    intval($_GET['amountOFEntry'])
    

    【讨论】:

      【解决方案5】:

      如果您愿意,可以使用 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>
      

      这是很多工作,只是为了避免将页面发送回服务器并在服务器端执行工作,但我想我还是建议这样做......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-01
        • 2021-12-07
        • 2019-04-19
        • 1970-01-01
        • 1970-01-01
        • 2018-07-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多