簡體   English   中英

PHP將變量分配給多個動態表單行

[英]PHP Assign variables to multiple dynamic form rows

我遇到一個麻煩的腳本,該腳本從表單中提取信息並保存到服務器上的csv中。 問題是,我有一個包含多個表的表單,在這些表中有一個“ +”按鈕來添加另一行。 我正在使用jquery這樣做。 這可以正常工作,並且還可以將行數保存到隱藏的輸入中,並為文本區域名稱分配_0,_1,_2。

我真的很困惑,我將如何使用PHP根據用戶添加的行數為這些變量動態分配變量。 這是我的表格:

<table style="width:100%;" id="directEmployees">
<tbody>
    <tr>
        <td>Name</td>
        <td>Time Start</td>
        <td>Time Finish</td>
        <td>Job Description</td>
        <td>Plant/Machinery Issued/Used</td>
        <td>P.P.E Issued?</td>
        <td>Materials Issued/Used</td>
    </tr>
    <tr>
        <td width="20%"><textarea style="width:100%;" name="directName_0" id="directName_0"></textarea></td>
        <td width="10%"><textarea style="width:100%;" name="directTimeStart_0" id="directTimeStart_0"></textarea></td>
        <td width="10%"><textarea style="width:100%;" name="directTimeEnd_0" id="directTimeEnd_0"></textarea></td>
        <td width="20%"><textarea style="width:100%;" name="directJob_0" id="directJob_0"></textarea></td>
        <td width="15%"><textarea style="width:100%;" name="directPlant_0" id="directPlant_0"></textarea></td>
        <td width="10%"><textarea style="width:100%;" name="directPPE_0" id="directPPE_0"></textarea></td>
        <td width="15%"><textarea style="width:100%;" name="directMaterials_0" id="directMaterials_0"></textarea></td>
    </tr>
</tbody>
</table>
<h2 id="addEmployee" style="cursor:pointer;">+</h2>

<button type="submit">Submit</button>

</form>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">

$(document).ready(function(){
    var additional_rows = 0;
    $('#addEmployee').click(function() {
        additional_rows = additional_rows + 1;
        $('#rowsEmployee').val(additional_rows);

        var addTable = '<tr><td width="20%"><textarea style="width:100%;" name="directName_' + additional_rows + '" id="directName_' + additional_rows + '"></textarea></td><td width="10%"><textarea style="width:100%;" name="directTimeStart_' + additional_rows + '" id="directTimeStart_' + additional_rows + '"></textarea></td><td width="10%"><textarea style="width:100%;" name="directTimeEnd_' + additional_rows + '" id="directTimeEnd_' + additional_rows + '"></textarea></td><td width="20%"><textarea style="width:100%;" name="directJob_' + additional_rows + '" id="directJob_' + additional_rows + '"></textarea></td><td width="15%"><textarea style="width:100%;" name="directPlant_' + additional_rows + '" id="directPlant_' + additional_rows + '"></textarea></td><td width="10%"><textarea style="width:100%;" name="directPPE_' + additional_rows + '" id="directPPE_' + additional_rows + '"></textarea></td><td width="15%"><textarea style="width:100%;" name="directMaterials_' + additional_rows + '" id="directMaterials_' + additional_rows + '"></textarea></td></tr>';

        $('#directEmployees tbody').append(addTable);
    });
});

</script>

任何幫助將不勝感激。

表單提交到您的php腳本后,根據表單方法,將填充$ _GET或$ _POST數組。.因此,您將需要遍歷該數組,例如...

foreach($_POST as $key=>value) {
  //process value 
}

PHP能夠使用方括號從具有單個名稱的多個輸入中創建數組。 我不確定您要完成什么,但是如果行數動態變化,則可能要避免為每個行取一個唯一的名稱。

您可能會考慮類似於以下的命名約定:

<textarea style="width:100%;" name="directTimeStart[]" id="directTimeStart_0"></textarea></td>
<textarea style="width:100%;" name="directTimeEnd[]" id="directTimeEnd_0"></textarea></td>
<textarea style="width:100%;" name="directJob[]" id="directJob_0"></textarea></td>
<textarea style="width:100%;" name="directPlant[]" id="directPlant_0"></textarea></td>
<textarea style="width:100%;" name="directPPE[]" id="directPPE_0"></textarea></td>
<textarea style="width:100%;" name="directMaterials[]" ... ></td>

這將使您完全忘記客戶端上的編號,然后將任務轉移到PHP。 在PHP中,您可以使用$_GET[directTimeStart][0]訪問第一行,使用$_GET[directTimeStart][1]等訪問第二行。

$count = count($_POST['directTimeStart']);
for ($i = 1; $i <= $count; $i++) {
 $csv .= $_POST[directTimeStart][$i] . ',';
 $csv .= $_POST[directTimeEnd][$i] . ',';
 $csv .= $_POST[directJob][$i] . ',';
 $csv .= $_POST[directPlan][$i] . ',';
 $csv .= $_POST[directPPE][$i] . ',';
 $csv .= $_POST[directMaterials][$i] . '\n';
}

return $csv;

暫無
暫無

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

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