【问题标题】:write php page for every record on the database为数据库上的每条记录编写php页面
【发布时间】:2014-04-13 04:47:59
【问题描述】:

我只是通过一个简单的员工项目来学习 PHP。我想学习如何为数据库中的每条记录制作一个 php 页面。我使用 while 循环在页面中创建指向每个员工页面的链接。但我不可能手动创建每个员工的页面。 我读了这个帖子:How do I create file on server?

我想运行一个循环函数,里面会有一个布局,每个细节应该在哪里,比如这里的名称,这里的 ID 等,并且该函数应该循环数据库中的每条记录,编写 php 文件。它应该保存为employeename.php,无论名称是什么。怎么可能?

【问题讨论】:

  • 你的循环 + file_put_contents。我不认为很多 PHP 文件是你想要的。您可以通过一些 URL 重写和一个接受员工姓名的 GET 变量的单个 PHP 文件来获得相同的结果。
  • 您的意思是从字面上为每个员工创建文件 .php 吗?因为只需传递 id 就可以创建一个显示特定员工信息的动态页面
  • 为什么要为每个用户保存文件?制作1个文件并使用参数?例如employeename.php?empid=1,如果你想保存你必须在你while循环中使用file_put_contents
  • 我想过这样做,但我认为它会加载缓慢,因为每点击一个链接都会有很多处理。我错了吗?如果是,我如何使用参数?
  • 会有轻微的性能影响,但在您的情况下,使用$_GET 变量仍然会更聪明。您在 URL 末尾输入的查询字符串中的任何变量都保存在 PHP 中的 $_GET 变量中。例如,page.php?foo=bar&abc=def 可以在 PHP 中使用$_GET['foo'](将返回bar)和$_GET['abc'](将返回def)访问。

标签: php loops


【解决方案1】:

您可能希望拥有一个可以读取$_GET 全局变量并根据脚本参数有条件地加载员工数据的PHP 脚本,而不是创建许多PHP 文件。这是一些伪代码:

   /* employee.php */
    switch($_GET['e']) {
        case 'john-smith':
            $info = getInfoFromDatabase('John Smith');
            break;
        case 'jane-doe':
            $info = getInfoFromDatabase('Jane Doe');
            break;
        /* ... etc ... */
    }

    displayInfo($info);

如您所见,当在employee.php?e=john-smith 访问时,这个虚构文件将加载 John Smith 的信息,在 employee.php?e=jane-doe 访问 Jane Doe 的信息等等。然后,您可以在数据库中拥有任意数量的员工记录,而无需更改任何内容。

【讨论】:

  • 谢谢你,但我没有每个员工的数据库,它们只是记录。那么我可以执行 select * from table where id=$_GET['E'] 之类的操作吗?然后,无论我想在哪里显示细节,都可以使用 fetch_array?
  • @SauravChaudhary 你有员工数据库吗?您的帖子指出“我想学习如何为数据库中的每条记录制作一个 php 页面。”
  • 好吧,getInfoFromDatabase 可以是任何东西,真的。它只是为了代表您获取员工信息的任何方法。
  • @SauravChaudhary 是的,你可以。不过,您需要清理输入以确保安全。示例查询(非安全)可能是 mysql_query("SELECT * FROM TblEmployees WHERE name = '".$_GET['e']."'");
  • @shrmn 我怎样才能使它安全。我在 w3schools(那是我学习 php 的地方)中读到的只是 htmlspecialchars 和其他东西的使用。是否需要这样做或其他任何事情?
【解决方案2】:

您可以使用单个 PHP 文件,使用 get 变量。 例如:

网址:example.com/employees/?employee=Jhon_Doe

代码:

$employee = $_GET["employee"];

最后,您使用该名称来识别您的特定员工记录,并显示他们的信息。

这样:

<h1><?php echo $employeeData["name"]?></h1>

请注意,以下建议是高级建议,对于初学者来说可能有些困难,我只是出于兴趣而添加它。 如果您想拥有干净的 url(没有 ? 标记),那么您使用单个文件并不明显,您可以使用重写规则:

将此添加到您的 .htacces 文件中,该文件位于服务器的根目录中。

重写引擎开启 RewriteRule ^/employees/([.]+)/$ /employees/?employee=$1

【讨论】:

  • 这很难理解.. 以下是我的疑惑: 1- 我在 filezilla 中看到了 htaccess 文件,但是如何打开它?在记事本中。 2-我可以更改重写字符串的哪一部分。按照我的意愿?
  • 打开你的.htaccess,右键点击打开。选择记事本。此外,我编写了重写字符串,以便任何字母或数字字符串都可以工作。
【解决方案3】:

我知道这个答案并没有直接解决您的问题,但是在阅读您的问题和随后的 cmets 时,我想给您一个我希望在我还是 PHP 初学者时得到的答案

通过框架学习PHP,如Yii Framework

从框架开始的专业人士

  1. 您将获得良好的结构并学习 PHP- 最佳实践
  2. 您会有很多示例 - 我发现从示例中学习很容易。

缺点

  1. 学习曲线要​​陡峭得多。我花了几天的时间才把事情做好,但最终还是值得的。

【讨论】:

  • 非常感谢,我一定会尝试的。现在为了通过示例学习,我使用 wamp。它不会干扰它的设置,对吧?我希望我能投票赞成你的答案,但即便如此也需要 15 个声望!
  • 不,Yii 框架只能构建在 WAMP(Windows、Apache、MySQL 和 PHP)中的“P”之上,也许 i 也需要 Apache。
猜你喜欢
  • 2011-04-30
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
相关资源
最近更新 更多