在PHP中保存和加载活动日志的最佳方法是什么?

时间:2013-07-30 07:21:27

标签: php

在我开始之前,这是一个分配。我只是在帮助之后得到一些指导:)

我正在开发一个健身房会员网站,允许用户注册,登录和预订活动。

除了活动预订系统外,我还有一切工作,这就是我需要的指导。我有一个txt文件,其中包含每个活动名称,时间,总共可以参加的活动日志。我想在每个活动的最后添加一个谁正在参加。因此,允许用户预订活动,将活动用户名添加到活动中。

这正是我目前的activity.txt文件打印方式(除了最右边的“预订”按钮。

NumberOne       3       Wednesday 8am       (BOOK)
NumberTwo       7       Thursday 10am       (BOOK)
NumberThree     20      Monday 1pm          (BOOK)
NumberFour      15      Tuesday 5pm         (BOOK)

基本上,我需要指导的是“预订”按钮。按下“预订”按钮后,它会将用户预订到活动中。

这就是我的activity.txt文件目前的样子:

NumberOne,3,Wednesday 8am
NumberTwo,7,Thursday 10am
NumberThree,20,Monday 1pm
NumberFour,15,Tuesday 5pm

这是我目前正在打印活动的代码:

function bookActivity()
{
 $fileContentsArray = file("activity.txt");
    echo "<table>";
    foreach($fileContentsArray as $one_persons_data)
{
  echo '<tr>';
  $splitted = preg_split('/,/', $one_persons_data);
  foreach ($splitted as $one) 
  {
    echo "<td>$one</td>";
  }
  echo '</tr>';
}
echo "</table>";
}

如果需要,下面是我的users.txt文件。所有密码都保存在MD5

jiten:3fc0a7acf087f549ac2b266baf94b8b1
jb:3fc0a7acf087f549ac2b266baf94b8b1
test:bed128365216c019988915ed3add75fb
joeBlogg:bed128365216c019988915ed3add75fb
userX:bed128365216c019988915ed3add75fb
userY:bed128365216c019988915ed3add75fb

非常感谢所有帮助。非常困惑如何做到这一点。

2 个答案:

答案 0 :(得分:2)

这是一个粗略的指导原则(我不会详细说明因为它毕竟是家庭作业)我会保留你不允许使用任何不同于文本文件的假设,但可以创建/删除尽可能多的文本文件如你所愿。

  1. 解析活动txt文件,使用file(...)并设置正确的标志
  2. 构建一个数组,其中键是活动“ID”(numberOne,numberTwo等),value是包含活动详细信息的另一个数组。你可以在这里找到方便的explode()
  3. 为每个活动创建一个专用于它的文件(当然,如果它还不存在)。此文件将包含预订活动的注册用户的名称。我建议你在这个文件中每行写一个名字。
  4. 当有人按下“图书活动”按钮时,您必须执行以下步骤:

    • 检查所请求的活动文件是否存在。如果没有,请创建 一个空的。
    • 计算当前预订用户数并将其与允许的最大用户数进行比较
    • 如果不是,请将新用户添加到文件中,否则拒绝预订
  5. 要显示已预订用户的列表,只需从每个活动文件中读取文件内容即可。这次您可能会发现有用implode()

  6. 我希望这会帮助您找到正确的方法。最后一点,文本文件不是为了实现这一目的而设计的:小型数据库更易于使用,学习起来更有趣,对您的未来更有用。

    参考文献:

答案 1 :(得分:1)

一些事情:

  1. 这听起来不像是日志;它听起来像一个基于文件的数据库。
  2. 如果允许,请使用.csv文件(而不是.txt)并使用fgetcsv()对其进行解析。
  3. 由于它是您的数据库,您需要写入它。您可以使用fputcsv()
  4. (FWIW,您的.txt文件已经是csv了,你只是不这样对待它。)

    根据具体问题:点击“预订”只需要将课程名称传递给一个脚本,该脚本将当前用户添加到该课程(如果他们尚未注册)。您可以使用POST(HTML表单)或更简单地GET(链接和查询参数)传递课程名称。

    使用链接(GET)可能如下所示:

        $bookingUrl = "register.php?courseName=".urlencode($courseName);
    

    使用表单(POST)可能如下所示:

        <form action="register.php" method="POST">
            <input type="hidden" value="<?= $courseName; ?>" />
            <input type="submit" value="Book" />
        </form>
    

    另一个答案提到使用单独的文件来跟踪每门课程的注册情况,但我不认为这是必要的;只需使用一个。想一想你真正追踪的是什么很有帮助:

    1. 可用课程,“courses.txt”:课程名称,课程时间(得到它)
    2. 用户,“users.txt”:用户名,密码(已获取)
    3. 注册,“registrations.txt”:用户名,课程名称(没有得到)