E-mail Печать

Шаг 8. Сохранение данных в БД

После того как мы ввели данные в форму, при нажатии на кнопку "Сохранить", мы должны сохранить введенные данные в таблице БД. Для этого создадим функцию saveGoodtime() в файле admin.goodtimes.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function saveGoodtime( $option )
{
global $mainframe;

$row =& JTable::getInstance('goodtimes', 'Table');

if (!$row->bind(JRequest::get('post')))
{
echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";
exit();
}

$row->review = JRequest::getVar( 'review', '', 'post', 'string', JREQUEST_ALLOWRAW );
$row->id = (int) $row->id;
$row->smoking = (int) $row->smoking;

$date =& JFactory::getDate($row->review_date);
$row->review_date = $date->toMySQL();

if (!$row->store())
{
echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";
exit();
}

switch ($task)
{
case 'apply':
$msg = 'Изменения в обзоре сохранены.';
$link = 'index.php?option=' . $option . '&task=edit&cid[]='. $row->id;
break;

case 'save':
default:
$msg = 'Обзор сохранен.';
$link = 'index.php?option=' . $option;
break;
}

$mainframe->redirect($link, $msg);
}

Для начала мы объявляем глобальную переменную $mainframe и текущее сооединение с БД. У переменной $mainframe есть много функций которые мы можем использовать для того чтобы управлять сессией, переменными и заголовками. Также мы создаем $row как экземпляр нашего класса Tablegoodtimes. Далее функция bind() загружает в $row все переменные формы.

Если функция bind() выдает ошибку, то мы выводим предупреждение и возвращаем пользователя к предыдущему шагу.

После того как переменные формы загружены в массив $row мы можем использовать их, далее мы подготавливаем их для записи в БД.

Далее используя функцию store() мы обновляем или же вставляем запись в БД. Здесь т.к. у нас нет значения id то у нас происходит вставка новой записи.

Если происходит ошибка в запросе SQL, то мы выдаем эту ошибку и возвращаем пользователя на шаг назад.

Для того чтобы наша функция сохранения стала работать нужно в файл admin.goodtimes.php в оператор switch() добавить строки:

1
2
3
case 'save':
saveGoodtime( $option, $task );
break;

Теперь откройте адрес http://ваш_сайт/administrator/index.php?option=com_goodtimes&task=add, заполните все поля формы и нажмите кнопку "Сохранить".

На экране вы увидите следующее:

step8

Убедиться что данные сохранены в БД вы можете открыв phpMyAdmin и просмотреть таблицу jos_goodtimes.

step8

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Mark
 
Интересная статья? Поделись ей с другими:

Комментарии  

 
+4 # 05.05.2010 12:59
Интересная статья! мне нравится но вот всё сделав по инструкции у меня ничего так и не заработало! ошибка вот тут case 'save':
saveGoodtime( $option, $task );
break; ! Пункт 7 и 8 надо переработать. Но в Joomla! уже существует класс JTable обеспечивающий функции для работы с базой данных. я так понял свой запрос писать не надо joomla всё сама делает так?
Ответить | Ответить с цитатой | Цитировать
 
 
+2 # 06.05.2010 09:15
Да все верно, запросов ни каких писать не нужно, есть ведь функция store(), которая сама все сделает.
Ответить | Ответить с цитатой | Цитировать
 
 
+4 # 14.06.2010 05:31
Спасибо автору за старт, но довести дело до конца он так и не смог осталась кривая недоделка.
Вот покорпел еще чуток дополнил недостоющий код из стандартного компонента. Кому будет интересно.
(без клиентской части правда.)

http://mydezign.ru/files/com_goodtimes.zip
Ответить | Ответить с цитатой | Цитировать
 
 
+1 # 19.07.2010 15:35
Цитирую Mike:
Спасибо автору за старт, но довести дело до конца он так и не смог осталась кривая недоделка.
Вот покорпел еще чуток дополнил недостоющий код из стандартного компонента. Кому будет интересно.
(без клиентской части правда.)

http://mydezign.ru/files/com_goodtimes.zip


