Joomla: Как использовать обновление нескольких строк одновременно в компоненте в рамках MVC? - PullRequest
0 голосов
/ 26 марта 2012

Начиная с разработки на 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, поэтому, если значения не существуют в таблице «учеников», он просто обновит каждую строку, а если значения существуют, они будут обновлены (вместе с отметкой времени и несколько других полей).

Я почти уверен, что смогу построить запрос (предложения приветствуются!), Но сейчас я понятия не имею, как использовать MVC-инфраструктуру Joomla, чтобы это произошло. Похоже, jTable не подходит для возврата нескольких строк, что означает использование JModelList .... но как использовать функциональность Joomla для создания кнопки Сохранить (JToolbar?), Которая будет обновляться или вставляться в зависимости от того, существует ли эта строка? Чувствую, что у меня есть все части, но я не знаю, как они идут вместе. Представление для студентов очень простое: один контроллер / модель / 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
/888720/obnovit-neskolko-strok
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?)

Вопросы:

  • Как использовать MVC фреймворка Joomla для создания многорядного обновления ... для чайников.

  • Куда все идет?

  • Если есть другой способ сделать это, я полностью открыт для предложений.

Спасибо!

EDIT

Поймите, это, вероятно, слишком широко Вот еще немного:

  • Я прошел руководство по Joomla MVC («вот какой-то код - PLOP») и Линде (лучше, но также и в категории «вот какой-то код - PLOP»).

  • Я настроил несколько простых табличных представлений / обновлений, используя эти руководства. Это включало создание одного представления, которое возвращало бы все значения, и другого, которое извлекало бы одну запись (для редактирования или для нового), изменения XML-файла для учета различных типов ввода данных и т. Д.

Моя путаница в двух словах заключается в следующем. Используя эти руководства, кажется, что представление редактирования с использованием JTable предназначено для отображения ОДНОЙ записи. Для отображения более одной записи вы используете JModelList. Итак, что вы используете для отображения нескольких записей и обновления их? Или вы просто игнорируете то, что они должны делать, и просто добавляете зацикленное обновление? Пытаться учиться и делать это правильным образом, который было немного сложнее понять, чем предполагалось.

Еще раз спасибо!

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

Вам, вероятно, следует использовать 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 / article.php, см. Вызов:

$ db = $ this-> getDbo ();

Это объясняется здесь:

http://docs.joomla.org/Accessing_the_database_using_JDatabase

Я не уверен, но попробуйте получить доступ к нескольким строкам с помощью JTable, просто используя:

$ lines-> load ();

Надеюсь, это поможет.

0 голосов
/ 28 марта 2012

Вот несколько предложений:

  1. Используйте класс базы данных Joomla для выполнения запросов, вставок, обновлений и т. Д. Базы данных:

http://docs.joomla.org/How_to_use_the_database_classes_in_your_script

  1. Этот урок даст вам представление о том, как 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

Надеюсь, это поможет.

...