簡體   English   中英

如何創建多個動態表單字段並插入到mysql數據庫中

[英]How to create multiple dynamic form fields and insert in mysql database

我需要創建包含以下內容的動態文本字段:姓名 姓氏 年齡 性別。 我應該有一個名為“添加新用戶”的按鈕,它只是添加一個新行,我可以在其中輸入姓名姓氏年齡性別。 我需要它動態,因為我不知道每個事件將添加多少用戶。 我還需要在數據庫中存儲 name surname age性別 (x) 添加行的數量。

我需要類似於下面的東西:但是我需要額外的 3 行彼此相鄰。 所以我會“INSERT INTO my_hobbies(姓名,姓氏,年齡,性別)

我知道這聽起來很牽強,但我正在為此苦苦掙扎。

<?php 
require("dbconn.php");
?>

<html>
<head>
<title></title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
var counter = 0;
$(function(){
$('p#add_field').click(function(){
counter += 1;
$('#container').append(
'<strong>Hobby No. ' + counter + '</strong><br />' 
+ '<input id="field_' + counter + '" name="dynfields[]' + '" type="text" /><br />' );

});
});
</script> 

<body>

<?php
if (isset($_POST['submit_val'])) {
if ($_POST['dynfields']) {
foreach ( $_POST['dynfields'] as $key=>$value ) {
$values = mysql_real_escape_string($value);
$query = mysql_query("INSERT INTO my_hobbies (hobbies) VALUES ('$values')", $connection );  

}
}

echo "<i><h2><strong>" . count($_POST['dynfields']) . "</strong> Hobbies Added</h2></i>";

mysql_close();
}
?>
<?php if (!isset($_POST['submit_val'])) { ?>
<h1>Add your Hobbies</h1>
<form method="post" action="">


<div id="container">
<p id="add_field"><a href="#"><span>Click To Add Hobbies</span></a></p>
</div>

<input type="submit" name="submit_val"  value="Submit"  />
</form>
<?php } ?>

</body>
</html>

您已經有一個 javascript 計數器,因此您可以使用它來識別哪些輸入字段屬於一起。 根據你的例子可以使用這樣的東西:

$(function(){
    $('p#add_field').click(function(){
        counter += 1;
        $('#container').append(
        '<strong>Hobby No. ' + counter + '</strong><br />' 
        + '<input id="field_' + counter + '" name="dynfields['+counter+'][name]' + '" type="text" /><br />' +
        + '<input id="field_' + counter + '" name="dynfields['+counter+'][surname]' + '" type="text" /><br />' +
        + '<input id="field_' + counter + '" name="dynfields['+counter+'][age]' + '" type="text" /><br />' +
        + '<input id="field_' + counter + '" name="dynfields['+counter+'][gender]' + '" type="text" /><br />');

    });
});
</script>

你可以用同樣的方式在你的 PHP 中捕獲它。 請注意,該值現在是一個數組而不是單個值,但您可以使用array_keysarray_values以簡單的方式創建查詢。 在 PHP 中試試這個:

if (isset($_POST['submit_val'])) {
    if ($_POST['dynfields']) {
        foreach ( $_POST['dynfields'] as $key=>$fieldArray ) {

            $keys = array_keys($fieldArray);
            $values = array_map("mysql_real_escape_string",$fieldArray);

            $query = mysql_query("INSERT INTO my_hobbies (".implode(',',$keys).") VALUES ('".implode('\',\'',$values)."')", $connection );  
        }
    }

    echo "<i><h2><strong>" . count($_POST['dynfields']) . "</strong> Hobbies Added</h2></i>";

    mysql_close();
}

是的,@alda1234 是對的。 您不應該使用mysql_*因為它已被棄用。

我對 Mysqli 准備的語句有相同的回答,喜歡它。

我的html

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
    <p><label>Please enter your most recent education<br>
    <input type="text" name="dynfields[]">
</p>
<p><label>Please enter any previous education<br>
    <input type="text" name="dynfields[]">
</p>
<p><label>Please enter any previous education<br>
    <input type="text" name="dynfields[]">
</p>
<input type="submit" name="submit">
</form>

和 php

foreach ( $_POST['dynfields'] as $key=>$value ) {

print_r($value."<br>");

$stmt = $conn->prepare("INSERT INTO dynamic_test2 (hobbies) VALUES (?)");
$stmt->bind_param("s", $values);

$values = $conn->real_escape_string($value);


$stmt->execute();

echo "New records created successfully";


}

暫無
暫無

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

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