【发布时间】:2011-08-09 20:18:34
【问题描述】:
这个项目真的让我失眠了。我整天都在想它,我在晚上做梦,当我睡着的时候我会再想它。真的让我快哭了,哈哈。我不知道如何构建我的应用程序,也不知道如何执行我的想法。
首先,简单介绍一下。我学习交互式多媒体设计,我有一门课程叫做“项目”。顾名思义,我们必须考虑并创建一个项目,更具体地说是一个 Web 应用程序,使用 PHP、HTML/CSS、MySQL、AJAX ......无论我们想使用什么技术。由于我们也需要在一定程度上挑战自己,所以我决定为这个项目学习和使用 CodeIgniter 框架。我们必须向我们的教授展示我们能够取得的成就。 (不过,不会部署或使用此应用程序。它只是一个展示。)
我将创建一个网络应用程序,一个学生日历/计划器。他们可以跟踪他们的课程和家庭作业、空闲时间等。这是我想要实现的目标的屏幕截图:
我已经扔掉了滑块并通过对下一个/上一个按钮使用 AJAX 请求来解决此问题。可以看到最新版的网站here。
但是,我对我的代码不满意。我对我正在做的事情不满意。老实说,我很困惑。我完全糊涂了。
我读过关于 CodeIgniter 和 MVC 模型的博客、书籍、网站;我对 PHP 有相当的了解,并且很快就掌握了这个框架。但是还是很迷茫。
我首先编写了我的login form。都好。我有一个登录控制器,带有一个 index() 函数,一个 go() 函数,它专注于表单验证(使用 form_validation 库)和设置会话。它通过 AJAX 处理错误消息并通过我的登录模型与数据库通信。我想这很好地遵循了 MVC 模式。
不过,实际的“计划者”页面是完全不同的故事。我想知道的第一件事是我是否可以从视图中使用/调用函数。如果我遵循 MVC 指南,我会说我不能。所以我现在正在做的是将所有数据堆叠在我的控制器中的 $data 数组中,然后通过 jQuery AJAX 调用将这些数据直接回显到我的网页中。
这提出了我的第一个非常简单的问题。这个可以吗?我主要关心的一个问题当然是没有启用 javascript 的用户。该应用程序根本不起作用。我读过关于优雅降级和渐进增强的文章,但我只是不确定这个应用程序是否可以在没有 JS 的情况下使用。
我不确定(AJAX 方面)的另一件事是,我在 $(document).ready 上有两个不同的 AJAX 调用,然后当用户单击不同的元素时又像另外四个一样。 jQuery .html() 实际上并没有将内容放在我的 html 标签中(当我查看源代码时),这也让我感到困扰。
顶部的日期列表由名为init_days() 的函数生成。我使用 $(document).ready() AJAX 调用之一填充列表。它工作正常,但功能非常混乱。在控制器中,我创建了一个数组 $data 并将整个列表(带有 html 标签)回显到 $data['calendar'];然后我将其直接输出到<ul> 标签中:
// populate initial calendar
$.ajax(
{
type: "POST",
url: "/planner/init_days",
success: function(data){
$("#days_loader").hide();
$(".month").prepend(data['month_name'] + " " + current_year);
$("#day_list").html(data['calendar']).fadeIn();
}
});
但是,当使用下一个和上一个按钮时,我会调用相同的函数,只是使用data: 选项来提交新的月份(如果需要,还可以提交年份)。这对我来说似乎有点多余;将(几乎)相同的代码放置三遍。不知道如何解决这个问题。
我的主要问题是我现在陷入困境的部分。我有那些“糟糕,4 月 20 日”的表格标题,但在下面我需要获取我的实际事件。我不确定创建此功能的最佳方法是什么。我应该把它放在桌子上吗?但是,我如何将某些事件放在正确的位置?目前,我所实现的只是一个函数,它将某一天的所有事件输出到一个数组中,如下所示:
Array ( [0] => Array ( [id] => 1 [title] => Test Event [description] => Dit is een test event. [day_start] => 2011-04-20 [day_end] => 2011-04-20 [user_id] => 1 [time_start] => 11 [time_end] => 12 ) [1] => Array ( [id] => 2 [title] => Test Event 2 [description] => Dit is een tweede event. [day_start] => 2011-04-20 [day_end] => 2011-04-20 [user_id] => 1 [time_start] => 12 [time_end] => 13 ) )
我不确定桌子是否是最好的选择。困扰我的主要事情是我的工作时间和所有这些不同的时间在页面上都有自己的位置,如果这有意义的话。 (就像上午 9 点会在列的顶部,晚上 11 点会在底部,duh)。
如果有人想看看我的烂摊子,也许想再次让我走上正轨,我愿意提供一个指向我的源代码 (github) 的链接。也许我在正确的轨道上,仍然;我只是不这么觉得。我被困在显示事件部分,我只是觉得很可怕,因为我对我写的东西不满意(尽管此时大部分内容都有效)。
由于我现在在复活节假期,我无法再联系我的老师一周,所以我愿意提供 100-150 代表的赏金,以获得对这个巨大的咆哮/问题的良好、有用的回答.
如果有任何我应该阅读的关于设计模式、MVC、CodeIgniter 和 PHP 最佳实践的书籍、网站、博客,也请提供。非常感谢。
如果您到了这一点,感谢您一路阅读。我很感激。
编辑:我的源代码在这里:https://github.com/cabaret/Studieplanner
PS:这个问题是my previous question. 的后续问题,从那以后我已经向前迈出了很多步,但我仍然不开心并且非常困惑,主要是。感谢您的帮助。
【问题讨论】:
-
哇,有很多东西要吸收。你真的应该把它分解成单独的问题,一次问一个。这样你会得到更好的回应。
-
是的,我发帖后才意识到。我会给它几天,如果我没有得到任何回应,我会分解它们。我刚开始写,停不下来。 :(
标签: php codeigniter jquery