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从数据库中拉出并显示它需要在屏幕上显示的内容。但是我的问题是,一旦产品被点击,新页面将如何知道哪些产品已通过,我唯一能想到的就是创建所有单独的产品页面。
你需要像这样定义
my-website.com/product.php?id=2
路线,其中id
将在每个产品的ID。
或
,如果你对你的表slug
列,你可以做
my-website.com/product.php?slug=a-nice-product
slug
将是为每个产品所产生的存储塞。
因此,无论哪种方式适用于您,您可以使用产品的id
或slug
来获取特定产品以在产品详细信息页面上显示。
显示格式将基于预定义的模板。 类似的东西给你做什么产品的上市将
<?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-答案不应该包含URL部分,因为它可能会混淆。 2-如果有什么不好的做法,那么它不应该被添加到答案中。或者,至少,解释为什么这是一种不好的做法。 –
谢谢@MohammedAkhtarZuberi –
一个字:模板。 – Tyr
什么是产品的唯一标识符?看起来好像每个记录所建立的任何链接都会包含该标识符,以便它知道要检索哪些信息然后显示给用户。 – Taplar
不需要在JavaScript或jQuery中执行此操作。编写一个PHP页面,您可以将产品ID传递给该页面,然后该页面可以收集所有产品细节并显示它们。 – Twisty