我正在研究一个包含数据库动态数据的原型。我的数据库中有两个表:“ret”和“ordre”。
我有一个主键:我的表格中的“ID_ret”,我在数据库“ordre”中有一个外键“FK_ret”。 ID_ret和FK_ret应始终对应于同一实体。
现在我正在努力将值ID FK_ret与表单提交一起放入我的数据库中。我从一个被用户点击的tablerow中获取ID_ret,然后弹出一个带有表单的bootstrap模式。我希望在此表单中输入的数据与名为“ordre”的表一起进入我的数据库以及外键FK_ret(对应于表“ret”中的主键)
这是我在html中的bootstrap模式中的表单。
<form method="post" action="bestil.php" data-toggle="validator" role="form" class="form-group" id="bestilform">
<!-- antal måltider, som køber vil bestille-->
<div class="form-group">
<label>Antal måltider</label>
<select class="form-control selectpicker"
name="antal_ordre">
<option value="1" selected>1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</div>
<!-- navn på køber-->
<div class="form-group">
<label for="InputName1">Fulde Navn</label>
<input name="navn_ordre"
type="text"
class="form-control"
id="exampleInputName1"
placeholder="Indtast dit navn">
</div>
<!-- email på køber-->
<div class="form-group">
<label for="InputEmail1">Email</label>
<input name="email_ordre"
type="email"
class="form-control"
id="exampleInputEmail1"
placeholder="Indtast din e-mail"
data-error="Hov! Det er vist ikke en email...">
<div class="help-block with-errors"></div>
</div>
<!-- telefonnummer på køber-->
<div class="form-group">
<label for="InputPhonenumber1">Telefonnummer</label>
<div class="input-group">
<span class="input-group-addon">+45 </span>
<input name="telefonnummer_ordre"
data-minlength="8"
type="number"
class="form-control"
id="exampleInputPhone1"
placeholder="Indtast dit telefonnummer">
</div>
</div>
</div>
<!--modal footer-->
<div class="modal-footer">
<button type="button"
class="btn btn-default"
data-dismiss="modal"
data-toggle="modal"
data-target="#lavbestillingaccepter">Tilbage
</button>
<button
type="button"
class="btn btn-primary"
id="submitForm"
form="bestilform">Køb Måltid!
</button>
</div>
</div>
我有两个不同的脚本。第一个获取被点击的行的id(表“ret”的主键),并将id发送到我的php文件bestil.php。我怀疑错误是$ .ajax()中的数据,但我不确定。
<script>
$(document).ready(function(){
$(document).on('click', '#getUser', function(e){
e.preventDefault();
var uid = $(this).data('id'); // get id of clicked row
console.log(uid);
$.ajax({
url: 'bestil.php',
type: 'POST',
data: 'id='+uid,
/* data: {'id': 'uid'}*/
})
})
})
#getuser id来自此表。这里的行的ID是我想要存储为名为“ordre”的表中的外键。
<table id="tabel"
class="table table-hover table-responsive" >
<tr>
<th>Titel på ret</th>
<th>Afhent</th>
<th>Adresse</th>
<th>Postnummer</th>
<th>Måltider tilbage</th>
<th>Pris pr. måltid</th>
<th>Medbring selv emballage</th>
<th>Navn på kok</th>
<th></th>
</tr>
<?php
//Fetch Data from database
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){
?>
<td><?php echo $row['titel_ret']; ?></td>
<td><?php echo $row['afhentningstidsrum_ret']; ?></td>
<td><?php echo $row['adresse_ret']; ?></td>
<td><?php echo $row['postnummer_ret']; ?></td>
<td><?php echo $row['postnummer_ret']; ?></td>
<td><?php echo $row['pris_ret']; ?></td>
<td><?php echo $row['emballage_ret']; ?></td>
<td><?php echo $row['kok_ret']; ?></td>
<td id="getUser"
data-target="#lavbestillingaccepter"
class="btn btn-default btn-small"
data-toggle="modal"
data-id="<?php echo $row['ID_ret']; ?>">Køb</a>
</td>
</tr>
<?php
}}
else
{
?>
<tr>
<th colspan="2">There's No data found!!!</th>
</tr>
<?php
}
// close connection
mysqli_close($conn);
?>
</table>
这是从bootstrap模式中的表单获取数据的另一个脚本,并将其发送到bestil.php:
<script>
$(document).ready(function () {
$("#bestilform").on("submit", function(e) {
var postData = $(this).serializeArray();
var formURL = $(this).attr("action");
$.ajax({
url: formURL,
type: "POST",
data: postData,
//hide modalcontant and show order
success: function(data, textStatus, jqXHR) {
$("#seordre").show();
$("#afgivordre").hide();
},
error: function(jqXHR, status, error) {
console.log(status + ": " + error);
}
});
e.preventDefault();
});
//submit form med id'et #submitForm
$("#submitForm").on('click', function() {
$("#bestilform").submit();
});
});
这是我在bestil.php中的php代码:
$FK_ret = intval($_POST['id']);
var_dump($_POST);
// Escape user inputs for security
$ordre = mysqli_real_escape_string($conn, $_REQUEST['ordre']);
// attempt insert query execution
$sql = "INSERT INTO ordre (FK_ret, antal_ordre, navn_ordre, email_ordre,
telefonnummer_ordre)
VALUES ('$FK_ret','$_POST[antal_ordre]', '$_POST[navn_ordre]',
'$_POST[email_ordre]', '$_POST[telefonnummer_ordre]')";
if(mysqli_query($conn, $sql)){
echo "Records added successfully.";
}
else{
echo "ERROR: Could not execute $sql. " . mysqli_error($conn);
}
// close connection
mysqli_close($conn);
我的问题是我的数据库没有任何内容。我试图“硬编码”FK_ret的值,然后数据进入我的数据库,因此该部分有效。我试过这样:
VALUES (35,'$_POST[antal_ordre]', '$_POST[navn_ordre]',
'$_POST[email_ordre]', '$_POST[telefonnummer_ordre]')";
所以我认为问题是$ FK_ret中没有值,或者它不是正确的数据格式。
我很失落,也是编程的新手,所以非常感谢所有的帮助!
我确信有更好的方法来实现我想要做的事情,所以关于如何更改代码结构的所有建议都是最受欢迎的。
如果问题很明显,我道歉:)但在我发布这个问题之前,我已经研究了很多尝试找到答案!