2011-12-28 4 views
-3
の動的な量を使用して

可能性の重複:
How to loop through dynamic form inputs and insert into an array機能を何回

私はPHPスクリプトとフォームを持っています。 PHPスクリプトはXMLファイルを作成しますが、誰かが数字を入力する必要があり、そのXMLファイルのデータを書き込むためのテキストボックスの量が設定されます。
だから、ユーザが何度も入力すると、<input type="text" name="a #">と書く必要があります。また名前は数字である必要がありますが、1でカウントします。<input type="text" name="1"> <input type="text" name="2">...ありがとう

+1

で$ sに出エコー。あなたは何を試しましたか、何を苦労していますか? – deceze

+0

入力の処理に "a#"は必要ではないことに注意してください。 – outis

答えて

1
<?php 
session_start(); 
if(isset($_POST['quantity']){ 
// code here to check isnum and min/max 
    $count = $_POST['quantity']; 
    for ($i=1; $i<=$count; $i++){ 
     @$s.= "<input type=text name=".$i."><br>"; 
    } 
?> 

は今ちょうどあなたのhtml `for`ループの基本的なアプリケーションです

+1

なぜ '@ $ s'のエラーを抑制していますか? –

+0

ありがとうございました。申し訳ありませんが、まだ良いPHPに –

+0

私はこれをやっている: <?PHP // isnumとmin/maxを確認するコードはこちら $ count = $ _POST ['quantity']; @ $ s。= "<入力タイプ=テキスト名="。$ i。 ">
"の場合、 は($ i = 1; $ i <= $ count; $ i ++) } echo $ s; ?> と表示されても何も起こっていません。$ _GET ['quantity'] 40 –

1

これは?

<form method="get" action=""> 
    <div><input type="text" name="num_inputs" value="1" placeholder="Number of inputs"/></div> 
</form> 

<?php $num_inputs = isset($_GET['num_inputs']) ? $_GET['num_inputs'] : 1; ?> 

<form method="post" action=""> 
    <?php for ($i = 0; $i < $num_inputs; $i++) : ?> 
     <div><input type="text" name="inputs[]"/></div> 
    <?php endfor ?> 
</form> 

編集:はい、配列はinput_xよりはるかに優れています。私の答えを更新しました。

+0

いいえ、私はしません。 30秒で書かれたテンプレートのサンプルコードは、通常のコーディング標準を表すものではありません。私がどのように普通に書くか知りたいのであれば、code.google.com/p/sleek-php/を調べることができます。 – powerbuoy

+0

私の前に私が見ているもの以外は何も点検しません。 「30秒」はどういうこと?あなたはこれを34分前に投稿しました(私がコメントしたように)。どのように "普通に"そうするのか投稿してください。あなたのポストをもっと即座にタイムリーに見せるためにショートカットをとった場合は、少なくともあなたの良い意味を反映するように編集してください。それは "録音"される前に、ポストに続いて約5分ほどかかります。 –

+0

@ヤード - ハッピー? – powerbuoy

0

私はあなたが望むのはフォームフィールドの配列だと思います。

あなたはこのような何かしたい:

<?php 
$number_of_textboxes = 5; // you'd get this from a $_GET parameter 

echo str_repeat('<input type="text" name="mybox[]" />', $number_of_textboxes); 

?> 

これは、5つのテキストボックスに印刷されます:あなたはこれらのボックスの値を参照するとき、あなたはこれのようにそう、その後

<input type="text" name="mybox[]" /> 

を:

<?php 
    foreach ($_POST['mybox'] as $i) { 
     echo $i; 
    } 

?> 

つまり、各入力フィールドの名前として「mybox []」を使用すると、テキストボックスの配列を作成し、これを繰り返し実行することができます。

+0

テンプレートテクニックがPHP内でマークアップを混合するよりも有利なのだろうか? –

+0

私はテンプレートを嫌う。申し訳ありませんが、まだそれに慣れていません。 –

+0

@ evan.stoddard - これは完璧な "テンプレート化"ユースケースです。インラインコードインジェクションよりもモジュール化されています。長期的には、慣れるのが面倒ですが、実際にはより実用的です。学び、慣れておく必要があります。あなたがするまで待ってはいけない。 –

関連する問題