我是PHP的新手,我正在尝试建立一个网站来显示存储在MySQL数据库中的电视节目的信息。我目前有一个网页会创建一个表格来显示数据库中的信息,但是我希望每一行都链接到一个动态填充的页面,每个节目都有更多的信息(也来自数据库) )。我的问题是如何让网站知道哪个链接被点击,然后将其保存为变量,以便可以在新的网站上调用它来填充正确的信息?
我目前正在使用它来填充页面。
<!--Populate page with data from SQL-->
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "media_server";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT show_title, show_desc, thumbnail_path FROM tv_shows WHERE status = 'Y'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table><tr><th></th><th></th></tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo "
<tr>
<td>
<img src='../images/thumbnails/tv/".$row["thumbnail_path"]."'>
</td>
<td class='td_title'>
<a href='#' onclick='show_var_set();'>".$row["show_title"]."</a>
</td>
<td class='td_desc'>".$row["show_desc"]."</td>
</tr>";
}
echo "</table>";
} else {
echo "Error - 0 results were returned my the database. Please try again.";
}
$conn->close();
?>
答案 0 :(得分:0)
有很多方法可以将值从一个页面传递到另一个页面,但其中一种方法是使用会话变量:
//Include this at the top of your php scripts that use session variables
session_start();
$_SESSION['your_variable_name_here'] = value_you_want_to_store;
然后在您要访问此页面的页面上使用:
$someVariable = $_SESSION['your_variable_name_here'];
答案 1 :(得分:0)
更改SQL以返回show_id
,
$sql = "SELECT show_id, show_title, show_desc, thumbnail_path FROM tv_shows WHERE status = 'Y'";
并将其用作show_var_set()
函数的参数。
<a href='#' onclick='show_var_set(".$row["show_id"].");'>".$row["show_title"]."</a>
show_var_set()
函数可以使用该参数从数据库中获取该节目的详细信息。
答案 2 :(得分:0)
一种选择是将您的href链接更改为指向此页面并传递您可以检索的GET变量。此方法的额外好处是您可以为特定节目添加书签并返回该页面,因为书签将包含该GET变量。
因此,您可以将链接更改为以下内容:
echo '<a href="thispage.php?show=', $row['show_title'], '">', $row['show_title'],'</a>';
然后你通过测试检索该变量,然后读取GET变量并执行db查询以使用该show的数据填充页面。
以下是您测试和检索该变量的方法:
if (isset($_GET['show']))
{
$show = $_GET['show'];
// Perform database lookup using $show
}
请记住从不将用户输入直接放入查询中,但使用预准备语句并绑定用户数据以避免SQL注入的风险。