Перейти к содержанию
Moonwalker

Вывод из ячейки БД в шапку админки

Рекомендуемые сообщения

Добрый день, сообщество!

 

Необходимо реализовать вывод в шапку админки (куда именно воткнуть - пока не решил, но проблема не в этом) данные из определенной ячейки БД магазина.

При обновлении остатков (запросом в бд извне) в эту ячейку записывается текущая дата и время.

Соответственно, нужно взять эти данные и вывести в шапку админки сайта, чтобы можно было всегда видеть актуальность данных.

 

В БД еще ничего не создавал, поэтому есть варианты и отдельную таблицу с одним столбцом и одной строкой под эти данные сделать, и в какую-нибудь oc_setting засунуть (хотя, кажись, отдельная во избежание накладок будет логичнее).

Понимаю, что нужно править какой-то model (либо создавать отдельный), где делать запрос в БД для получения данных ячейки, затем править контроллер header.php и, соответственно, выводить в header.tpl.

Логику понимаю, но навыков для создания правильной таблицы, формирования нужных запросов в модели и их обработки в контроллере, не хватает ((

С записью даты и времени в бд как-раз проблем нет ))

 

Кто-нибудь направит на путь истинный?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, Вам тут вряд ли готовое решение за бесплатно наваяют.

А так конечно нужно понимать что за структура БД. У меня почему то сложилось впечатление, что у вас там 1 столбец всего с 1 записью. Какой тип данных будет лежать в таблице

В задаче мало деталей, а без них сложно дать полный ответ.

Вот первая ссылка в гугле по созданию модулей в ОС http://s-engineer.ru/sozdaem-modul-v-opencart-2-x-ocmod/

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$mydata = $this->db->query("SELECT mydata FROM " . DB_PREFIX . "table_name");

Наверное так, если

8 минут назад, neonox сказал:

у вас там 1 столбец всего с 1 записью

 

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Бд - та же самая, в которой магазин. Просто еще одна таблица, или даже строка в какой-нить имеющейся (еще не решил). Допустим, в БД магазина таблица "oc_updatedate", в ней один столбец и одна строка. В ней данные, которые надо выводить.Тип данных - короткий текст. Можно тот же varchar.

А какие еще детали нужны? Имя таблицы, столбца, ячейки? Условно, мне нужно из той же самой базы взять данные и вывести их в админке в шапке.

Ну и я не просил никого готовое решение бесплатно ваять )) Скорее, попросил дать направление.

Допустим, можно было задать задачу так: мне нужно в шапке в админке вывести название магазина (оно же, по сути, в той же бд хранится в определенной ячейке). А дальше по схеме уже просто беру данные из другой ячейки для вывода )) Или факс из настроек магазина, все равно не используется. Могу прямо туда нужные данные записывать.

За наводку на материал по созданию модулей спасибо. Но я особо модули не собирался писать, мне просто надо уже имеющиеся в бд данные вывести, протащив через controller и model, судя по всему ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
15 минут назад, mazein сказал:

$mydata = $this->db->query("SELECT mydata FROM " . DB_PREFIX . "table_name");

Наверное так, если

 

Это, насколько я понимаю, уже в controller/common/header.php можно прописать? Минуя какой-либо model?

А потом через echo в header.tpl вывести?

Изменено пользователем Moonwalker

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, Moonwalker сказал:

controller/common/header.php

 

Да, для проверки можно прямо в контроллер, потом перенесёте в модель.

Это как бы то самое направление.

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
34 минуты назад, mazein сказал:

 

Да, для проверки можно прямо в контроллер, потом перенесёте в модель.

Это как бы то самое направление.

Дурацкий вопрос: а важно, в каком месте контроллера header.php прописывать? Потому как в месте, где вывожу <?php echo $mydata; ?>

показывает Notice: Undefined variable: mydata in ...

В контроллер воткнуто это:

$mydata = $this->db->query("SELECT * FROM oc_aaa");

 

По запросу SELECT * FROM oc_aaa извне получаю нужные данные, которые записаны в ячейке.

Чую, что где-то близко, а попасть не могу )) Такое ощущение, что запрос к бд нужно все-таки куда-то в модель воткнуть, а в контроллере просто обработать.

Изменено пользователем Moonwalker

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько я понял, все данные передаются в массиве data

return $this->load->view('common/header', $data);

А у вас ваша переменная "висит в воздухе"

