【发布时间】:2015-05-04 17:45:35
【问题描述】:
我有一个表单,它允许用户添加一个新的课程名称,并让他们可以选择添加更多记录,这样更方便,而不是单独提交每个记录。
我尝试使用我在许多在线示例中看到的语法,它可以动态添加额外的行,但这会在连接到 mysql 数据库时影响表单提交。
它将添加第一条记录而不是第二条记录,我不确定我是否使用 PDO 正确执行它。
如果有人能就我如何实现这一点以及我的代码失败的原因提供一些见解,我将不胜感激。
php 文件:
<?php
include "db_conx.php";
try
{
$db_conx = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
$db_conx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = $db_conx->prepare("INSERT INTO `insights`.`course_details` (`course_title`) VALUES (:course_title)");
$course_title = $_POST['course_title'];
//$course_code = $_POST['course_code'];
$sql->bindParam(':course_title', $course_title, PDO::PARAM_STR);
//$sql->bindParam(':course_code', $course_code, PDO::PARAM_STR);
/*** execute the prepared statement ***/
$courses = array();
if ($sql->execute()) {
$courses[] = $sql;
}
}
/*** success message ***/
$message = "<p class='text-success'> Record Successfully Added <span class='glyphicon glyphicon-ok'/></p>";
}
catch(Exception $e)
{
$message = 'Message: ' .$e->getMessage();
}
die($message);
?>
单击时添加更多行并在单击“提交”时提交表单的 AJAX:
function addCall() {
var data = $('#addForm').serialize();
$.post('ManageCourses_AddSubmit.php', data, function(response){
$("#addForm").html(response);
//'soft'reload parent page, after a delay to show message
setTimeout(function(){
$('#addModal').modal('hide')
location.reload();
},3500);
}).fail(function(jqXHR, textStatus) {
alert( "Request failed: " + textStatus );
});
}
jQuery(function($){
var i = 1;
var $button = $('#add_row'),
$row = $('.addForm').clone();
$button.click(function(){
$row.clone().insertBefore( $button );
});
});
发送数据的表单:
<div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="addModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Add New Record: </h4>
</div>
<div class="modal-body">
<form id="addForm" class="addForm">
<div class="form-group">
<label for="course_code" class="pull-left" class="control-label">Course Code:</label>
<input type="text" class="form-control" id="course_code_id" name="code[]" readonly value ="NULL">
</div>
<div class="form-group">
<label for="course_name" class="pull-left" class="control-label">Course Title:</label>
<input type="text" class="form-control" placeholder="Enter Course Title" id="course_title_id" name="course_title">
</div>
</form>
</div>
<div class="modal-footer">
<div class="btn-toolbar">
<button type="button" class="btn btn-primary" id="add_row" name="add_row">Add New Record <span class="glyphicon glyphicon-plus"></button>
<button type="button" class="btn btn-danger" id="del_row" name="del_row">Delete Row <span class="glyphicon glyphicon-trash"></button>
<button type="button" class="btn btn-default" class="pull-right" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-success" class="pull-right" onclick="addCall();">Submit <span class="glyphicon glyphicon-saved"></button>
</div>
</div>
</div>
</div>
</div>
谢谢! :)
【问题讨论】:
-
你的php代码中$courses数组的作用是什么?
-
我试图将表单中给出的每个 course_title 存储到课程中,并将其作为一个数组执行,一个一个地插入
-
我确信这种方法是否会起作用。此外,您确定这些值是通过 POST 传递给您的 php 代码的吗?
-
第一个值正在传递,因此它成功添加了存储在表单中的第一个值,但它忽略了第二个值,这就是我感到困惑的原因
-
尝试在您的 php 代码末尾添加 echo $message 并再试一次? (在尝试部分 php 代码中)
标签: php jquery mysql forms pdo