簡體   English   中英

PHP:添加具有多個字段(包括復選框)的動態行並提交

[英]PHP: Adding dynamic rows with multiple fields including checkboxes and submitting

我之前問過這個,也許這次我更清楚了。 我在input.php中有此表格

在此處輸入圖片說明

該表的代碼是

<div class="col-md-5 sec-col02">
                        <div class="panel panel-primary">
                            <div class="panel-heading">
                                <h3 class="panel-title">Medicine Record</h3>
                            </div>
                            <div class="">
                                <form name="add_name" id="add_name">  
                                    <div class="table-responsive">  
                                        <table style="margin-left:4px; margin-top:4px;" class="table table-bordered" id="dynamic_field">  <tr id="medicen">  
                                                <td>Medicine Name</td> 
                                                <td>Hours</td>
                                                <td>M</td>
                                                <td>E</td>
                                                <td>N</td>
                                                <td>No Of Days</td> 
                                                <td>Add</td>  
                                            </tr>
                                            <tr>  
                                                <td><input style="width:95px; " type="text" name="medname[]" placeholder="Medicine Name" class="form-control name_list" /></td> 
                                                <td><select style="width:70px;" name="frequency[]" class="form-control name_list">
                                                <option value="24hours"> 24Hrs</option>
                                                <option value="8hrs"> 8Hrs</option>
                                                <option value = "12hrs">12Hrs</option></select></td>
                                                <td><input style="width:15px; " name="morning1" type ="checkbox" value="M" class = "form-control name_list"/></td>
                                                <td><input style="width:15px;" name="evening1" type ="checkbox" value="E" class = "form-control name_list"/></td>
                                                <td><input style="width:15px;" name="night1" value="N" type ="checkbox" class = "form-control name_list"/></td>
                                                <td><input style="width:80px;" type="text" name="days[]" placeholder="No Of Days" class="form-control name_list"/></td>
                                                <td><button style="width:13dx;" type="button" name="add" id="add" class="btn btn-success">Add</button></td>  
                                            </tr>  
                                        </table>  
                                    </div>  
                                </form>  
                            </div>
                        </div>  

我正在添加新行,如下所示:

$(document).ready(function(){  
           var i=1;  
           $('#add').click(function(){  
              i++;  
              $('#dynamic_field').append('<tr id="row'+i+'"><td><input style="width:95px; " type="text" name="medname[]" placeholder="Medicine Name" class="form-control name_list" /></td><td><select style="width:70px;" name="frequency[]" class="form-control name_list"><option value="24hours"> 24Hrs</option><option value="8hrs"> 8Hrs</option><option value = "12hrs">12Hrs</option></select></td><td><input style="width:15px; " name="morning'+i+'" type ="checkbox" value="M" class = "form-control name_list"/></td><td><input style="width:15px;" name="evening'+i+'" type ="checkbox" value="E" class = "form-control name_list"/></td><td><input style="width:15px;"name="night'+i+'" value="N" type ="checkbox" class = "form-control name_list"/></td><td><input style="width:80px;"type="text" name="days[]" placeholder="No Of Days" class="form-control name_list"/></td><td><button style="width:50px;"type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove">X</button></td></tr>'); 

           });  

用戶添加輸入,可能會選中一個復選框,然后單擊“提交”。 可以有任意數量的行。 我已經添加了這一行$('input[type=checkbox]').removeAttr('checked'); 確保未選中復選框。

在getdata.php中,當我嘗試此代碼時

for($i = 0; $i < count($_POST['medname']); $i++){
    $medName = mysqli_real_escape_string($con, $_POST['medname'][$i]);
    $medFreq = mysqli_real_escape_string($con, $_POST['frequency'][$i]);
    $medMorning = '';
    if(isset($_POST['morning'.$i])){
        $medMorning = $_POST['morning'.$i];
    }
    print_r($medName);
    echo '<br/>'; 
    print_r($medFreq);
    echo '<br/>';
    print_r($medMorning);
    echo '<br/>';


}
echo $i." rows added";

所有名稱和相關頻率均已正確打印。 但是,當我嘗試獲取與復選框相關的數據時,結果是:

8小時

B 24小時M添加了2行對於這種情況,選中了第一行中的第一個復選框(M)。 第二秒沒有檢查,無論如何結果都是M. 我想如何在每一行中獲取所有正確的值,無論是否選中?

謝謝。

編輯:您正在使用name[]表示法來獲取由$POST的表單值填充的數組。 如果您只有文本輸入,這將起作用。 但是,使用復選框會產生一個問題,如果您不選中該復選框,那么將不會添加任何值。

對於您的用例,更好的解決方案是為每個添加的行定義單獨的輸入名稱:

<td><input name="morning-0" type ="checkbox" value="M" /></td>
...
<td><input name="morning-1" type ="checkbox" value="M" /></td>
...
<td><input name="morning-2" type ="checkbox" value="M" /></td>

然后,您可以在PHP中動態讀取值:

$medMorning = '';
if(isset($_POST['morning-' . $i])){
    $medMorning = $_POST['morning-' . $i];
}

我問您需要一些添加的JavaScript來生成單獨的輸入名稱,但這並不太麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM