我已经在网上搜索了关于这个简单任务的教程,但无济于事。所以我转向你们有用的同志们。这就是我需要做的事情:
我有一个带有Events表的MySQL数据库。我需要创建一个包含事件标题列表的PHP网页,每个标题必须是指向事件完整详细信息的链接。但我想避免为每个事件创建静态页面,主要是因为我不希望数据输入志愿者必须创建这些新页面。 (是的,我意识到静态页面对SEO更友好,但为了提高效率,我需要放弃这种情况。)
我看过这样的PHP url语法:
pagename.php?id=20
但我不知道如何让它发挥作用。
任何和所有帮助都非常感激。
谢谢!
硖
答案 0 :(得分:6)
这是基本的php。您只需在编写页眉之前向DB查询事件详细信息,然后相应地编写html。
我要问你的第一件事是你知道如何连接数据库。从那里,您根据$ _GET ['id']值进行查询,并使用结果填充您的html。
不要太粗鲁,但问题本身表明你是PHP的新手,对吧?因此,为了提供有效的解决方案,我们可能想知道您到底有多远。
此外,您可以使用apache的mod_rewrite重写您的动态网址,使其看起来像静态网址。如果你对“漂亮”的网址感兴趣,这可能是一个新手级别的事情。
修改后的答案:
在循环中,您将使用查询结果中的id(假设您的主键是id)...
while($field = mysql_fetch_array($result)) {
echo "<p class='date'>";
echo $field['month']." ".$field['day'].", ".$field['year'];
echo "</p>";
echo "<h3>";
echo '<a href="/somepage.php?id='.$field['id'].'">'.$field['event_name'].'</a>';
echo "</h3>";
}
然后在somepage.php上,您将使用get var id来提取相关信息...
$result = mysql_query("SELECT * FROM `calendar` WHERE `id` = '".mysql_real_escape_string($_GET['id'])."');
不要忘记查看mysql_real_escape_string()以清除条目。
答案 1 :(得分:3)
使用$_GET
变量时要特别小心,因为恶意用户很容易改变这些变量。
以下示例,您可以:
$foo = (int)$_GET['id'];
因此我们强制将变量转换为整数,以便我们确定数据的性质,这通常用于避免SQL injections。
答案 2 :(得分:3)
假设你有php文件 test.php
<?php
$conn = mysql_connect("localhost", "root", "");
mysql_select_db("db", $conn);
$id = $_GET['id'];
$sql = "select * from table where id = $id";
$result = mysql_query($sql, $conn);
if ($result){
$row = mysql_fetch_row($result);
$title = $row[0];
$content = $row[1];
}
?>
<html>
<head>
<title><?php echo $title ?></title>
</head>
<body>
<h1><?php echo $title ?></h1>
<p><?php echo $content ?></p>
</body>
</html>
动态页面就是这样......
答案 3 :(得分:2)
以下是从名为calendar的表中提取11月事件列表的相关代码,每个事件都有一个指向名为event.php的页面的链接,并且事件的id字段附加到url的结尾:< / p>
$result = mysql_query("SELECT * FROM calendar WHERE sort_month='11'");
while($row = mysql_fetch_array($result))
{echo
"<a href='event.php?id=".$row['id']."'>".$row['event_name']."</a>"
;}
这是event.php页面上的相关代码。请注意括号中的行号取决于表中的行号,记住第一行(字段)在括号内的数字为0:
$id = $_GET['id'];
$sql = "select * from calendar where id = $id";
$result = mysql_query($sql, $con);
if ($result){
$row = mysql_fetch_row($result);
$title = $row[12];
$content = $row[7];
}
?>
<html>
<head>
<title><?php echo $title ?></title>
</head>
<body>
<h1><?php echo $title ?></h1>
<p><?php echo $content ?></p>
</body>
</html>
这对我有用,感谢上述人士的帮助。
答案 4 :(得分:0)
$foo=$_GET['id'];
您的示例中的 $foo
将= 20