簡體   English   中英

數據沒有插入數據庫,但是使用PHP和Ajax進行檢索可以正常工作嗎?

[英]Data is not inserting to database but retrieving is working fine using PHP and Ajax?

在向您提出我的問題之前,我想澄清一下,我只是Ajax和Jquery的新秀,因此,如果懷疑很小或小菜一碟,請饒恕我,對此深表歉意。

我正在嘗試使用Ajax和PHP為我的電子商務創建評論系統。 問題是,數據沒有插入數據庫中,但是如果我將數據手動插入數據庫中,則它可以完美顯示在我的站點中。我認為變量review或user_review出了點問題,但找不到是的。所以,請您告訴我我做錯了哪里。

<div role="tabpanel" class="tab-pane" id="reviews">
    <h4>Write your Review</h4>
    <form action="" method="post" onsubmit="return post();">
        <textarea id="review" class="reviewbox" placeholder="Write Your Review Here....."></textarea>
        <button type="submit" class="btn">Submit</button>
    </form>
    <div id="all_reviews">
        <?php
                            $query = $pdo->prepare("SELECT * FROM reviews WHERE product_id=?");
                            $query -> bindValue(1, $id);
                            $query->execute();
                            while ($row = $query->fetch(PDO::FETCH_ASSOC))
                            {
                                $name = $row['user_name'];
                                $text = $row['review_text'];
                                $time = $row['post_time'];
                        ?>
            <h5>By <?php echo $name; ?></h5>
            <p><i>posted on <?php echo $time; ?></i></p>
            <p>
                <?php echo $text; ?>
            </p>
            <hr>
            <?php
                            }
                        ?>
    </div>
    <script type="text/javascript" src="jquery.js">
    < script type = "text/javascript" >
        function post() {
            var review = document.getElementById("review").value;
            if (review) {
                $.ajax({
                    type: 'POST',
                    url: 'post_reviews.php',
                    data: {
                        user_review: review
                    },
                    success: function(response) {
                        document.getElementById("all_reviews").innerHTML = response + document.getElementById("all_reviews").innerHTML;
                        document.getElementById("review").value = "";
                    }
                });
            }
            return false;
        }
    </script>
</div>

這是我的post_reviews.php

 <?php
    session_start();
    require('includes/product.php');
    require('includes/connect.php');
    $product = new Product;         
    if(isset ($_GET['id'])) {
        $id = $_GET['id'];
        $data = $product -> fetch_data($id);    

        if(isset($_POST['user_review'])){
            $review=$_POST['user_review'];
            if (isset($_SESSION['logged_in'])) {
                $query = $pdo -> prepare("INSERT INTO reviews(product_id,user_name,review_text) VALUES (?,?,?)");
                $query -> bindValue(1, $id);
                $query -> bindValue(2, $_SESSION['name']);
                $query -> bindValue(3,$review);
                $query ->execute();
            }
            else{
                $review_msg="Please login to post your review";
            }
            $query = $pdo->prepare("SELECT * FROM reviews WHERE product_id=?");
            $query -> bindValue(1, $id);
            $query->execute();
            while ($row = $query->fetch(PDO::FETCH_ASSOC)){
                $name = $row['user_name'];
                $text = $row['review_text'];
                $time = $row['post_time'];
?>
                <?php if(isset($review_msg)){ ?>
                    <small style = "color : #aa0000"; ><?php echo $review_msg ?></small>
                    <br><br>
                <?php } ?>
                <h5>By <?php echo $name; ?></h5>
                <p><i>posted on <?php echo $time; ?></i></p>
                <p><?php echo $text; ?></p>
                <hr>
<?php 
            }
        }
        exit;
    }
?>

您沒有關閉腳本代碼,這是一個錯誤

 <script type="text/javascript" src="jquery.js">

 <script type="text/javascript" src="jquery.js"></script>

這就是您的ajax無法正常工作的原因。

首先檢查您的ajax是否正常運行

var review = document.getElementById(“ review”)。value;

$.ajax({
    type: "POST",
    url: "post_reviews.php",
    data: review,
    cache: false,
    dataType: 'json',
    success: function(response){
        document.getElementById("all_reviews").innerHTML = response + document.getElementById("all_reviews").innerHTML;
        document.getElementById("review").value = "";
    }


});

return false; 

現在我明白了。 您正在提交表格。

 <form action="" method="post" onsubmit="return post();">
        <textarea id="review" class="reviewbox" placeholder="Write Your Review 
         Here....."></textarea>
        <button type="submit" class="btn">Submit</button>
</form>

嘗試以此替換您的表單:

 <form action="" method="post">
  <textarea id="review" class="reviewbox" placeholder="Write Your Review 
             Here....."></textarea>
  <button type="button" onclick="post()" class="btn">Submit</button>
</form>

如果按鈕類型為“按鈕”,則不會提交表單。 現在單擊它即可調用您的函數並執行ajax調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM