html不同的页面内容取决于点击的内容

问题描述:

我有一个网站,将出售多种产品。到目前为止,我的房源页面看起来像这样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

你需要像这样定义

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 –