PHP CRUD 应用程序:动态提供数组索引

PHP CRUD application: supply array indexes dynamically

我正在使用 mysqli 创建一个 Employees CRUD 应用程序。

我有一个员工 HTML table 显示数据库 table 中名为 "users" 的用户,如下所示(模板文件是 users.php) :

我想单击第一个用户(那个眼睛图标)右侧的查看用户 link 以显示他的个人资料。我应该使用什么方法,考虑到我有一个包含所有用户数据的 $get_users 数组,以便:

<pre><?php print_r ($get_users); ?></pre>

显示

Array
(
  [0] => Array
    (
        [id] => 1
        [first_name] => Alex
        [last_name] => Smith
        [email] => alex.smith@gmail.com
        [telefon] => 0743127315
        [oras] => London
        [adresa] => 5th Shaftesbury Ave.
    )

[1] => Array
    (
        [id] => 5
        [first_name] => Doe
        [last_name] => John
        [email] => jdoe80@yahoo.com
        [telefon] => 0743127315
        [oras] => London
        [adresa] => 5th King's Road
    )

)

当然还有<?php print ($get_users[0]['first_name']); ?>

显示第一个用户的名字 - Alex。但是我不能为数据库中的每个用户硬编码一个 view_user.php 页面。

我的 view_user.php 文件(模板)包含这个 HTML table:

<table id="single_user" class="table table-striped table-bordered">
    <tbody>
        <tr>
        <td>First name</td>
            <td><?php echo $get_users[0]['first_name']; ?></td>
        </tr>
        <tr>
            <td>Last name</td>
            <td><?php echo $get_users[0]['last_name']; ?></td>
        </tr>
        <tr>
            <td>Email</td>
            <td><a href="mailto:<?php echo $get_users[0]['email']; ?>"><?php echo $get_users[0]['email']; ?></a></td>
        </tr>
        <tr>
            <td>Phone</td>
            <td><?php echo $get_users[0]['telefon']; ?></td>
        </tr>   
        <tr>
            <td>City</td>
            <td><?php echo $get_users[0]['oras']; ?></td>
        </tr>   
        <tr>
            <td>Address</td>
            <td><?php echo $get_users[0]['adresa']; ?></td>
        </tr>   
    </tbody>
</table>

我需要动态生成的 $get_users 数组索引:$get_users[index] 其中索引取值从 0 到用户总数减一。

那么最快​​最安全的方法是什么? (AJAX?)

您可以:

/view_user.php?id=3

其中:

$user_id = $_GET['id'];

$sql = "SELECT * FROM `users` WHERE `user_id` = " . (int)$user_id;

编辑:

嗯,你应该能够在你的函数中使用 $_GET['id'] 就好了。

$sql = "SELECT * FROM `users` WHERE `user_id` = " . (int)$_GET['id'];

但请记住,出于多种原因,这种方法是非常错误的。

您应该开始阅读并使用像 Laravel 这样的框架,它提供了使您的生活更轻松所需的所有必要工具,并且能够专注于您的业务逻辑,而不是重新发明轮子。

取决于你想要什么,如果你想让它动态加载或在另一个页面中加载。如果你想在另一个页面中,你可以使用类似于第一个答案的东西:

  • 在您的查看按钮上添加一个link:/user.php?id=#(自动填写的用户ID)
  • 在您的 functions.php 中创建一个函数,只让一个用户 get_user($id) 在其中写入您的 SQL 和 return 所有数据。
  • 调用 get_users 函数并将其设置为一个数组以包含您的所有信息 $user = get_user($_GET["id"]) 并在您需要的任何地方使用它。

如果您想要 ajax,您可以在灯箱中加载此内容或将 div 添加到您的内容。我通常使用 jquery-confirm.js 来加载灯箱中的内容。您可以将其设置为具有动态内容和 return 您的 user.php 数据。您可以使用与 non-ajax 版本中相同的文件。对于标题,如果您想保持简单,则需要另一个文件。 简短示例:

$.dialog({
    title: /user-title.php?id=#,
    content: /user.php?id=#,
});

这里有关于插件的更多信息:https://craftpip.github.io/jquery-confirm/