2014-03-25 56 views
0

我已經創建了一個網頁,我的客戶將能夠輸入所有物品的詳細信息,並返回到我的商店。我創造了這樣一種方式,一個客戶可以輸入他的個人信息一次,但可以添加他返回的任何數量的項目。我創建了一個「添加更多」按鈕來完成這項工作。但是當我測試我的網站時,數據庫只會輸入最後一個項目,並且不會存儲以前的項目。無法添加在phpMyAdmin上輸入的所有列

<script> $(function() { 
    $('input.more').on('click', function() { 
    var $table = $('#input_fields'); 
    var $tr = $table.find('tr').eq(0).clone(); 
    $tr.appendTo($table).find('input').val(''); 
    }); 
}); 
</script> 

<tr> 
     <td width="33%"><label class="description" for="element_20">Manufacturer, Model, Serial # </label> 
     </td> 
     <td width="33%"><label class="description" for="element_10">Tag Number (If Any) </label> 
     </td> 
     <td width="33%"><label class="description" for="element_4">Item Description </label> 
    </td> 
     </tr> 
     </table> 
     <table id="input_fields" width="100%" border="0" cellpadding="4"> 
     <tr> 
     <td width="33%"><input id="element_20" name="model" class="element text large" type="text" maxlength="255" value="<?php if($action != "add") echo $row["model"]; ?>"/></td> 
     <td width="33%"><input id="element_10" name="tag" class="element text large" type="text" maxlength="255" value="<?php if($action != "add") echo $row["tag"]; ?>"/></td> 
     <td width="33%"><input name="itemdesc" type="text" class="element text large" id="element_4" value="<?php if($action != "add") echo $row["itemdesc"]; ?>" /></td> 
     </tr> 

    </table> 
<input class="more" type="button" value="Add more" name="addmore"/>  

<ul> 
<li class="buttons"> 
     <input id="saveForm" class="button_text" type="submit" name="Submit" value="Submit" /> 

在此,當客戶進入一個項目的詳細信息,然後點擊添加更多和進入其他項目的詳細信息。只有最後一個輸入項目的詳細信息被儲存。但是我希望所有項目都可以存儲並顯示在數據庫中。

+0

如果輸入標籤的名稱是相同的,當你點擊添加更多,使用數組'name =「模型[]」'做所有的名稱相同,並在PHP文件使用循環提取的值每個數組單元格 – Tabby

回答

0

由於每個輸入元素的副本具有相同的name屬性,您最終只會向服務器發佈單個模型/標記/文本。當PHP嘗試將發佈的數據映射到$_POST時,它只會映射到$_POST中的單個模型/標記/ itemdesc項,因爲輸入名稱相同。

解決此問題的最簡單方法是在輸入名稱中使用數組訪問表示法,如model[],tag[],itemdesc[]。這將允許PHP爲$_POST中的每個模型/標籤/ itemdesc密鑰組裝一組值。

試試這個。在更改HTML代碼之前,在腳本的開頭執行var_dump($_POST)。運行多項目測試用例並查看傾銷值。

然後更改爲在您的HTML中使用數組訪問表示法,並查看var_dump()給出的區別。