显示数据库中的数据并将其链接到新页面

时间:2013-01-06 06:01:06

标签: php mysql

我可以使用下面的代码显示我的表格中的内容,但正如您在代码中看到的那样,我将行链接到新页面,并且在该页面上我试图显示其余的行,我在同一张表中。

我的意思是,表格中有cols ID, photo, Firstname, Lastname, Age, StreetAdd, PhoneNum, EmailAdd。我在第一页上只显示行photo, Firstname, Lastname

所以我要做的是当用户点击我从数据库显示的名字时,他将被重定向到新页面并查看其余信息。我该怎么做?

这是显示三个列的PHP页面。我可以在新页面上显示其余的cols,但它会显示行中的所有信息。我想显示每个用户的个人信息,而不是整个列表。一个可能的例子是eBay。当您搜索项目时,在您单击图片或标题之前,您将看不到完整的描述。

<?php
  $con = mysql_connect("localhost","root","");
  if (!$con) {
    die('Could not connect: ' . mysql_error());
  }
  mysql_select_db("simple_login", $con);
  $result = mysql_query("SELECT * FROM test ");
  echo "<table align='center' bgcolor='#F9F0F0' border='0' cellspacing='0'>
    <tr>
      <th><font color='red'>Firstname</font></th>
    </tr>";
  while($row = mysql_fetch_array($result)) {
    echo "<tr>";
    echo "<td><a href='send.php'><img src='".$row['photo']."' \" width=\"150px\" height=\"150px\" /></a><br><br><br>";
    echo "<a href='send.php'><td align='center' style='vertical-align:text-top' width='200px'>" . $row['Firstname'] . "</td>";
    echo "<td align='center' style='vertical-align:text-top' width='200px'>" . $row['Lastname'] . "</td>";
    echo "</tr>";
  }
  echo "</table>";
  mysql_close($con);
?>

3 个答案:

答案 0 :(得分:3)

您已在文本级元素a中放置了块级元素td,其中显示了第一个名称的单元格。你也没有在那里关闭a标签。这是正确的形式。

echo "<td align='center' style='vertical-align:text-top' width='200px'>";
echo "<a href='send.php'>" . $row['Firstname'] . "</a></td>";

要在send.php上获取相同的用户生物,您需要传递此行的主键。例如,如果主键为id,则在查询字符串中传递send.php

echo "<a href='send.php?id=".$row['id']."'>" . $row['Firstname'] . "</a></td>";

现在在send.php使用$_GET['id']获取主键并使用它从db检索用户bio。

但是确保您转义传递给sql数据库的参数。不要直接使用这些变量!请参阅Nullpointer的answer


更新1:

当您获得行的主键时,只需使用 SELECT *

调用LIMIT 1
$pkey = mysql_real_escape_string($_GET['id']);
$sql = "SELECT * FROM test where id='$pkey' LIMIT 1";
/* Run this sql */

答案 1 :(得分:1)

显示您可以在查询结束时使用的每个用户的个人信息,例如

SELECT * FROM test WHERE user = bla

警告

您的代码容易受到sql injection攻击,您需要撤消所有getpost,更好的方法是使用Prepared statement

好读

  1. How to prevent SQL injection in PHP?
  2. Are PDO prepared statements sufficient to prevent SQL injection?

  3. 注意

    1. 整个 ext/mysql PHP扩展程序(提供名为mysql_的所有函数)为officially deprecated as of PHP v5.5.0,将来会被删除。因此,请使用PDOMySQLi
    2. 好读

      1. The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead
      2. Pdo Tutorial For Beginners

答案 2 :(得分:0)

这应该是你的第一页

<?php
  $con = mysql_connect("localhost","root","");
  if (!$con) {
    die('Could not connect: ' . mysql_error());
  }
  mysql_select_db("simple_login", $con);
  $result = mysql_query("SELECT * FROM test ");
  echo "<table align='center' bgcolor='#F9F0F0' border='0' cellspacing='0'>
    <tr>
      <th><font color='red'>Firstname</font></th>
    </tr>";
  while($row = mysql_fetch_array($result)) {
    echo "<tr>";
    echo "<td><a href='send.php'><img src='".$row['photo']."' \" width=\"150px\" height=\"150px\" /></a><br><br><br>";
    echo "<a href='send.php?".$row['id']."'><td align='center' style='vertical-align:text-top' width='200px'>" . $row['Firstname'] . "</td>";
    echo "<td align='center' style='vertical-align:text-top' width='200px'>" . $row['Lastname'] . "</td>";
    echo "</tr>";
  }
  echo "</table>";
  mysql_close($con);
?>

现在send.php应该是

<?php
$con = mysql_connect("localhost","root","");
      if (!$con) {
        die('Could not connect: ' . mysql_error());
      }
      mysql_select_db("simple_login", $con);
      $sql = "SELECT * FROM test where id = " . $_Get['id'] ;
      $result = mysql_query($sql);

//then display the result here

?>

希望这会有所帮助