Что-то типа того надо сделать:

$data['mydata'] = $this-> тут ваше обращение в модель ( я пытаюсь разобраться вместе с вами., есть похожая задача)

или

$mydata = $this->db->query("SELECT * FROM oc_aaa");

$data['mydata'] = $mydata;

Изменено пользователем jaffagold

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$mydata = $this->db->query("SELECT * FROM " . DB_PREFIX . "table_name");
	foreach ($mydata->rows as $mydataa) { 
		$data['mydatab'] = $mydataa['column_name']; 
	}

<?php echo $mydatab; ?>

так точно будет работать

  • +1 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
29 минут назад, mazein сказал:

$mydata = $this->db->query("SELECT * FROM " . DB_PREFIX . "table_name");
	foreach ($mydata->rows as $mydataa) { 
		$data['mydatab'] = $mydataa['column_name']; 
	}

<?php echo $mydatab; ?>

так точно будет работать

 

Notice: Undefined variable: mydatab in... (((

Может, критично, куда в контроллере вставлять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я пошагово делаю такие вещи при экспериментах

//		
		$data['mytab'] = 123454321;
//
		$mydata = $this->db->query("SELECT * FROM " . DB_PREFIX . "USER");
			foreach ($mydata->rows as $mydataa) { 
		$data['mytab2'] = $mydataa['username']; 
	}
//

и в tpl-ке

<div class="container">
    <?php echo $currency; ?>
    <?php echo $language; ?>
	<?php echo $mytab; ?>
	<?php echo $mytab2; ?>
  тут неважно

Выводит 123454321 admin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 часов назад, jaffagold сказал:

Я пошагово делаю такие вещи при экспериментах

 

Первый кусок ты в каком файле в какое место вставляешь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Скрытый текст

<?php
class ControllerCommonHeader extends Controller {
    public function index() {
        // Analytics
        $this->load->model('extension/extension');

        $data['analytics'] = array();

        $analytics = $this->model_extension_extension->getExtensions('analytics');

        foreach ($analytics as $analytic) {
            if ($this->config->get($analytic['code'] . '_status')) {
                $data['analytics'][] = $this->load->controller('extension/analytics/' . $analytic['code'], $this->config->get($analytic['code'] . '_status'));
            }
        }

        if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
            $server = $this->config->get('config_ssl');
        } else {
            $server = $this->config->get('config_url');
        }

        if (is_file(DIR_IMAGE . $this->config->get('config_icon'))) {
            $this->document->addLink($server . 'image/' . $this->config->get('config_icon'), 'icon');
        }

        $data['title'] = $this->document->getTitle();

        $data['base'] = $server;
        $data['description'] = $this->document->getDescription();
        $data['keywords'] = $this->document->getKeywords();
        $data['links'] = $this->document->getLinks();
        $data['styles'] = $this->document->getStyles();
        $data['scripts'] = $this->document->getScripts();
        $data['lang'] = $this->language->get('code');
        $data['direction'] = $this->language->get('direction');

        $data['name'] = $this->config->get('config_name');
//        
        $data['mytab'] = 123454321;
//
        $mydata = $this->db->query("SELECT * FROM " . DB_PREFIX . "USER");
            foreach ($mydata->rows as $mydataa) { 
        $data['mytab2'] = $mydataa['username']; 
    }
//    

header.php ( ocstore 23021) 

Обновляю модификаторы  и обновляю сайт Crl+F5

Изменено пользователем jaffagold
  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хм, видимо, забыл уточнить версию. У меня ocStore 1.5.5.1 Там, видать, логика малек иначе.

Ладно, будем копать. Не сказать, что прям критично надо, но уже даче чисто спортивный интерес появился ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, Moonwalker сказал:

У меня ocStore 1.5.5.1

 

очень вовремя

 

$mydata = $this->db->query("SELECT * FROM " . DB_PREFIX . "table_name");
	foreach ($mydata->rows as $mydataa) { 
		$this->data['mydatab'] = $mydataa['column_name']; 
	}

<?php echo $mydatab; ?>

 

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, mazein сказал:

 

очень вовремя

 

Так мне казалось, я не в ветке 2.х спрашивал ))) Там свои "Общие вопросы" ))

Да, этот вариант работает )) Благодарствую. Жалко, лишь один плюсик можно поставить в карму.

С меня пузырь ;)

Изменено пользователем Moonwalker

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.