Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Moonwalker

Recommended Posts

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

 

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

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

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

 

В БД еще ничего не создавал, поэтому есть варианты и отдельную таблицу с одним столбцом и одной строкой под эти данные сделать, и в какую-нибудь 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

Надіслати
Поділитися на інших сайтах


Скрытый текст

<?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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.