0

好的,所以我基本上已经生成了一个链接列表,这些链接使用表单向 PHP 发送变量,这将允许我从每个链接在下一页加载不同的内容。但是,每个链接似乎每次只从数据库中请求相同的数据。我使用的 PHP 版本是 5.3.14 版本。

这是第一页的php代码:

    <?php
        //DATABASE CONNECTION

        $News=mysql_query("SELECT * FROM Tutorial");
        while($row=mysql_fetch_array($News))
          {
            printf("<div class='NewsItem'><div class='title'>%s</div><form enctype='multipart/form-data' action='tutorial.php' method='post'><input type='hidden' name='tutorial' value='%s'/><input type='submit' name='submit' value='%s' id='hyperlink-style-button'/></div>", $row['Title'], $row['Title'], $row['Title']);
          }
        ?>

这是第二页的 php 代码,我希望表单允许我从每个链接显示不同的内容

<?php
    //DATABASE CONNECTION

    $Tutorial=$_POST['tutorial'];
    $query="SELECT * FROM Tutorial WHERE Title='$Tutorial'";
    $News=mysql_query($query);
    while($row=mysql_fetch_array($News))
      {
        printf("<div class='NewsItem'><div class='title'>%s</div>%s</div>", $row['Title'], $row['Tutorial']);
      }
     unset($_POST['tutorial']);
     unset($Tutorial);
    ?>

无论单击哪个链接,有关如何阻止它始终使用相同数据的任何想法?此外,如果您需要在此处查看实际代码,请访问第一页的链接:网站示例

4

1 回答 1

0

你错过了</form>。试试这个。

printf("<div class='NewsItem'><div class='title'>%s</div><form enctype='multipart/form-data' action='tutorial.php' method='post'><input type='hidden' name='tutorial' value='%s'/><input type='submit' name='submit' value='%s' id='hyperlink-style-button'/></form></div>", $row['Title'], $row['Title'], $row['Title'])

我看不到任何其他严重问题,请尝试以下操作。我也删除enctype='multipart/form-data'了在一个页面中拥有超过 1 个具有相同 id 的项目是无效的,因此更改id="hyperlink-style-button"class="hyperlink-style-button". 你必须相应地改变css。还将单引号替换为双引号,并添加htmlspecialchars了值以不破坏引号中的 html。

printf('<div class="NewsItem">
        <div class="title">%s</div>
        <form action="tutorial.php" method="post">
            <input type="hidden" name="tutorial" value="%s"/>
            <input type="submit" name="submit" value="%s" class="hyperlink-style-button"/>
        </form>
        </div>',htmlspecialchars($row['Title']),htmlspecialchars($row['Title']),htmlspecialchars($row['Title']));

也更换

$Tutorial=$_POST['tutorial'];

$Tutorial=mysql_real_escape_string($_POST['tutorial']);

注意:您的代码容易受到 SQL 注入攻击。请使用准备好的语句。

警告: mysql 扩展自 PHP 5.5.0 起已弃用,将来将被删除。相反,应使用MySQLiPDO_MySQL扩展名。请不要用于mysql_*开发新代码。

于 2013-08-31T13:12:14.450 回答