【问题标题】:How to use names instead of id's in dynamic webpages如何在动态网页中使用名称而不是 id
【发布时间】:2016-01-06 05:19:45
【问题描述】:

我刚开始学习 php 和 mysql,我可能已经遥遥领先了。我想创建的东西是一个网页,人们可以在其中注册一个活动,到目前为止一切都很好,提交他们的名字、姓氏、年龄和电子邮件地址的表格正在工作,它实际上将信息发送到数据库.

接下来我要创建一个页面,我可以在其中显示所有提交的数据库记录(电子邮件地址除外)。这也有效,但我想玩弄动态网址。

当我访问我的页面http://www.example.com/ppl.php?id=1 时,我得到了显示的第一个数据库记录的信息,但我也想看看我是否可以让它使用名称而不是 ID,所以我尝试编辑我的代码并使用 @987654322 @ 这只会返回一个错误,但是数据库中有几个人叫 john 没有显示记录。

所以我想知道我想要的是否真的可行,以及如何让它与我当前的代码一起使用。

<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "event";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
    $id = $_GET['id'];
    $firstname = 'firstname';
    $lastname = 'lastname';
    $age = 'age';

$sql = "SELECT * FROM people WHERE id = $id";

$result = $conn->query($sql);

    echo "<table id='display' width='600' align='center'>";
    echo"<tr><td>&nbsp;Firstname</td> <td>&nbsp;Lastname</td> <td>&nbsp;Age</td>";

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {

        echo"<tr><td width='33%'>&nbsp;$row[$firstname]</td> <td width='33%'>&nbsp;$row[$lastname]</td> <td width='33%'>&nbsp;$row[$age] cm</td></tr>";


    }
} else {
    echo "0 results";

}
$conn->close();
?>

【问题讨论】:

  • 我没有看到任何代码在你 $_GET["name"] 并查询正确行的名称..?!

标签: php mysql dynamic webpage


【解决方案1】:

尝试更改查询:

$sql = "SELECT * FROM people WHERE id = $id";

收件人:

$name = $_GET['name'];
$sql = "SELECT * FROM people WHERE name LIKE '%$name%'";

然后为你找到的每一个 John 回显。

也可以考虑使用这样的 CSS。

<style>
    #display {
        width: 600px;
    }
    #display td {
        width: 33%;
    }
</style>

【讨论】:

  • 感谢科斯塔斯!这正是我需要的 =)
【解决方案2】:

您应该寻找两个单独的 $_GET 键:idname

<?php
if (isset($_GET['id'])) {

    // logic to get row by ID

} elseif (isset($_GET['name'])) {

    // logic to get row by Name

} else {

    // logic if no $_GET keys are set

}

我建议不要使用 name 字段进行查找,因为它不是数据库中的主键 - 它可能不是唯一的。根据存储的数据,您的查询可能会返回多个结果。

编辑:要回答在哪里将其放置在上面的代码示例中的问题,请考虑将其放置在声明查询字符串的位置。

<?php
if (isset($_GET['id'])) {
    $id = $_GET['id'];
    $sql = "SELECT * FROM people WHERE id = $id";
} elseif (isset($_GET['name'])) {
    $name = $_GET['name'];
    $sql = "SELECT * FROM people WHERE name = '$name'";
}

从那里您可以保持相同的查询执行逻辑。但正如我所说,我建议不要使用 name 字段作为键,因为它可能不是唯一的。

【讨论】:

  • 感谢您的评论!只需要弄清楚在我的代码中将这些行放在哪里,但肯定会使用这个 =)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
  • 2018-01-16
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多