Torax Bellial
Torax Bellial

Reputation: 3

Data no inserted to database

I am a beginner and trying to follow some tutorial videos for my school project. I am stuck when the data not inserted into the database. I double-check the code to tutorial and nothing wrong. There's no error message or notification too. I really appreciate your help.

action.php

 <!--action.php-->
    <?php
        require 'config.php';

        if(isset($_POST['pid'])){
            $pid    = $_POST['pid'];
            $pname  = $_POST['pname'];      
            $pprice = $_POST['pprice'];
            $pimage = $_POST['pimage'];
            $pcode  = $_POST['pcode'];
            $pqty   = 1;

            $stmt = $conn->prepare("SELECT product_code FROM cart WHERE product_code=?");
            $stmt->bind_param("s",$pcode);
            $stmt->execute();
            $res = $stmt->get_result();
            $r = $res->fetch_assoc();
            $code = $r['product_code'];

            if(!$code){
                $query = $conn->prepare("INSERT INTO cart (product_name,product_price,product_image,qty,total_price,produk_code) VALUES (?,?,?,?,?,?)");
                $query->bind_param("sssiss",$pname,$pprice,$pimage,$pqty,$pprice,$pcode);
                $query->execute();

                echo '<div class="alert alert-success alert-dismissible">
                        <button type="button" class="close" data-dismiss="alert">&times;</button>
                        <strong>Item added to cart!</strong> 
                      </div>';      
            }
            else{
                echo '<div class="alert alert-success alert-dismissible">
                          <button type="button" class="close" data-dismiss="alert">&times;</button>
                          <strong>Item already added to your cart!</strong> 
                      </div>';
            } 
        }
    ?>

index.php

<!--index.php-->
<!DOCTYPE html>
<html>
<head>
    <title>Map Store</title>
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <script src="https://kit.fontawesome.com/fc847822ba.js" crossorigin="anonymous"></script>

    <link rel="stylesheet" href="css/bootstrap.min.css" >

    <link rel="stylesheet" type="text/css" href="fontawesome/css/all.min.css"/>
</head>
<body>
    <nav class="navbar navbar-expand-md bg-dark navbar-dark">
      <!-- Brand -->
      <a class="navbar-brand" href="index.php">Map Store</a>

      <!-- Toggler/collapsibe Button -->
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
        <span class="navbar-toggler-icon"></span>
      </button>

      <!-- Navbar links -->
      <div class="collapse navbar-collapse" id="collapsibleNavbar">
        <ul class="navbar-nav ml-auto">
          <li class="nav-item">
            <a class="nav-link active" href="index.php">Products</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Category</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="cart.php">Checkout</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="cart.php"><i class="fas fa-shopping-cart text-white"> <span id="cart-item" class="badge badge-danger">0</span> </i></a>
          </li>

        </ul>
      </div>
    </nav>
    <div class="container">
        <div class="row mt-2">
            <div id="message">

            </div>
            <?php
                include 'config.php';
                $stmt = $conn->prepare("SELECT * FROM product");
                $stmt->execute();
                $result = $stmt->get_result();
                while($row = $result->fetch_assoc()):
            ?>
            <div class="col-lg-3">
                <div class="card-deck">
                    <div class="card p-2 border-secondary mb-2">
                        <img src="<?= $row['product_image'] ?>" class="card-img-top" height="250">
                        <div class="card-body p-1">
                            <h4 class="card-title text-center text-info"><?= $row['product_name']?></h4>
                            <h5 class="card-text text-center text-danger"><?= number_format($row
                                ['product_price'],2) ?>/-</h5>
                        </div>
                        <div class="card-footer p-1">
                            <form action="#" class="form-submit"> 
                                <input type="hidden" class="pid" value="<?= $row['id']?>">
                                <input type="hidden" class="pname" value="<?= $row['product_name']?>">
                                <input type="hidden" class="pprice" value="<?= $row['product_price']?>">
                                <input type="hidden" class="pimage" value="<?= $row['product_image']?>">
                                <input type="hidden" class="pcode" value="<?= $row['product_code']?>">
                                <button class="btn btn-info btn-block addItemBtn"><i class="fas fa-cart-plus "></i>Add to cart</button>
                            </form>

                        </div>
                    </div>
                </div>
            </div>
        <?php endwhile; ?>
        </div>
    </div>

    <!-- jQuery library -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

    <!-- Popper JS -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>

    <!-- Latest compiled JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $(".addItemBtn").click(function(e){
                e.preventDefault();
                var $form   = $(this).closest(".form-submit");
                var pid     = $form.find(".pid").val();
                var pname   = $form.find(".pname").val();
                var pprice  = $form.find(".pprice").val();
                var pimage  = $form.find(".pimage").val();
                var pcode   = $form.find(".pcode").val();

                $.ajax({
                    url: 'action.php',
                    method: 'post',
                    data: {pid:pid,pname:pname,pprice:pprice,pimage:pimage,pcode:pcode},
                    success:function(response){
                        $("message").html(response);
                    }
                });
            });
        });
    </script>

</body>
</html>

config.php

<!--config.php-->
<?php
    $conn = new mysqli("localhost","root","","checkout_system");
        if($conn->connect_error){
            die("Connection Failed!".$conn->connect_error);
        }
?>

sorry i am new here and this my first post

Upvotes: 0

Views: 100

Answers (1)

Joffrey Schmitz
Joffrey Schmitz

Reputation: 2438

The HTML elements in your form must have a name attribute to be available in $_POST, you set only a class :

<input type="hidden" name="pid" class="pid" value="<?= $row['id']?>">

Upvotes: 1

Related Questions