php - 如何有效地为许多产品提供 1 个 html 布局页面,这些产品将调用 mysql 数据库获取产品信息并插入我指定的位置?
问题描述
好的,所以最终我将在 mysql 数据库中说 100 种产品。产品页面从数据库中提取所有信息(例如零件编号、材料、颜色等)并将其输入到我指定的页面区域中,所有这些都使用 php。上一页将显示所有 100 种产品,当用户单击一个产品时,它将转到该产品页面。就像所有网站一样...
我不相信我需要为每个产品制作 100 个单独的 html 页面,对吗?我可以只制作 1 个主 html 页面作为 100 种不同产品的模板吗?基本上,当用户单击产品的图像标签(代码的第一个示例)时,它会打开主 html 模板,但会以某种方式在打开时调用数据库并加载该特定信息?然后其他产品将具有相同的过程,但它们是来自数据库的特定数据。第一个示例代码是页面上的一个产品,它将显示所有 100 个产品,其 href 包含将被点击以显示用户实际产品页面,无需重新加载页面即可动态检索到预定部分。我确信我想要做的事情有一个名字,但我所做的所有研究都没有找到我想要的东西。有没有比我解释的更好的方法?我也希望这是有道理的,谢谢您的任何意见。
<td><a href="pageContent.php"><img class="td-Image" src="image.jpg"></a>
</td>
<td class="td-manufacturer">
<h6>MANUFACTURER</h6>
<p>Lowes</p>
</td>
<td class="td-addComponent">
<p>$104.99</p>
<a href="#"><button class="add-button">ADD</button></a>
</td>
<td class="td-material">
<h6>MATERIAL</h6>
<p>Aluminum 7075-t6 Forged</p>
</td>
<td class="td-platform">
<h6>PLATFORM</h6>
<p>Large</p>
</td>
<td class="td-america">
<h6>AMERICAN MADE</h6>
<p>YES</p>
</td>
php 从数据库示例中获取信息的实际产品页面
<?php
$sql = "SELECT * FROM Parts;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {
?>
<div class="description">
<h3>Descrption</h3>
<p>
<?php
echo $row['Description'];
?>
</p>
</div>
<?php
}
}
?>
编者注:我编辑了这个问题,以根据下面我的回答中的主题来反映他想要什么。
解决方案
最佳情况下,您需要 2 个文件:
- 索引/产品列表
- 所选产品的详细信息
索引文件(也许叫它index.php
)
在这里,您需要选择产品并将其列为列表:
$stmt = $pdo->query("SELECT * FROM Parts");
while ($row = $stmt->fetch()) {
echo '<a href="javascript:loadDetail(\'' . $row['id'] . '\')">' . $row['name']."</a><br />\n";
}
由于您希望将详细信息显示到索引/列表页面,让我们添加一个容器区域:
<div id="container-detail">
</div>
添加一些 javascript 代码来处理 AJAX 请求:
<script type="text/javascript">
function loadDetail(itemId){
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://website.address/path/to/detail.php?id=" + itemId, true);
xhr.onreadystatechange = function ()
{
if (xhr.readyState==4 && xhr.status==200)
{
document.getElementById("container-detail").innerHTML=xhr.responseText;
}
}
xhr.send();
}
</script>
详细信息页面(我们称之为detail.php
)
在此屏幕中,我们仅获取由HTTP GET id
参数指定的一部分的详细信息。从index.php
(?id=
零件)提供的那个。
$stmt = $pdo->query("SELECT * FROM Parts WHERE id = '" . $_GET['id'] . "'");
$part = $stmt->fetch();
echo "Name: " . $part['name'] . "<br />\n";
echo "Manufacturer: " . $part['manufacturer'] . "<br />\n";
echo "Price: " . $part['price'] . "<br />\n";
就是这样,您应该根据您拥有的表格和模板进行一些调整。
需要注意的是,我使用PDO 机制来进行查询。这是因为mysql_* 函数已被弃用了很长时间,以至于现在它已从 PHP 7.0 中删除。此外,当前的 PHP 版本是 PHP 8。所以,请做好准备,许多网络托管可能会删除旧的 PHP 版本,继续前进。
推荐阅读
- kubernetes - 对 Helm 依赖项使用 values-production.yaml 而不是 values.yaml
- r - 通过函数保存数据集,但之后没有加载
- c# - C# TcpListener 是否仅限于局域网或我的代码有问题?
- python - 如何找到数组中所有整数之间的差异
- java - 如何在swagger codegen中处理多种响应/返回类型(204为空,400为非空等)?
- php - 给定条件使用子类的实例而不是父类
- git - 在 shell 脚本中调用 git checkout 时如何捕获“致命的 index.lock:文件存在”错误?
- r - kableExtra 不能用 full_width 和 XeLaTeX 编译
- python - 用于 2 个数据集的 Sci-kit 学习机器学习脚本
- angular - ng-select 服务器端加载图标位置不正确