[英]Insert multiple rows in mysql using jquery repeater
我有一個表單轉發器( https://github.com/DubFriend/jquery.repeater ),如果需要,它可以添加多個輸入,但唯一的事情是..我不知道如何讓它插入 sql 所有一次從表單中獲取數據。 所以這就是我到目前為止所擁有的,對不起我的英語不好,我是一個學習者,你們是最好的。
HTML:
<form action="" method="POST">
<div class="modal-body">
<div class="repeater-default">
<div data-repeater-list="sectiuni" class="col-md-12">
<div data-repeater-item="">
<div class="row">
<div class="form-group mb-1 col-sm-12 col-md-4">
<label for="email-addr">Sectiunea</label>
<br>
<input type="text" class="form-control" id="sectiunea" name="sectiunea[]" placeholder="Introdu sectiunea">
</div>
<div class="form-group mb-1 col-sm-12 col-md-2">
<label for="pass">Nr.Dansatori</label>
<br>
<input type="number" class="form-control" name="nrdansatori[]" id="nrdansatori" placeholder="Numarul dansatorilor">
</div>
<div class="skin skin-flat form-group mb-1 col-sm-12 col-md-2">
<label for="tel-input">Timp piesa</label>
<br>
<input class="form-control" type="text" name="timpsectiune[]" id="timpsectiune" placeholder="2:34">
</div>
<div class="form-group mb-1 col-sm-12 col-md-2">
<label for="pret">Pret</label>
<br>
<input class="form-control" type="number" name="pretsectiune[]" id="pretsectiune" placeholder="250">
</div>
<div class="form-group col-sm-12 col-md-2 mt-1">
<button type="button" class="btn btn-danger" style="margin-top: 12px;" data-repeater-delete=""> <i
class="feather icon-trash"></i> Delete</button>
</div>
<hr>
</div>
</div>
</div>
<div class="form-group overflow-hidden">
<div class="col-12">
<button type="button" data-repeater-create="" class="btn btn-primary col-sm-12 btn-sm">
<i class="feather icon-plus"></i> ADD ONE MORE SECTION
</button>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<input type="reset" class="btn btn-secondary" data-dismiss="modal" value="Close">
<input type="submit" id="save" class="btn btn-success" value="Save">
</div>
</form>
Javascript:
$("#save").click(function(e) {
e.preventDefault();
var sectiunea = $("#sectiunea").val();
var nrdansatori = $("#nrdansatori").val();
var timpsectiune = $("#timpsectiune").val();
var pretsectiune = $("#pretsectiune").val();
var infos = {
sectiunea : sectiunea,
nrdansatori : nrdansatori,
timpsectiune: timpsectiune,
pretsectiune: pretsectiune
};
$.ajax({
type: 'POST',
data: infos,
url: 'sql-insert.php',
success: function(data) {
if (data === TRUE) {
alert('Success');
} else {
alert("ERROR");
}
}
});
PHP:
if(isset($_POST['sectiunea'])) {
$table = "`".RDCP_PREFIX."sectiuni`";
$data = array(
'sectiune' => trim($db->escape($_POST['sectiunea'])),
'max_d' => trim($db->escape($_POST['nrdansatori'])),
'timp' => trim($db->escape($_POST['timpsectiune'])),
'pret' => trim($db->escape($_POST['pretsectiune']))
);
foreach ($data as $name) {
$db->insert($table, $data);
}
}
public function insert($table,$fields) {
$field = array_keys($fields);
$single_field = implode(",", $field);
$val = implode("','", $fields);
$stmt = $this->conn->prepare("INSERT INTO ".$table."(".$single_field.") VALUES('".$val."')");
$stmt->execute();
if($stmt === true) { echo true; }
else { echo false; }
}
您的insert
function 可能是問題所在。 您將每一列插入到自己的記錄中,您也在濫用准備好的語句。 您應該像這樣編寫 function (下面的偽代碼):
public function insert($table, $array) {
$fields = array_keys($array);
$stmt = $this->conn->prepare('INSERT INTO ' . $table . '(' . implode(",", $fields) .') VALUES (' . implode(',', array_fill(0, count($fields), '?')) .')');
$stmt->bind_param(implode('', array_fill(0, count($fields), 's')), ...array_values($array));
$stmt->execute();
if($stmt === true) {
echo true;
} else {
echo false;
}
}
有關潛在的bind_param
問題,請參閱https://stackoverflow.com/a/50654198/3783243 。
然后這樣稱呼它:
if(isset($_POST['sectiunea'])) {
$table = "`".RDCP_PREFIX."sectiuni`";
$data = array(
'sectiune' => trim($_POST['sectiunea']),
'max_d' => trim($_POST['nrdansatori']),
'timp' => trim($_POST['timpsectiune']),
'pret' => trim($_POST['pretsectiune'])
);
$db->insert($table, $data);
}
我想我已經完成了它並且正在工作 bcz jquery 中繼器的名稱類似於此 cat[0] 名稱:
if(!empty(isset($_POST))) {
$table = "`".RDCP_PREFIX."sectiuni`";
foreach($_POST as $key => $value){
for ($i=0; $i < count($value); $i++) {
$data = array(
'sectiune' => $value[$i]['sectiunea'],
'max_d' => $value[$i]['nrdansatori'],
'timp' => $value[$i]['timpsectiune'],
'pret' => $value[$i]['pretsectiune']
);
$db->insert($table, $data);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.