получить данные о продукте из базы данных при нажатии на плитку продукта - PullRequest
0 голосов
/ 12 января 2020

, поэтому я использую 'while' для отображения продуктов на моей домашней странице, и я хочу, чтобы, когда пользователь нажимает на плитку продукта, он перенаправлялся в файл product_page. php, который содержит все подробности об этом параметре c продукт, который я не знаю, потому что я использую тег 'a', но он не работает

<?php
include 'config.php';
$stmt = $conn->prepare("SELECT * FROM product");
$stmt->execute();
$result = $stmt->get_result();
while($row = $result->fetch_assoc()):
?> 
<div class="col-sm-6 col-md-4 col-lg-3 mb-2" > 
<a href="product_page.php">
<div class="card-deck" id="product"> 
<div class="card border border-light ">
<img class="card-img-top" src="<?= $row['product_image'] ?>" >
<div class="card-body border border-light" style="background-color: #ffffff">
  <h4 class="card-title text-center text-info"><?= $row['product_name'] ?></h4>
  <h5 class="card-text text-center text-danger">Rs. <?= number_format($row['product_price'],2) ?> 
</h5> 
</div>
<div class="card-footer border border-light" style="background-color: #ffffff">
<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-block addItemBtn" style="background-color: #FE701E; color:#ffffff">Add To 
   Cart</button>
  </form>
</div>
</div>
</div>
</a>
</div>

<?php endwhile; ?>

это мой код из действия. php

if(isset($_POST['pid']))
{
$pid = $_POST['pid'];
$pname = $_POST['pname'];
$pprice = $_POST['pprice'];
$pimage = $_POST['pimage'];
$stmt = $conn->prepare("SELECT * FROM product WHERE pid=? LIMIT 1");
$stmt->bind_param("i",$pid);
$stmt->execute();
$pcount=mysqli_num_rows($stmt);
$res = $stmt->get_result();
$r = $res->fetch_assoc();
if($pcode>0)
{
$_SESSION['product_name'] =$r['product_name'];
$_SESSION['product_price'] =$r['product_price'];
$_SESSION['product_image'] =$r['product_image'];
header("Location:product_page.php");
}

здесь ajax запрос

$(document).ready(function(){
  $("#product").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){
                 }
    });
  });});

Ответы [ 2 ]

0 голосов
/ 12 января 2020

Ваш подход сбивает с толку. Почему у вас есть одна ссылка на товары. php? Вы можете попробовать один из следующих подходов

Вариант 1 Это лучший вариант, если вам не нужны никакие данные, кроме идентификатора, видимого в URL. Передайте идентификатор только по ссылке на товары. php. Там вы получаете остальные данные, которые вам нужны.

<a href="products.php?id=<?php echo $row['id'];?>Link text here, which could be the ID</a>

Поместите это в свой l oop и в products.php вы просто извлекаете нужные данные внутри этой страницы, запрашивая базу данных на основе идентификатора из ссылки.

Вариант 2 Вероятно, это проще, поскольку у вас уже есть все данные, если только вы не хотите, чтобы некоторые из этих данных отображались как часть URL). Передайте все эти переменные в свой URL как GET параметры

echo '<a href="products.php?id=' . $row['id'] . '&pname= . $row['product_name'] . '>Link text here</a>"

Просто продолжайте добавлять все свои параметры, используя оператор &.

0 голосов
/ 12 января 2020

Вы звоните ajax запрос на #product. Поскольку вы отображаете продукты в al oop, #product не является уникальным. ID любого элемента html должен быть уникальным на той же странице. Я предлагаю вам присвоить идентификатор <form> вместо <div> Так что вы можете создать уникальный идентификатор, например -

<form action="" class="form-submit" id="product_<?php echo $row['id']; ?>"> 

И затем вы можете вызвать запрос ajax. -

$(document).on('submit', '[id^="product_"]', function(){
  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){
                 }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...