如何使用read more.php?id = 1来显示另一个页面php mysql的具体信息

时间:2014-02-18 21:15:12

标签: php mysql

很抱歉,如果我的标题很糟糕,但我到处都看,我只是不知道该怎么做。

行。我想要做的是显示来自表格行的特定id的信息。

第一页

employees.php

<?php

require 'header.php';

require 'connect.php';

$sql1 = mysql_query("SELECT * FROM employees ORDER BY id ASC");
while($runrows = mysql_fetch_array($sql1)){

    $employename = $runrows["employename"];
    $minidescription = $runrows["minidescription"];
    $bigdescription = $runrows["bigdescription"];

echo "

    <!-- Employe Profile Start -->
        <div class='ProfileWrap'>
            <section class='Profile'>
                <div class='HeadShot'>
                    <div class='Separator'></div>
                    <img width='90' height='136' alt='Employe Headshot' class='EmployeImage' src=img/headshots/".$runrows['images'] ." />
                    <div class='EmployeInfo'>
                        <legend class='EmployeName'>
                            <b>
                                Employe Name: $employename
                            </b>
                        </legend>
                        <div class='EmployeDes'>
                            <p>
                                Employe Descript $minidescription...
                            </p>
                        </div>
                        <a href='readmore.php?id=" .$id = $runrows["id"]. "' id='demo' alt='Read More'>
                            <div class='ReadMore'>
                                <b>
                                    Read More
                                </b>
                            </div>
                        </a>
                    </div>
                </div>
            </section>
        </div>
    <!-- employe Profile End -->

";

} // close while loop
?>
<?php require 'footer.php'; ?>

第二页

employe.php

<?php
    require 'header.php';

    require 'connect.php';

echo "<a href='index.php'>Back</a>";

    $sql2 = mysql_query("SELECT * FROM employees WHERE id=$id");
    while($runrows = mysql_fetch_array($sql2)){

    $id = $runrows["id"];
    $employename = $runrows["employename"];
    $minidescription = $runrows["minidescription"];
    $bigdescription = $runrows["bigdescription"];

    echo "
        <legend class='EmployeName'>
        <b>
            Employe Name: $employename
        </b>
        </legend>
        <div class='EmployeDes'>
        <p>
            Employe Description: $bigdescription...
        </p>
        </div>
    ";
    };

    require 'footer.php';
?>

然后点击

[阅读更多]

然后它将转到另一个名为readmore.php的页面

“点击”[阅读更多] - &gt; readmore.php?id = 14 - &gt;显示来自数据库中该ID的特定信息。

username

minidescription

->

click [Read More]

then it would show up like readmore.php?id=14 in the small address bar at the
bottom left

->

new page

->

largedescription

我希望能够点击具有更多阅读按钮的网站中的项目,并将其带到另一个页面,其中显示该特定ID的描述信息

是的,我知道我是一个完整的新手,但我还在学习,这是我想要完成的一个蹩脚的例子,但我希望你能理解我正在努力做的事情。

抱歉,如果这已经存在,但我到处寻找,找不到我想要的东西。如果有人有分享的链接可以做我所问的问题,那么这个问题就可以删除。

提前致谢!希望有人能帮助我解决这个问题。

2 个答案:

答案 0 :(得分:1)

首先,请注意@Matthew Johnson关于使用Mysqli或PDO的答案。不过,这里有一些代码细节。生成页面链接时,您需要:

<a href='readmore.php?id=" . $runrows["id"] . "' id='demo' alt='Read More'>

使用$ id = $ runrows [“id”]不会将值放入url,它只是声明$ id变量的值。

然后在readmore.php文件中,可以使用$ _GET数组从URL捕获id:

if (isset($_GET['id'])) {
    $id = $_GET['id'];
}

答案 1 :(得分:0)

不推荐使用mysql_ *函数,不应再使用它们。应使用Mysqli或PDO以及准备好的语句。您拥有的代码容易受到SQL注入攻击。您尝试做的简化版本看起来像这样:

链接:

//this gets all the name and mini, loops through and displays....
$stmt = $mysqli->prepare("SELECT id, employename, minidescription FROM employees"); 
$stmt->execute();  
$stmt->bind_result($id, $employeename, $minidescription); 
while($stmt->fetch()) {
    echo "<p><a href='readmore.php?id=$id'>$employeename</a>: $minidescription</p>";
}

阅读更多:

//make sure it's set, if so assign it...
$id = (isset($_GET['id']) ? $_GET['id'] : "";

//this gets the info using the id variable from the URL...
$stmt = $mysqli->prepare("SELECT employename, minidescription, bigdescription FROM employees WHERE id = ?");
$stmt->bind_param("i", $id); 
$stmt->execute();
$stmt->bind_result($employeename, $minidescription, $bigdescription); 
$stmt->fetch();

echo "$employeename: $bigdescription";

使用mysqli和prepared语句,如此处所示,可以保护您免受bobby tables和SQL注入攻击。您可以从manual了解有关mysqli的更多信息。这是一个tutorial,可以快速了解预处理语句的工作原理。

修改 上面的代码仍然需要数据库连接。未定义变量的警告表示尚未定义$mysqli变量。致命错误是由于prepare语句失败。要创建连接,它看起来类似于:

define("HOST", "Host URL"); 
define("USER", "dbUser"); 
define("PASSWORD", "password");
define("DATABASE", "databaseName"); 

$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);

这将替换connect.php中的代码。