我是Ajax和Php的新手,我想解决有关Bootstrap Modal,Ajax和Php的Mysql表中是否存在isert数据的疑问。
所以,我有一个表叫做“ tbl_employee”,还有一个页面叫做“ index.php”。
在“ index.php”中,我有一个Bootstrap模态按钮,当用户单击该按钮时效果很好。用户单击此按钮后,引导程序模式将显示一个表单,当用户完成该表单时,它将单击该按钮。单击“插入”按钮后,用户输入的所有数据通常都存储在“ tbl_employee”中。
但是,当我在“ tbl_employee”表中创建与另一个名为“ tipo_ps”的表的关系时,用户无法再通过Bootstrap Modal形式在Mysql中插入数据。在下面,我打印了一张图像,显示了我创建的与“ tbl_employee”表建立关系的列:
在“ index.php”页面中,我具有以下Ajax代码:
<script>
$(document).ready(function(){
$('#insert_form').on("submit", function(event){
var tipo=$("#tipo").val();
event.preventDefault();
if($('#name').val() == "")
{
alert("Name is required");
}
else if($('#address').val() == '')
{
alert("Address is required");
}
else if($('#designation').val() == '')
{
alert("Designation is required");
}
else
{
$.ajax({
url:"insert.php",
method:"POST",
data: $('#insert_form').serialize(),
beforeSend:function(){
$('#insert').val("Inserting");
},
success:function(data){
$('#insert_form')[0].reset();
$('#add_data_Modal').modal('hide');
$('#employee_table').html(data);
}
});
}
});
</script>
如果我不创建任何关系表,则上面的代码可以正常工作。以下是负责在“ tbl_employee”表中插入数据的代码(insert.php)。创建关系时,我在代码中插入了列“ tipo”:
<?php
include 'dbconnect.php';
if(!empty($_POST))
{
$output = '';
$tipo = mysqli_real_escape_string($conn, $_POST['tipo']);
$name = mysqli_real_escape_string($conn, $_POST['name']);
$address = mysqli_real_escape_string($conn, $_POST['address']);
$gender = mysqli_real_escape_string($conn, $_POST['gender']);
$designation = mysqli_real_escape_string($conn, $_POST['designation']);
$age = mysqli_real_escape_string($conn, $_POST['age']);
$query = "
INSERT INTO tbl_employee(tipo, name, address, gender, designation, age)
VALUES('$tipo', '$name', '$address', '$gender', '$designation', '$age')
";
if(mysqli_query($conn, $query))
{
$output .= '<label class="text-success">Data Inserted</label>';
$select_query = "SELECT tbl_employee.id, tbl_employee.tipo, tbl_employee.name, tipo_ps.tipo FROM (tbl_employee INNER JOIN tipo_ps ON tbl_employee.tipo = tipo_ps.tipo_id)";
$result = mysqli_query($conn, $select_query);
$output .= '
<table class="table table-bordered">
<tr>
<th width="70%">Tipo</th>
<th width="70%">Name</th>
<th width="30%">View</th>
</tr>
';
while($row = mysqli_fetch_array($result))
{
$output .= '
<tr>
<td>' . $row['tipo'] . '</td>
<td>' . $row['name'] . '</td>
<td><input type="button" name="view" value="view" id="' . $row['id'] . '" class="btn btn-info btn-xs view_data" /></td>
</tr>
';
}
$output .= '</table>';
}
echo $output;
}
?>
正如我在上面解释的那样,当用户单击引导程序模式形式上的插入按钮时,“ index.php”页面中什么都没有显示,如下图所示:
Blank page after clicked on "Insert button"
但是,如果删除我创建的关系,一切都会很好。
在这种情况下,如果可能的话,我该怎么办才能将具有已创建关系的数据插入“ tbl_employee”表中?
非常感谢所有人。
答案 0 :(得分:0)
所以问题出在选项标签中:
if($rowCount > 0) {
while($row = $query->fetch_assoc()) {
echo '<option value="">'.$row['tipo'].'</option>';
}
} else {
echo '<option value="">Tipo não encontrado</option>';
}
,在插入查询中,您有一个空的$tipo
值,
$query = "INSERT INTO tbl_employee(tipo, name, address, gender, designation, age)
VALUES('$tipo', '$name', '$address', '$gender', '$designation', '$age')
";
因此将其更改为:
if($rowCount > 0) {
while($row = $query->fetch_assoc()) {
echo '<option value="'.$row['tipo_id'].'">'.$row['tipo'].'</option>';
}
} else {
echo '<option value="">Tipo não encontrado</option>';
}