[英]Dynamic PHP / MySQL Upload Form
我正在嘗試構建一個動態PHP / MySQL上傳表單,其中可以動態添加或刪除數據字段,並且可以通過一個按鈕將所有這些數據上傳到數據庫。
這是可以添加和刪除的動態<textarea>
元素的外觀:
<form method="post" action="dynamicForm.php" enctype="multipart/form-data">
<!--Dynamically Added Paragraphs Go Here-->
<input type="submit" name="upload" value="Upload" id="upload">
</form>
<button onclick="addParagraph()">Add Paragraph</button>
<script>
//add textarea div and associate "Remove" button
function addParagraph(){
$("form").append('<div><textarea name="paragraph"></textarea><button class="remove">Remove</button></div>');
//remove added paragraph
$(document).on('click', ".remove", function(e) {
$(this).parent().remove();
});
</script>
這是我可以使用的一些示例PHP:
if (isset($_POST['upload'])) {
$db = mysqli_connect('','','','');
$paragraph = $_POST['paragraph'];
$sql = "INSERT INTO table (paragraph) VALUES ('$paragraph')";
mysqli_query($db, $sql);
}
每個添加的段落都具有paragraph
名稱。 如果有5個具有name paragraph
元素,並且PHP代碼正在尋找具有name paragraph
的元素,在這種情況下會發生什么? 是否上傳了所有數據,還是僅上傳了具有name paragraph
一個元素? 會拋出錯誤嗎? 如果這樣不能上傳所有添加的段落,我如何才能讓PHP上傳所有段落?
編輯:可能的解決方案
<script>
//changed name value to array "paragraph[]"
function addParagraph(){
$("form").append('<div><textarea name="paragraph[]"></textarea><button class="remove">Remove</button></div>');
</script>
if (isset($_POST['upload'])) {
$db = mysqli_connect('','','','');
$sql = "INSERT INTO table (paragraph) VALUES ('$paragraph')";
$paragraph_array = $_POST['paragraph'];
for ($i = 0; $i < count($paragraph_array); $i++){
$paragraph = mysqli_real_escape_string($paragraph_array[$i]);
mysqli_query($db, $sql);
}
}
用戶單擊“上傳”按鈕后,即使存在多個具有相同名稱的輸入元素,所有輸入的數據也將被上傳。
另一方面,在服務器端,您只能訪問具有重復名稱的輸入元素中最后輸入的值。
如果要訪問所有值,則應為輸入元素提供不同的名稱,或者只需在重復名稱的末尾添加“ []”,然后在服務器端,您將獲得所有封裝在數組中的輸入值。
<?php var_dump($_POST);?>
array(2){[“ paragraph”] => array(4){[0] => string(2)“ t1” [1] => string(2)“ t2” [2] => string(2) “ t3” [3] =>字符串(2)“ t4”} [“上傳”] =>字符串(6)“上傳”}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.