必要なフィールド数を出力するには、ループを使用するだけでよいようです。
例えば:
ユーザーに必要なフィールドの量を尋ねるフォームがあります
フォーム.php
<form action="category_form.php" method="get">
Number of fields required:
<select id="num_cat" name="num_cat">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
</select>
<input type="submit" name="submit" value="Submit"/>
</form>
カテゴリーフォーム.php
if(isset($_GET['submit']) && isset($_GET['num_cat'])){
$num_of_fields = $_GET['num_cat']; //WARNING: Requires validation/sanitisation
echo '<form method="post" action="action.php">';
for($i=1; $i<=$num_of_fields; $i++){
echo '<input type="text" name="category-'.$i.'" />';
}
echo '<input type="submit" name="submit" value="Submit"/>';
echo '</form>';
}
ただし、JQuery を使用してフィールドの量を動的に更新すると、ページを更新する必要がなくなるため、はるかに簡単になります。以下のコードを使用してこれを行うことができます。
index.html
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" ></script>
<script type="text/javascript">
//when the webpage has loaded do this
$(document).ready(function() {
//if the value within the dropdown box has changed then run this code
$('#num_cat').change(function(){
//get the number of fields required from the dropdown box
var num = $('#num_cat').val();
var i = 0; //integer variable for 'for' loop
var html = ''; //string variable for html code for fields
//loop through to add the number of fields specified
for (i=1;i<=num;i++) {
//concatinate number of fields to a variable
html += 'Category ' + i + ': <input type="text" name="category-' + i + '"/><br/>';
}
//insert this html code into the div with id catList
$('#catList').html(html);
});
});
</script>
</head>
<body>
<form method="post" action="action.php">
Number of fields required:
<select id="num_cat" name="num_cat">
<option value="0">- SELECT -</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
</select>
<div id="catList"></div>
<input type="submit" name="submit" value="Submit"/>
</form>
</body>
</html>
これにより、フィールドを生成するたびに PHP ページをリロードする代わりに、オンザフライで更新されます。
明らかに、CSS コードを追加する必要がありますが、私はそれを行っていません ;)。
PS .keyup を使用する代わりに、代わりに .change を使用することもできます...