刚开始PHP和Joomla的开发,有一个很大的障碍我无法理解。
在后端构建评估工具。我有一个表("问题"),其中包含一组按部分(1-9)分组的问题。我有另一个表("学生"),它将通过获取所有注册用户来填充,显示一个用户和部分以及问题。然后老师会检查他们是否已经完成了这些问题。
问题表:
questionID sectionID question
1 1 Blah Blah 1
2 1 Blah blah 2
3 2 Bork bork
4 3 Bork de bork
学生表:
id userID questionID passed
1 85 1 1
2 85 2
3 85 3
4 85 4 1
5 85 5 1
6 92 1 1
7 92 2 1
8 92 3
9 92 4
10 92 5 1
计划使用INSERT…ON DUPLICATE KEY UPDATE
,因此如果"students"表中不存在值,它将只更新每一行,如果值确实存在,则会更新它们(以及时间戳和其他一些字段)。
我很确定我可以构建查询(欢迎建议!)但现在我不知道如何使用Joomla的MVC框架来实现这一点。看起来jTable不适合返回多行,这意味着使用JModelList。。。。但是,如何使用Joomla的功能来制作一个保存按钮(JToolbar?),该按钮将根据该行是否存在进行更新或插入?感觉我拥有所有的碎片,但不知道它们是如何组合在一起的。学生视图非常简单,一个控制器/model/view.html.php/tmpl-default.php。
参考文献:
http://www.sourcecodester.com/php/3863/updating-multiple-rows-mysql-using-php.html
http://forum.joomla.org/viewtopic.php?p=2263231
http://forum.joomla.org/viewtopic.php?p=2406831
http://forum.joomla.org/viewtopic.php?p=1745675
http://forum.joomla.org/viewtopic.php?p=1675454 (promising but dated)
http://forum.joomla.org/viewtopic.php?p=2506722
http://stackoverflow.com/questions/1305863/update-multiple-rows
http://docs.joomla.org/JModelList/1.6
http://docs.joomla.org/JModelList::getListQuery/1.6
http://docs.joomla.org/Using_the_JTable_class
http://docs.joomla.org/How_to_use_the_JTable_class
http://docs.joomla.org/JTable
http://docs.joomla.org/JTable/getobjectslist (promising...maybe?)
问题:
如何使用Joomla的MVC框架进行多行更新。。。假人。
一切都去哪儿了?
如果有不同的方法,我完全愿意接受建议。
谢谢!
编辑
要意识到这可能太宽泛了。这里有更多:
我已经阅读了Joomla MVC指南("这里有一些代码-PLOP")和Lynda(更好,但也在"这里有某些代码-POLP"类别中)。
我已经使用这些指南设置了一些简单的表视图/更新。其中包括制作一个返回所有值的视图和另一个提取一条记录(编辑或新建)的视图,修改XML文件以考虑不同的数据输入类型,等等
简而言之,我的困惑是这样的。使用这些指南,使用JTable的编辑视图似乎意味着显示一条记录。要显示多个记录,请使用JModelList。那么,您使用什么来显示多个记录并更新它们呢?或者你只是忽略了他们应该做的事情,只是在那里抛出一个循环更新?尝试以正确的方式学习和做这件事,这比预期的要难理解一些。
再次感谢!
以下是一些建议:
- 使用Joomla的数据库类来运行数据库查询、插入、更新等:
http://docs.joomla.org/How_to_use_the_database_classes_in_your_script
- 本教程将向您介绍Joomla如何实现MVC:
http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1
此外,当涉及到为Joomla MVC组件构建骨架结构时,这是非常方便的:
http://www.alphaplug.com/index.php/products/mvc-generator-online.html
希望这能有所帮助。
您可能应该使用JDatabase:
http://docs.joomla.org/JDatabase/1.6
如果要检索多行,请使用JDatabase::loadObjectList、JDatabase::loadRowList或JDatabase::loadAssocList方法,具体取决于需要对象、数组还是关联数组。
要更新多行,请使用JDatabase::query或JDatabase::queryBatch方法。
通常,当存在所描述的插入模式(即单行编辑)时,我使用JTable来提供帮助:
http://docs.joomla.org/Using_the_JTable_class#Create.2FUpdate
要更新多行,我将使用JDatabase方法。Joomla在调用自己的内容文章列表时使用JDatabase,请参阅components/com_content/models/articles.php,请参阅调用:
$db=$this->getDbo();
这里对此进行了解释:
http://docs.joomla.org/Accessing_the_database_using_JDatabase
我不确定,但尝试使用JTable访问多行,只需使用:
$rows->load();
希望这能有所帮助。