2

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

我的意思是,我ID, photo, Firstname, Lastname, Age, StreetAdd, PhoneNum, EmailAdd的桌子上有列。我photo, Firstname, Lastname在第一页上只显示行。

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

这是显示三个列的 PHP 页面。我可以在新页面上显示其余的列,但它会显示行中的所有信息。我想显示每个用户的个人信息,而不是整个列表。一个可能的例子是 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);
?>
4

3 回答 3

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']获取主键并使用它从数据库中检索用户生物。

请确保您对传递给 sql 数据库的参数进行转义。不要直接使用这些变量!查看 Nullpointer 的答案


更新1:

当您获得一行的主键时,只需调用 a SELECT *withLIMIT 1

$pkey = mysql_real_escape_string($_GET['id']);
$sql = "SELECT * FROM test where id='$pkey' LIMIT 1";
/* Run this sql */
于 2013-01-06T06:19:39.907 回答
1

显示每个用户的个人信息,您可以在查询中使用 where close ,例如

SELECT * FROM test WHERE user = bla

警告

您的代码容易受到sql 注入的影响,您需要全部转义getpost更好的方法是使用Prepared 语句

好读

  1. 如何防止 PHP 中的 SQL 注入?
  2. PDO 准备好的语句是否足以防止 SQL 注入?

笔记

  1. 整个ext/mysqlPHP 扩展提供了所有以 mysql_ 为前缀的函数,从 PHP v5.5.0 开始正式弃用,并将在未来删除。所以使用PDO或者MySQLi

好读

  1. 不推荐使用 mysql 扩展并将在将来删除:请改用 mysqli 或 PDO
  2. Pdo 初学者教程
于 2013-01-06T06:13:16.303 回答
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

?>

希望这可以帮助

于 2013-01-06T18:38:39.597 回答