php - 显示产品信息php

标签 php mysql model-view-controller

您好,我是 php 初学者,正在学习开发电子商务页面。 我面临的问题是我的产品可以有一个产品网格。现在我想单击产品图像或名为“信息”的按钮,它会显示信息,而不是为每个项目创建一个页面。它确实转到该页面,但仅显示页眉和页脚,而不显示 栏中的链接确实获取了产品的 ID。

我正在使用 MVC,因此代码如下:

Model: ProductDataSet.php

public function fetchProductInformation($productID) {
  $sqlQuery = 'SELECT * FROM product WHERE (productID = :productID)';
  $statement = $this->_dbHandle->prepare($sqlQuery); // prepare a PDO statement
  $statement->execute(); // execute the PDO statement
    $dataSet = [];
    while ($row = $statement->fetch()) {
       $dataSet[] = new ProductData($row);
    }

    return $dataSet;
}

View: product
<?php
session_start();
if(!isset($_SESSION['emailaddress'])){

}
?>
<?php require('template/header.phtml') ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <br>

    <?php foreach ($view->productDataSet  as $productData) {
        if (count($view->productDataSet)>0) {
         echo '<div class = "col-xs-6 .col-sm-3">';
        echo '<a href="product.php?id=' . $productData->getProductID(). '"><img src="images/'. $productData->getPhoto(). ' "alt="no picture" height = ""  width = ""/> </a>' ."\n";
        echo "<p>" . $productData->getTitle(). "</p>\n";
          echo "<p>" . $productData->getDescription(). "</p>\n";
        echo "<p>£" . $productData->getPrice(). ".000</p>\n";
        //  echo '<a class="btn btn-primary" type="button" href =productDetails.php?product='.$product->getProduct().'>view</a>';
        echo '<a href="productDetails.php?ProductID='. $productData->getProductID().'><button type="button" class="btn btn-info">Info</button></a>';
        echo '<a href="product.php"><input type="submit" class = "btn btn-primary " value="Add to basket"></a>';
      //  echo '<a href="/productDetails.php?id='.$productData->getProductID().'">View details</a>';
        //  echo '<a class="btn btn-primary" type="button" href =productDetails.php?product='.$product->getProductID().'>view</a>';
        echo "</div>";

    }
  }
    ?>

</form>

<?php require('template/footer.phtml') ?>

VIEW: ProductDetails
<?php require('template/header.phtml') ?>

<h3>Welcome to Page1</h3>
<?php
  echo "<p>" . $productData->getTitle(). "</p>\n";
  ?>
<?php require('template/footer.phtml') ?>

Controller : product

<?php

require_once('Models/ProductDataSet.php');

$view = new stdClass();
$view->pageTitle = 'Products';
$view->productDataSet = null;

    $productDataSet = new productDataSet();
    $view->productDataSet = $productDataSet->fetchAllProducts();

  //  $view->watchDataSet = $watchDataSet->fetchWatch($_GET['id'])[0];

require_once('Views/product.phtml');

Controller Product Details 
<?php

$view = new stdClass();
$view->pageTitle = 'Page1';
require_once('Models/ProductDataSet.php');
$productDataSet = new productDataSet();
if(isset($_GET['productID']))
{
  $productID = $_GET['productID'];
  $view->productDataSet =$productDataSet->fetchProductInformation($productID);
}

require_once('Views/product.phtml');?>

最佳答案

您似乎错过了将参数实际绑定(bind)到您准备的查询的部分。 :productID 只是您准备查询时的占位符,您需要在查询中显式定义 :productID

观察您的函数的以下更改:

public function fetchProductInformation($productID) {
  $sqlQuery = 'SELECT * FROM product WHERE (productID = :productID)';
  $statement = $this->_dbHandle->prepare($sqlQuery); // prepare a PDO statement
  ////////////////////////////////////////////////
  $statement->bindParam(':productID', $productID);
  ////////////////////////////////////////////////
  $statement->execute(); // execute the PDO statement
  $dataSet = [];
  while ($row = $statement->fetch()) {
    $dataSet[] = new ProductData($row);
  }

  return $dataSet;
}

此外,您对 button 元素的回显缺少 href 属性的右双引号。以下是修复后的版本:

echo '<a href="productDetails.php?ProductID='. $productData->getProductID().'"><button type="button" class="btn btn-info">Info</button></a>';

关于php - 显示产品信息php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45820433/

相关文章:

php - 如何使用 PHP-curl 发送对 "multipart/related"Content-Type 的请求?

mysql - 为什么这个mysql语法错误?

javascript - 当选择某一行时,如何从行中的单元格中获取值

javascript - ExtJS MVC 约定、命名和行为

javascript - 什么是 dojo.store.Memory?

php - 自动完成菜单中的单独网址

php - 错误: Unterminated string literal

mysql - 使用 GROUP BY 时计算空值

asp.net-mvc - MVC 5 捆绑和 Azure CDN(查询字符串)

php - 将 [用户名] 添加到可填充属性以允许在 [应用程序/帖子] 上进行批量分配