2012-05-16 38 views
0

我想要做什麼語句來顯示超過1場是創建一個用於創建基於什麼用戶選擇PHP如果如果大於1的值選擇

例如字段的功能;

<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"> 
} 

但必須有顯示他們更簡單的方法。有任何想法嗎?

+1

歡迎的話,爲什麼要使用的名稱是相同 – 2012-05-16 11:20:27

+0

我沒有Wnt信號的名字是一樣的,這只是一個例子。我希望名稱與所選字段對應 –

+0

我相信比其中任何一種方法都更好的方法是在客戶端執行,使用'innerHtml'賦值或'createElement' ...但標籤確實指定了PHP。 :( – Amadan

回答

5

如果使用for循環,就像如下如果會更容易些:

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

我希望它能幫助。

+0

如果我使用了,我將如何給每個字段一個唯一的名稱?我希望字段名稱與無論多個字段被選中對應 –

+0

是的,我現在改變了代碼,你可以得到字段4的數組格式 – Prabhuram

+0

感謝 –

1
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+'>'; 
} 
+0

我建議**總是**使用大括號,即使您只在代碼塊中使用一個語句 - 它可以防止將來發生混淆,如果您需要添加更多代碼來循環.. – Lix

+0

I根據問題的答案,但我仍然會做出這種變化 – 2012-05-16 11:24:04

+0

...尤其是如果你沒有正確縮進 – Amadan

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

@mitchell想要所有的文本框同名,我不知道爲什麼,但她有書面 – 2012-05-16 11:22:26

+0

我知道我只是假設它不是有意的 - 這是沒有意義的輸入命名相同 –

+0

我不希望他們一樣。我只是把它作爲一個例子,希望人們能夠得到提示。不要猜測 –

0

if聲明似乎是PHP(變量之前美元符號)..我想你想要回顯或保存在輸出的變量中。

一種方法是使用重複語句(for,while)根據需要重複執行該操作。

另一種基於您似乎使用完全相同輸出的事實是使用str_repeat()函數。

這似乎有點奇怪..也許你想要的名字是field4[]並不僅僅是field4

+0

不要害怕大寫字母;) – Lix

+0

@Lix :))我想我正在保存鍵盤和延長shift鍵的生命,但是謝謝你的建議:) – mishu

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

它會給唯一的名稱,以你的領域

3

你甚至可以做它用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> 
​ 
+0

是的,那正是我所說的! :) +1 – Amadan

+0

這正是我想要的...哇,大聲笑 –

+0

啊,很高興我可以幫助:) – vimist

0

假設$ EX = 4

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

你有沒有注意到其他兩個人已經有完全相同的答案? – Lix

0

大廈an existing answer - 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+'">'); 
    } 
}); 
相關問題