Вот так должно работать.. Респект тебе и уважуха!
Ответить | Ответить с цитатой | Цитировать
 
 
+1 # 05.08.2010 18:56
огромное спасибо за исходник! Очень долго искал шаблон исходника! Делал по статье http://www.webflasher.net/ru/webmasteru/components-urok-4.html но она кривая какая-то. половина работала, а половина - нет(( :-)
Ответить | Ответить с цитатой | Цитировать
 
 
0 # 14.03.2011 19:30
А можно обновить ссылочку? спасибо!
Ответить | Ответить с цитатой | Цитировать
 
 
+1 # 16.06.2010 18:43
Огромное спасибо автору, статья полезная.
У меня почему-то нет привязки меню->создать c http://ваш_сайт/administrator/index.php?option=com_goodtimes&task=add? Я что-то не правильно сделал, или следует дополнить код?
Ответить | Ответить с цитатой | Цитировать
 
 
+1 # 13.07.2010 09:11
Статья очень интересна, но в сети интернет очень много подобных статей о том как создать компонет и управлять им из админки, но вот что действительно было бы интересно как проделать тоже самое, только из фронт-энда сайта?!...
Ответить | Ответить с цитатой | Цитировать
 
 
+1 # 11.08.2010 19:43
Все хорошо, только не слово о MVC при создании компонента
Ответить | Ответить с цитатой | Цитировать
 
 
+1 # 13.08.2010 15:47
Цитирую Mihail:
Все хорошо, только не слово о MVC при создании компонента

Да согласен, что не описана структура MVC, не стал вдаваться в теорию, я думаю кому нужно тот спросит у гуггла, я думаю он лучше меня объяснит
Ответить | Ответить с цитатой | Цитировать
 
 
+1 # 13.11.2010 09:08
Подскажите, а как сделать чтобы не набирать ссылку http://ваш_сайт/administrator/index.php?option=com_goodtimes&task=add?

чтобы по кнопке "Создать" попадать сразу по этой ссылке.
Ответить | Ответить с цитатой | Цитировать
 
 
0 # 06.01.2011 00:11
То что надо ) Хороший цикл статей!
Ответить | Ответить с цитатой | Цитировать
 
 
0 # 01.02.2011 17:58
Действительно очень жаль, что статья не дописана.
ни один из пунктов меню "показать, скрыть, и т.п." не работают. Точно так же как и "сохранить, применить и т.п."
Ответить | Ответить с цитатой | Цитировать
 
 
0 # 19.02.2011 00:36
Есть минус который вы неучли. Это функционал админ панели. Нет мануалов как его использовать. постраничная навигация, публикация. сортировка. гДе это достать как использовать на это создание моего компонента просто стопарнулось.
Ответить | Ответить с цитатой | Цитировать
 
 
0 # 19.02.2011 22:57
Скоро будет!
Ответить | Ответить с цитатой | Цитировать
 
 
0 # 04.04.2011 16:59
А мне все понравилось!!! Спасибо афтору! Все что автор рассказал работает и в базу все сохраняет. Еще раз спасибо. Для старта в самый раз.
Ждем продолжения. Действительно хочется теперь увидеть как все то что сохранили из админки отобразить во фронте.
Ответить | Ответить с цитатой | Цитировать
 
 
+1 # 03.08.2011 22:00
Жалкий копипаст с зарубежных ресурсов...
Ответить | Ответить с цитатой | Цитировать
 
 
+1 # 05.12.2011 05:08
http://lib.mexmat.ru/books/29113 - читайте и да будет ваш Щастье) отличная книга для старта в написани компонентов для Joomla!
Ответить | Ответить с цитатой | Цитировать
 
 
0 # 06.12.2011 19:20
Цитирую Den:
http://lib.mexmat.ru/books/29113 - читайте и да будет ваш Щастье) отличная книга для старта в написани компонентов для Joomla!

Цитирую Den:
http://lib.mexmat.ru/books/29113 - читайте и да будет ваш Щастье) отличная книга для старта в написани компонентов для Joomla!

Книги норм
Ответить | Ответить с цитатой | Цитировать
 
 
0 # 15.04.2012 02:16
Точно что непутевые заметки.
Зря потрачено время
Ответить | Ответить с цитатой | Цитировать
 

Добавить комментарий


Защитный код
Обновить