【问题标题】:php dynamically generate new web page from link [closed]php从链接动态生成新网页[关闭]
【发布时间】:2012-12-06 17:22:39
【问题描述】:

我在这里需要认真的帮助!我正在建设这个网站:每篇文章的摘要都是从数据库中生成的,标题为链接,但我希望如果有人点击链接,文章的页面会自动生成而不会匆忙;因为我无法为数据库中的每篇文章编写一个页面! 这是我生成摘要的代码:

<?php
        if(isset($_POST['search'])){
                $term = mysql_real_escape_string($_POST['keyword']);

                        $search = mysql_query("select * from article 
                        where match(title, body) against('$term') ");

                    if(mysql_num_rows($search)>0){  

                            echo "<div>"."Search Results For: "."<h3><u>".$term."</u></h3>"."</div>";

                            while($result = mysql_fetch_array($search)){

                                    echo "<div class=\"article\">".

                                    "<div class=\"title\"><a href=\"".$result['cat'].".php"."\">".$result['title']."</a></div>".
                                    "<div class=\"body\">".substr($result['body'], 0, 250)."</div>".
                                    "<div class=\"cat\"><a href=\"".$result['cat'].".php"."\">"."Category: ".$result['cat']."</a></div>".
                                    "<div class=\"author\">"."Author: ".$result['author']."</div>".
                                    "<div class=\"dateTime\">"."Date: ".$result['date']."</div>".

                                        "</div>";
                                }

                    }   


                    else{
                            echo "Sorry! The search for "."<h3>".$term."</h3>"." gave no results.";
                        }

                }

    ?>

【问题讨论】:

  • 提示:mypage.com/article.php?id=42 如果你不明白,你需要学习一些如何使用 PHP 的基础知识。这是网页功能的最基本用例之一。
  • 男人?我问的原因是我不知道 - 因为大声哭泣!我已经阅读了一些 urlencoding,但我似乎不明白。如果您愿意,请提供帮助。谢谢
  • 我是说大多数教程或 PHP 书籍都涵盖了这个基本用例。你应该阅读更多。在这里,我在 IBM 找到了一个不错的:ibm.com/developerworks/opensource/tutorials/os-php-blog/…

标签: php mysql dynamic


【解决方案1】:

假设每篇文章都有其 ID。更改链接以转到动态页面,并传递该 ID:

"<div class=\"title\"><a href=\"dynamic_page.php?id=$result[id]\">$result[title]</a></div>"

然后创建一个dynamic_page.php,接受该 ID 并按如下方式生成文章:

if (isset($_GET['id'])) {
    $id = mysql_real_escape_string($_GET['id']);
    $q = "SELECT
            *
        FROM
            `article`
        WHERE
            `id` = '$id'
        LIMIT 1;";
    $q = mysql_query($q);
    if (mysql_num_rows($q) > 0) {
        $result = mysql_fetch_assoc($q);
        echo "<div class=\"article\">".
                "<div class=\"title\">".$result['title']."</div>".
                "<div class=\"body\">".$result['body']."</div>".
                "<div class=\"cat\"><a href=\"".$result['cat'].".php"."\">"."Category: ".$result['cat']."</a></div>".
                "<div class=\"author\">"."Author: ".$result['author']."</div>".
                "<div class=\"dateTime\">"."Date: ".$result['date']."</div>".
            "</div>";
    }
    else {
        /* Article not found */
    }
}

请注意,这次$result['body'] 已完整显示。我还建议在您的情况下使用mysql_fetch_assoc()

代码是here

【讨论】:

  • Geo,最棒的!万岁!
  • 我的荣幸。很高兴它帮助了你。 :)
【解决方案2】:

如果链接类似于page.com/article.php?id=20,那么您的查询将如下所示:

$id = mysql_real_escape_string($_GET['id']);
mysql_query("SELECT * FROM articles WHERE id = '$id'");

然后就可以使用mysql_fetch_array来显示数据了。

【讨论】:

  • 请不要提倡容易发生 SQL 注入的技术。如果你想保持简单,至少指出这个缺陷。
  • 我提供了一个例子。我没有写完整的脚本。
  • 也可以使用PDO结合绑定变量的策略。