如何有效地为许多产品提供 1 个 html 布局页面,这些产品将调用 mysql 数据库获取产品信息并插入我指定的位置?
Posted
技术标签:
【中文标题】如何有效地为许多产品提供 1 个 html 布局页面,这些产品将调用 mysql 数据库获取产品信息并插入我指定的位置?【英文标题】:How to efficiently have 1 html layout page for many products that'll call mysql database for product info and insert where I designate it? 【发布时间】:2021-11-13 06:09:32 【问题描述】:好吧,最终我将在 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
?>
编者注:我根据下面我的回答中的主题编辑了问题以反映他想要什么。
【问题讨论】:
从phpdelusions.net/mysqli开始的最佳位置 【参考方案1】:使用自动增量选项(phpmyadmin 中的 A_I 复选框)为您的 mysql 数据库中的产品添加一个唯一 ID。然后,您可以将该 id 传递到产品页面的链接中 ```href=“individualProduct.php?id=”,同时在所有产品页面上呈现所有产品。
然后在individualProduct.php中你可以得到那个id并检索数据
$sql = SELECT * FROM Parts WHERE id =?”;
$stmt = mysqli_prepare($sql);
$stmt->bind_param($_GET[“id”]);
$stmt->execute();
$result = $stmt->get_result();
// Do stuff with $result as it is the individual product corresponding to that id
【讨论】:
对不起...更正“SELECT * FROM AR15Parts”应该只是“零件”。谢谢 好的,所以我无法理解的是如何将“id”传递到链接中并在另一个页面上检索单个产品信息的 pageContent.php。我实际上已经对我的 sql 数据库进行了编码,因此产品有一个 PartsID 列,其 'id' 为 1 和 2,并且是主键,应该这样工作吗?【参考方案2】:在这种情况下,您需要传入一个唯一标识符,即产品 ID,并创建一个查询以通过产品 ID 从数据库中获取产品信息
$product-id= $_GET['id'];
$strSQL = "SELECT * FROM AR15Parts WHERE id='$product-id'";
$rs = mysql_query($strSQL);
if (!$rs)
echo 'Could not run query: ' . mysql_error();
exit;
$row = mysql_fetch_assoc($rs);
//display your data
if($row)
echo $row['field'];
【讨论】:
【参考方案3】:理想情况下,您需要 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 mechanism 进行查询。这是因为mysql_* function has been deprecated 使用时间过长,现在它已从 PHP 7.0 中删除。此外,当前的 PHP 版本是 PHP 8。所以,请做好准备,很多虚拟主机可能会删除旧的 PHP 版本,继续前进。
【讨论】:
好的,所以我试图按照您的建议进行操作。我将连接更改为 PDO 类型,花了一些时间让页面像以前一样使用新的 PDO 代码返回。所以我有一个 content.php 文件,它是您所说的 100 种产品的列表,我们称之为“index.php”。我对如何制作以上是关于如何有效地为许多产品提供 1 个 html 布局页面,这些产品将调用 mysql 数据库获取产品信息并插入我指定的位置?的主要内容,如果未能解决你的问题,请参考以下文章
在发生自调整大小之前,如何准确地为 UICollectionViewLayout 提供矩形中的元素?
如何有效地为 Java 中的单链表节点实现 hashCode()?