1
<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")){

ありがとう

4

5 に答える 5

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 を使用していることにも注意してください。ここでは、パフォーマンスがわずかに向上しています。多くはありませんが、やる価値があります。

編集:::変数は大文字と小文字が区別されることに注意してください。フォームで amountOfEntry を使用し、ループで $_GET['amountOFEntry'] を使用しています。(キャピトル F に注意)

于 2009-10-21T09:12:09.460 に答える
2

$_GET は配列です。要素を取得するには [] を使用する必要があります。そう:

if(!empty($_GET['amountOFEntry']){
于 2009-10-21T09:14:55.387 に答える
1

実行時エラーを回避するために、$_GETの数値を取得することもできます。

intval($_GET['amountOFEntry'])
于 2009-10-21T09:33:35.283 に答える
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>

これは、ページをサーバーに送り返してサーバー側で作業を実行することを避けるためだけに多くの作業ですが、とにかく提案するかもしれないと思いました...

于 2009-10-21T09:45:02.187 に答える
1

指摘したように、 $_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 を使用して変数が設定されているかどうかを判断する必要があります。

于 2009-10-21T09:21:18.337 に答える