PHP - 如何创建动态URL?

时间:2011-11-02 02:37:43

标签: php mysql url dynamic

我已经在网上搜索了关于这个简单任务的教程,但无济于事。所以我转向你们有用的同志们。这就是我需要做的事情:

我有一个带有Events表的MySQL数据库。我需要创建一个包含事件标题列表的PHP网页,每个标题必须是指向事件完整详细信息的链接。但我想避免为每个事件创建静态页面,主要是因为我不希望数据输入志愿者必须创建这些新页面。 (是的,我意识到静态页面对SEO更友好,但为了提高效率,我需要放弃这种情况。)

我看过这样的PHP url语法:

pagename.php?id=20

但我不知道如何让它发挥作用。

任何和所有帮助都非常感激。

谢谢!

5 个答案:

答案 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