如何有效地为许多产品提供 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”。我对如何制作 onclick 有点困惑加载 pageContent.php 并拉出特定于产品的行,它会填充上面您呼应名称、制造商、价格的区域。把头撞在桌子上!谢谢 啊,所以您使用的是 javascript 异步加载请求(或更广为人知的 AJAX)?如果是这种情况,那将是与您在这里的问题完全不同的问题。 是的,那是可能的,我只说 onclick,因为在我看来,当用户单击其中包含 img 标签的 href 时,它会加载产品页面,然后从数据中提取数据并输入到我想要的区域,其他 100 种产品也是如此,但它们是信息,并且仅对产品页面使用 1 个 html 模板。那么它是一个复杂的 javascript 可以运行它,还是 javascript 加 php?就像我之前说过的,我认为,我只是在产品页面上成功地将数据直接用 PDO 拉到页面上。感谢您的回复。 我可以更新您的问题以反映这些新信息吗?这样我就可以相应地回答了。 好的,谢谢

以上是关于如何有效地为许多产品提供 1 个 html 布局页面,这些产品将调用 mysql 数据库获取产品信息并插入我指定的位置?的主要内容,如果未能解决你的问题,请参考以下文章

前端拿到UI设计的图 如何开始布局设计

在发生自调整大小之前,如何准确地为 UICollectionViewLayout 提供矩形中的元素?

有条件地为响应式设计加载图像

如何有效地为 Java 中的单链表节点实现 hashCode()?

我如何始终保持我的 html 元素粘在父元素的底部,我正在使用溢出:隐藏并隐式地为父元素提供高度?

如何有效地为 sql 中的数据类型分配大小?