PHP If 语句,用于在选择大于 1 的值时显示多个字段


PHP If statement to display more than 1 field if a value more than 1 is selected

我想做的是创建一个功能,根据用户选择的内容创建字段

例如;

<select name="ex">  
<option selected="selected" value="1">1</option>  
<option value="2">2</option>  
<option value="3">3</option>  
<option value="4">4</option>  
<option value="5">5</option>  
</select>

如果用户选择了 4,我希望能够显示 4 个输入字段

我的问题是,我将如何构建一个可以做到这一点的查询?

我脑子里嘎嘎作响,我能想到的只有

if($ex='4') {
<input type="text" name="field4">
<input type="text" name="field4">
<input type="text" name="field4">
<input type="text" name="field4">
}

但是必须有一种更简单的方法来显示它们。有什么想法吗?

如果使用循环

会更容易for,如下所示:

for($i=1;i<=$ex;$i++){
 echo "<input type='text' name='field4[]'>";
}

我希望它有所帮助。

你甚至可以使用 javascript: http://jsfiddle.net/fudQF/

Javascript:

showFields(t) {
    f = document.getElementById('fields');
    while (f.childNodes.length >= 1)
        f.removeChild(f.firstChild);
    for(i = 0; i < t.value; i++) {
        e = document.createElement('input');
        e.setAttribute('type','text');
        f.appendChild(e);
        e = document.createElement('br');
        f.appendChild(e);
    }        
}

.HTML:

<select name="ex" onClick="showFields(this)">  
    <option selected="selected" value="1">1</option>  
    <option value="2">2</option>  
    <option value="3">3</option>  
    <option value="4">4</option>  
    <option value="5">5</option>  
</select>
<div id="fields">
</div>
​
for($i = 0; $ < 4; $i++)
{
   echo "<input type='"text'" name='"field".($i + 1)."'">";
}
for ($i=1; $i<=$ex; $i++)
{
   echo "<input type='"text'" name='"field".$i."'">";
}

它将为您的字段提供唯一的名称

for($i=0;$i<$ex;$i++)
{echo '<input type="text" name="field'.$i.'">';}

试试这个您可以使用 javascript 中的 onchange 函数来执行此操作

function chang()
{
for(var i=1;i<document.getElementById("select_id").value;i++)
document.body.innerHTML+='<input type="text" name="field"'+i+'>';
}

if语句似乎是PHP(变量前的美元符号)。我猜你想回显或保存在输出的变量中。

一种方法是使用重复语句(用于,同时)来执行您需要的次数。

基于您似乎使用完全相同输出这一事实的另一个选项是使用 str_repeat() 函数。

这似乎有点奇怪......也许你希望这个名字是field4[]的,而不仅仅是field4

假设 $ex=4

$ex=4;
for($C=1;$C<=$ex;$C++){ echo "<input type='"text'" name='"field".$C."'" />"; }

建立在现有答案的基础上 - jQuery可以进一步降低所需的代码量 -

.HTML

<select name="ex" onClick="showFields(this)">  
    <option selected="selected" value="1">1</option>  
    <option value="2">2</option>  
    <option value="3">3</option>  
    <option value="4">4</option>  
    <option value="5">5</option>  
</select>
<div id="fields">
</div>

jQuery

$("select[name='ex']").on('change',function(){
  var selectedVal = $(this).val();
  $("#fields").html(''); // clear existing input fields (possibly from previous selection)
  for (var i=1; i<=selectedVal; i++){
    $("#fields").append('<input type="text" name="field'+i+'">');
  }
});