2017-06-01 106 views
0

我有一個網站,將出售多種產品。到目前爲止,我的房源頁面看起來像這樣html不同的頁面內容取決於點擊的內容

<div class="col-sm-9 padding-right"> 
    <div class="features_items"><!--features_items--> 
     <h2 class="title text-center">My Products</h2> 

     <?php 
     $servername = "server"; 
     $username = "user"; 
     $password = "pass"; 
     $dbname = "dbname"; 

     // Create connection 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     // Check connection 
     if ($conn->connect_error) { 
      die("Connection failed: " . $conn->connect_error); 
     } 


     $sql2 = "SELECT * FROM myproducts WHERE 1 ORDER BY ProductName ASC"; 
     $myresult = $conn->query($sql2); 

     $x = 1; 
     while ($row = $myresult->fetch_assoc()) { 
     ?> 
     <div class="col-sm-4"> 
      <div class="product-image-wrapper"> 
       <div class="single-products"> 
        <div class="productinfo text-center"> 

         <img src="../../images/myImages/<?php echo $row['ProductImage1'];?>_0001_1.jpg" alt="../../images/myImages/<?php echo $row['ProductImage1'];?>_0001_1.jpg" /> 
         <h2><?php echo $row['ProductPrice']; ?></h2> 
         <p><?php echo $row['ProductName']; ?></p> 
         <a href="#" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to cart</a> 
        </div> 
        <div class="product-overlay"> 
         <div class="overlay-content"> 
          <h2><?php echo $row['Vendor']; ?></h2> 
          <h2><?php echo $row['ProductName']; ?></h2> 
          <p>$ <?php echo $row['ProductPrice']; ?></p> 
          <a href="#" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to cart</a> 
         </div> 
        </div> 
       </div> 
       <div class="choose"> 
        <ul class="nav nav-pills nav-justified"> 
         <li><a href=""><i class="fa fa-plus-square"></i>Add to wishlist</a></li> 
         <li><a href=""><i class="fa fa-plus-square"></i>Add to compare</a></li> 
        </ul> 
       </div> 
      </div> 
     </div> 
     <?php 
     } 
    $conn->close(); 
?> 

上面的代碼遍歷數據庫中的所有內容,並將其顯示在屏幕上。我想要的是當您點擊某個產品時,它會轉到其他頁面並顯示特定的產品信息。我有數百種產品要單獨顯示,我想知道是否有一種方法,我不必編寫100個以上的HTML文件,只需讓每個頁面都可以單獨顯示即可。

理想情況下,安裝程序會像上面的那樣,它使用php從數據庫中拉出並顯示它需要在屏幕上顯示的內容。但是我的問題是,一旦產品被點擊,新頁面將如何知道哪些產品已通過,我唯一能想到的就是創建所有單獨的產品頁面。

+1

一個字:模板。 – Tyr

+0

什麼是產品的唯一標識符?看起來好像每個記錄所建立的任何鏈接都會包含該標識符,以便它知道要檢索哪些信息然後顯示給用戶。 – Taplar

+0

不需要在JavaScript或jQuery中執行此操作。編寫一個PHP頁面,您可以將產品ID傳遞給該頁面,然後該頁面可以收集所有產品細節並顯示它們。 – Twisty

回答

0

你需要像這樣定義

my-website.com/product.php?id=2 

路線,其中id將在每個產品的ID。

,如果你對你的表slug列,你可以做

my-website.com/product.php?slug=a-nice-product 

slug將是爲每個產品所產生的存儲塞。

因此,無論哪種方式適用於您,您可以使用產品的idslug來獲取特定產品以在產品詳細信息頁面上顯示。

顯示格式將基於預定義的模板。 類似的東西給你做什麼產品的上市將

<?php 
    $servername = "server"; 
    $username = "user"; 
    $password = "pass"; 
    $dbname = "dbname"; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 
    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $id = $_GET['id']; // in the case of "my-website.com/product.php?id=2" 

    $sql2 = "SELECT * FROM myproducts WHERE id=$id ORDER BY ProductName ASC"; // NOTE:: This is a bad practice 
    $myresult = $conn->query($sql2); 

    if($myresult): 
?> 

<div class="col-sm-9 padding-right"> 
     <h2 class="title text-center">Details about <?= $myresult['ProductName']; ?></h2> 

     <!-- LIST PRODUCT DETAILS BASED ON TEMPLATE DESIGN --> 

</div> 
<?php 
    endif; 
    $conn->close(); 
?> 

更新時間:

$id = $_GET['id']; // in the case of "my-website.com/product.php?id=2" 

     $sql2 = "SELECT * FROM myproducts WHERE id=$id ORDER BY ProductName ASC"; 
// NOTE:: This is a bad practice as it is open to SQL injection attacks. 

瞭解更多關於SQL injection

同樣,一個清潔的URL看起來像這樣

my-website.com/product/2 

但要實現這一點,你需要設置一些htaccess規則。

+1

雖然答案是詳細的,但請注意:1-答案不應該包含URL部分,因爲它可能會混淆。 2-如果有什麼不好的做法,那麼它不應該被添加到答案中。或者,至少,解釋爲什麼這是一種不好的做法。 –

+0

謝謝@MohammedAkhtarZuberi –