2017-08-22 73 views
0

こんにちは私はPHPの初心者であり、電子商取引のページを開発することを学んでいます。 私が直面している問題は、私が製品でグリッドを持つことができるということです。今は商品イメージをクリックするか、「info」というボタンをクリックして、単一の商品ごとにページを作成するのではなく、情報を表示します。ページに移動しますが、ヘッダーとフッターだけが表示され、 は表示されません。バーのリンクは製品の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');?> 

答えて

0

それはあなたが実際にあなたが準備したクエリにパラメータをバインドする部分が欠落ように思われます。 :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>'; 
+0

はまだ、何も私は、これは製品が 上でクリックされたときに表示されるリンクである気づいていない////////////////// //// productDetails.php?ProductID = 2>

+0

私は私の答えに追加しました。 – coderodour

+0

リンクが大丈夫ですが、コンテンツはありません。ありがとうございました。あなたが私に与えた提案に変更しました。 –

関連する問題