首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我用Moodle创建PHP课程时,我应该如何处理数据库?

当我用Moodle创建PHP课程时,我应该如何处理数据库?
EN

Stack Overflow用户
提问于 2012-03-26 18:56:18
回答 1查看 1.7K关注 0票数 0

我已经检查了课程文件夹中的lib.php,但我不知道它在做什么,所以我将在这里询问。

我试图通过连接Moodle数据库来创建一个使用PHP和MySQL代码的课程,而不是使用Moodle API。

到目前为止,我已经编写了一个方法来创建课程,方法是将值插入到mdl_course表中,但课程主页中没有显示任何内容。它在数据库中,它是可注册的,它也是可见的,但它不显示。

我知道创建新课程时course_sections和course_category会受到影响,但是如何计算每个字段的值?

什么是mdl_course中的modinfo?我该如何计算?

如何在mdl_course中计算排序顺序?现在我正在查找课程将要放置的类别,然后找到该类别中的所有排序顺序,然后将其递增1作为我的新sortOrder值。我不确定这是不是正确的。

现在,这是我创建课程的方法,显然它还远未完成:

代码语言:javascript
运行
复制
public function createCourse()
{
    //find category
    //calculate sortorder i.e. search in mdl course for all course with category. select sortorder MAX then ++
    require "/mysqli_connect.php";
    $t = time();
    $insert_q = "INSERT INTO mdl_course
    (category, fullname, shortname, summary, startdate, maxbytes, 
    timecreated, newsitems, numsections, expirythreshold) 
    VALUES (30, 'Fullname', 'shortname', 'This is the summary', '$t', 268435456, '$t', 5, 10, 864000)";

    $insert_r = mysqli_query($mysqli, $insert_q);
    $insert_n = mysqli_affected_rows($mysqli);
    //var_dump($insert_n);
    if($insert_n == 1)
    {
        return true; //insert successful
    }
    else
    {
        return false;
    }       
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-26 19:39:50

根据我的经验,Moodle不是最简单也不是最透明的系统,可以移植你自己的代码。单个实体具有许多不同的表项。例如,课程将出现在mdl_lessons、mdl_course_modules、mdl_grade items等中。我建议尽可能多地使用Moodle自己的API。如果您不能做到这一点,您可以尝试通过标准接口添加一个课程,然后检查您的SQL日志以查看它生成了哪些表项,从而对其进行反向工程。

关于modinfo令人困惑的混乱,this post on the moodle forums说它是自动生成的。This post解释说,一旦课程的课程和活动都准备就绪,您就可以调用rebuild_course_cache($courseid)来重新填充modinfo。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9870846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档