2016-10-20 14 views
1

我希望用戶能夠輸入有關列出的每個練習的詳細信息。然而,沒有設置顯示的練習數量(用戶可以選擇很多練習,所以我不能使用一定數量的輸入框)。我該如何做到這一點,以便每次運行for循環時,都會顯示一個新的輸入框(每個練習1個)?從foreach循環中的用戶收集輸入(使用HTML和pHp)

foreach($exer->results() as $ex){ 
echo $ex->Name."<br/>"; 
// for each exercise I want to collect an input from user 

回答

0

你可以從用戶那裏得到的鍛鍊次數。你在for loop中循環迭代次數。在循環內添加文本字段。確保你使用name,比如data[user][]

$user_ex_count = 5; // Lets say you get 5 from a text box 
for ($x = 0; $x < $user_ex_count; $x++){ 
    echo '<input type="text" name="data[user][]">'; 
} 

然後,當你提交你的$_POST將有$_POST['data'](這是一個數組。

所以,你可以做,

if (isset($_POST['data'])){ 
    foreach($_POST['data'] as $key -> $userInput){ 
     echo $userInput; // user input values 
    } 
} 

這只是一個虛擬的代碼來讓你明白流動。所以你可以繼續工作。

希望這會有所幫助!

+0

one quest離子,比方說練習的次數是從我的數據庫的SELECT查詢中獲得的,我怎麼知道要設置$ user_ex_count到什麼? – Andy

+0

是那個數字已經在那個特定用戶的數據庫中?在那裏,你可以寫一個'SELECT'查詢,'提取'這個值並將該值賦給'$ user_ex_count'變量。如果你基於'$ user_ex_count'編寫你的代碼,你可以從數據庫,用戶輸入等設置這個變量的值。但其他的東西仍然會運行 – masterFly

0

是希望你要

<?php 

if(isset($_POST)) 
{ 

    echo $_POST['value'][0]; // First input 
    echo $_POST['value'][1]; // Second input 
    // and so on 
} else { 
    foreach($exer->results() as $ex){ 
    echo '<input type="text" name="value[]">'; 
}