Javascript 当你点击不同的链接时,有没有办法改变页面上的某些元素?
我正试图为一家商店建立一个网站。在products页面上,我显示了从数据库加载的所有产品的一般信息。我想创建一个单独的页面,根据用户单击的产品显示不同的文本和图像(我希望用户在单击任何产品时转到此页面)。这是可能的,还是每次添加产品时都需要编写一个新页面Javascript 当你点击不同的链接时,有没有办法改变页面上的某些元素?,javascript,php,html,css,Javascript,Php,Html,Css,我正试图为一家商店建立一个网站。在products页面上,我显示了从数据库加载的所有产品的一般信息。我想创建一个单独的页面,根据用户单击的产品显示不同的文本和图像(我希望用户在单击任何产品时转到此页面)。这是可能的,还是每次添加产品时都需要编写一个新页面 <?php $sql = "SELECT * FROM products;"; $result = mysqli_query($conn, $sql);
<?php
$sql = "SELECT * FROM products;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
};
if ($resultCheck > 0) {
while($row = mysqli_fetch_assoc($result)){
echo "<div class='productCard'>";
echo '<img src="data:image/jpeg;base64,'.base64_encode($row['image']).'"/>';
echo "<h1>" .$row["name"]. "</h1>
<h1>" .$row["stock"]. "</h1>
</div>";
}
} else {
echo "0 results";
}
?>
欢迎来到stackoverflow!您可以使用
a
链接将用户重定向到带有id参数的产品详细信息
您可以通过$\u GET
:
例如,这是您的代码“Products.php”:
在product.php文件中:
<?php
$id = $_GET["id"];
... and then just use this variable $id for select product
?>
小心SQL注入:
我建议使用mysqli\u real\u escape\u string()函数或其他
函数和使用预先准备好的语句
这不仅是可能的,而且是非常常见的功能,许多PHP教程都介绍了这一点。您可能已经使用了一个或多个教程,这些教程没有介绍此功能,但我们始终鼓励您探索更多教程和示例 在较高的层次上,基本上您要做的是让每个链接包含您想要显示的记录的标识符。例如,
echo
的一部分可能包括以下内容:
echo '<a href="product.php?id=' . $row['id'] . '">Click here</a>';
(其他数组用于请求中提交的其他类型的数据。URL查询字符串参数是$\u GET
的一部分)
然后在数据库查询中使用该值。查询本身可能是这样的(借用了一个关于SQL注入的问题的优秀答案,这对于初学者来说绝对值得一读):
不同的数据库技术以不同的方式将值绑定到查询。但是作为初学者,现在是时候养成绑定值而不是串接字符串的习惯了。这就是前面提到的关于SQL注入的问题/答案成为非常有用的知识的地方
在该循环中(即使只有一条记录,但您可能希望进行一些检查以确保只有一条或至少一条记录,并相应地作出响应),您可以显示有关该记录的数据,类似于您在主页上对多条记录所做的操作。您可以使用查询字符串变量进行此操作(也称为GET variables)。例如,在链接中,您可以向链接添加,即
?id=5
,这样它就变成了类似于mysite.com/products?id=5
。然后您可以使用$\u GET['id']
来获取用户在URL中拥有的任何id
echo '<a href="product.php?id=' . $row['id'] . '">Click here</a>';
<a href="product.php?id=123">Click here</a>
$id = $_GET['id'];
$stmt = $conn->prepare('SELECT * FROM products WHERE id=?');
$stmt->bind_param('i', $id); // 'i' specifies the variable type => 'integer'
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// Do something with $row
}