如何为表中的每一行生成唯一的URL?

时间:2013-11-17 08:15:57

标签: php mysql

我还是PHP和MySQL的新手。我目前正在开发一个随机报价生成器网站。当用户第一次访问或刷新页面时,PHP代码从MySQL表中获取一个随机行并回显结果。

如果用户喜欢特定的报价,我希望他/她能够为报价所包含的页面添加书签。我认为这需要为生成的每个随机代码提供唯一的URL。我无法弄清楚如何使用我目前拥有的代码来完成这项工作,并希望得到任何人的帮助。

到目前为止这是我的表:

+----+-----------+-----------+
| id | quote     | source    |
+----+-----------+-----------+
|  1 | hello     | test1     |
|  2 | world     | test2     |
|  3 | random    | test3     |
+----+-----------+-----------+

到目前为止,这是我的代码:

<?php

require('connection.php');

// Last query result stored in sessions superglobal to avoid immediately repeating a random quote
session_start(); 

if (empty($_SESSION['lastresult'])) {
    $_SESSION['lastresult'] = null;
}

$query = "SELECT * FROM `test` WHERE `id` != '%s' ORDER BY RAND() LIMIT 1";
$query =  sprintf($query, mysql_real_escape_string($_SESSION['lastresult']));
$result = mysqli_query($dbc, $query) or die(mysql_error());

if (mysqli_num_rows($result) == 1) {
    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {

        $_SESSION['lastresult'] = $row['id'];
        echo '<p>' . $row['quote'] . '</p>' . '<p>' . $row['source'] . '</p>';
    } 
} else {
    echo '<p>Sorry, there was an error. Please try again by refreshing the page or clicking the query button.</p>';
}

?>   

任何其他代码建议也将不胜感激。

1 个答案:

答案 0 :(得分:0)

有三种方式让人想起。

如果采用引用ID的页面,类似于@DanGoodspeed的页面在他对您的问题的评论中建议,则所有要求您实施版本。

  1. 将您现有网页的链接添加到新的ID驱动页面,并带有标签'将此页面添加为书签以便返回'。不理想,但很简单。
  2. 在现有页面中添加一些JavaScript,以便在加载后更新URL以包含ID,从而使其看起来好像是另一个。有关详细信息,请参阅此答案Modify the URL without reloading the page
  3. 不使用您现在拥有的页面,而是生成一个新页面(使用您已编写的大部分内容),该页面返回一个位置重定向标题,其中包含一个随机ID的URL。