将formdata添加到一个数据库表,并将另一个数据库表中的ID通过AJAX添加到PHP并插入到数据库中

时间:2017-05-03 13:22:25

标签: php ajax database mysqli bootstrap-modal

我正在研究一个包含数据库动态数据的原型。我的数据库中有两个表:“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中没有值,或者它不是正确的数据格式。

我很失落,也是编程的新手,所以非常感谢所有的帮助!

我确信有更好的方法来实现我想要做的事情,所以关于如何更改代码结构的所有建议都是最受欢迎的。

如果问题很明显,我道歉:)但在我发布这个问题之前,我已经研究了很多尝试找到答案!

0 个答案:

没有答案