Jump to content
Sign in to follow this  
vetalkurilenko

Ошибка Undefined index: total в модуле рассылки

Recommended Posts

День добрый. Проблема такая. Есть шаблон Debaco, связи с разработчиком к сожалению нету. В нем имеется уже встроенный модуль рассылки почты. В этом модуле возникает ошибка 

Notice: Undefined index: total in D:\Server\OSPanel\domains\molli.com.ua.loc\admin\model\plaza\newsletter.php on line 55

при попытке пагинации, при чем ошибка появляется только начиная со второй страницы списка.

Ну и сам код:

<?php
class ModelPlazaNewsletter extends Model
{
    public function getMail($newsletter_id) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "ptnewsletter_email WHERE newsletter_id = '" . (int) $newsletter_id . "'");

        return $query->row;
    }

    public function getMails($data = array()) {
        $sql = "SELECT * FROM " . DB_PREFIX . "ptnewsletter_email";
        
        if(isset($data['filter_mail'])) {
            $sql .= " WHERE mail LIKE '%" . $this->db->escape($data['filter_mail']) . "%'";
        }

        if (isset($data['start']) || isset($data['limit'])) {
            if ($data['start'] < 0) {
                $data['start'] = 0;
            }

            if ($data['limit'] < 1) {
                $data['limit'] = 20;
            }

            $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
        }

        $query = $this->db->query($sql);

        return $query->rows;
    }

    public function getTotalMails($data = array()) {
        $sql = "SELECT COUNT(*) AS total FROM " . DB_PREFIX . "ptnewsletter_email";

        if(isset($data['filter_subscribe'])) {
            $sql .= " WHERE subscribe = '" . $this->db->escape($data['filter_subscribe']) . "'";
        }

        if (isset($data['start']) || isset($data['limit'])) {
            if ($data['start'] < 0) {
                $data['start'] = 0;
            }

            if ($data['limit'] < 1) {
                $data['limit'] = 20;
            }

            $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
        }

        $query = $this->db->query($sql);

        return $query->row['total'];

    }

    public function editSubscribe($mail_id, $subscribe) {
        $this->db->query("UPDATE " . DB_PREFIX . "ptnewsletter_email SET subscribe = '" . (int) $subscribe . "' WHERE newsletter_id = '" . (int) $mail_id . "'");
    }

    public function deleteMail($mail_id) {
        $this->db->query("DELETE FROM " . DB_PREFIX . "ptnewsletter_email WHERE newsletter_id = '" . (int) $mail_id . "'");
    }

    public function install() {
        $this->db->query("
			CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "ptnewsletter_email` (
			    `newsletter_id` INT(11) NOT NULL AUTO_INCREMENT,
			    `subscribe` TINYINT(1) NOT NULL DEFAULT '1',
	            `mail` varchar(255) NOT NULL,
	        PRIMARY KEY (`newsletter_id`)
		) DEFAULT COLLATE=utf8_general_ci;");

        $this->load->model('user/user_group');
        $this->model_user_user_group->addPermission($this->user->getGroupId(), 'access', 'plaza/newsletter');
        $this->model_user_user_group->addPermission($this->user->getGroupId(), 'modify', 'plaza/newsletter');
    }

    public function uninstall() {
        $this->db->query("DROP TABLE IF EXISTS `" . DB_PREFIX . "ptnewsletter_email`");

        $this->load->model('user/user_group');
        $this->model_user_user_group->removePermission($this->user->getGroupId(), 'access', 'plaza/newsletter');
        $this->model_user_user_group->removePermission($this->user->getGroupId(), 'modify', 'plaza/newsletter');
    }
}

Не могу понять в чем причина ошибки. Прошу вашей помощи, заранее спасибо )

Edited by vetalkurilenko

Share this post


Link to post
Share on other sites

Ну а таблица сама "ptnewsletter_email" есть? 

Посмотрите структуру $sql который собирается. Закиньте его в phpmyadmin, там попробуйте. Посмотрите на ошибки если таковы существуют. 

Share this post


Link to post
Share on other sites
4 minutes ago, Leingard said:

Ну а таблица сама "ptnewsletter_email" есть? 

Посмотрите структуру $sql который собирается. Закиньте его в phpmyadmin, там попробуйте. Посмотрите на ошибки если таковы существуют. 

Да, таблица есть. Запрос проверял вручную - отдает правильно все. В том то и дело, что на первой странице пагинации все правильно работает, а со второй вылезает эта ошибка. 

Share this post


Link to post
Share on other sites
8 минут назад, vetalkurilenko сказал:

Да, таблица есть. Запрос проверял вручную - отдает правильно все. В том то и дело, что на первой странице пагинации все правильно работает, а со второй вылезает эта ошибка. 

 

Не заметил текст про пагинацию) Компонуйте пост) 

Ну тогда скорее всего дело в товарищах $data['start'] и $data['limit']

 

Сделайте в 49 строке 

var_dump($data['start'] . '  - ' . $data['limit']); 

и посмотрите, что будет выдавать.

Share this post


Link to post
Share on other sites
16 minutes ago, Leingard said:

 

Не заметил текст про пагинацию) Компонуйте пост) 

Ну тогда скорее всего дело в товарищах $data['start'] и $data['limit']

 

Сделайте в 49 строке 

var_dump($data['start'] . '  - ' . $data['limit']); 

и посмотрите, что будет выдавать.

Сейчас я подгрузил в базу 22 почты. 

на первой странице выдает

string(7) "0 - 20"

а на второй странице выдает такое

string(8) "20 - 20" Notice: Undefined index: total in D:\Server\OSPanel\domains\molli.com.ua.loc\admin\model\plaza\newsletter.php on line 57

и пропадает пагинация вообще

Share this post


Link to post
Share on other sites
54 minutes ago, Leingard said:

 

Не заметил текст про пагинацию) Компонуйте пост) 

Ну тогда скорее всего дело в товарищах $data['start'] и $data['limit']

 

Сделайте в 49 строке 

var_dump($data['start'] . '  - ' . $data['limit']); 

и посмотрите, что будет выдавать.

заметил, что при комментировании строки 

$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];

$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];

ошибка пропадет, на второй странице появляется пагинация и правильно отображается количество, но пагинация работает только с первой страницы

Share this post


Link to post
Share on other sites

А где у вас счетчик? Если в таблице есть автоинкримент, попробуйте определять id уже вытянутых строк припомощи mysqli_insert_id

Edited by Flint2000

Share this post


Link to post
Share on other sites
38 minutes ago, Flint2000 said:

А где у вас счетчик? Если в таблице есть автоинкримент, попробуйте определять id уже вытянутых строк припомощи mysqli_insert_id

Для примера открыл подобного плана модуль, и вот как там выглядит эта функция

 public function getTotalTestimonials() {
        $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "pttestimonial");

        return $query->row['total'];
    }

и нормально отрабатывает без счетчика

Share this post


Link to post
Share on other sites

убрал 

if (isset($data['start']) || isset($data['limit'])) {
            if ($data['start'] < 0) {
                $data['start'] = 0;
            }

            if ($data['limit'] < 1) {
                $data['limit'] = 20;
            }

            $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];

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

 

Edited by vetalkurilenko

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By Incubis
      Не могу разобраться, как перенести блок с названием поверх фотографии, а блок с ценой и вкладкой купить, поверх описания 
      (смотреть фотографию)
      На компьютере отображается нормально, а вот на телефоне совсем не устраивает, если описание большое то название и цену нужно долго искать
      Шаблон стандартный, версия ocstore 3.0.2.0

    • By Nikoaly
      Необходимо установить купленный шаблон на существующий сайт.
       
    • By sano4kin
      Приветствую!
       
      Господа, с недавних пор начала расти нагрузка на БД. Хостер даже сайт забанил, потому что за 2 часа нагрузка вырастала до 150000 сек, и так каждый день...
      В логах вот такая ошибка. Кто знает что она означает?

    • By Sunser
      300.00 руб
      Скачать/Купить дополнение


      Ease description - модуль упрощенного описания
      Ease description - модуль упрощенного описания для Opencart и ocStore.
       
      Расширение подходит и тестировалось на версиях Opencart 2.0, 2.1, 2.2, 2.3 и 3.0
      Так же подойдет для OpencartPro версии 2.1 и 2.3
      Расширение подходит и тестировалось на версиях ocStore 2.1, 2.3 и 3.0
      Расширение тестировалось на официальных версиях, скачанных из официальных сайтов сборок.
      Модуль тестировался по нескольких раз на всех выше указанных версиях. Так же модуль проверялся на ошибки.
       
      -- Установка расширения:
      Есть два способа установки:
      1) Это просто откройте установщик расширений и выберите данное расширение под версию вашей сборки и установите, после чего обновите "Модификаторы", Потом перейдите в раздел Модулей и активируйте его, после чего настройте как вам необходимо. После настройки и сохранения модуля, перейдите в макеты или схемы и выберите место где вы хотите что бы модуль выводился и сохраните. После чего модуль появится на сайте;
      2) Распакуйте файл с версией вашего Opencart или ocStore и перетащите в корень вашего сайта. После чего обновите "Модификаторы", потом перейдите в раздел Модулей и активируйте его, после чего настройте как вам необходимо.
      Модуль не заменяет никаких файлов.
       
      -- Что может модуль:
      1) Модуль мультиязычный;
      2) Модуль выводит любой текст и заголовок на сайте, который вы можете редактировать как вам будет удобно;
      3) В модуле можно задавать ширину блока;
      4) В блоке есть настройка, при которой блок скрывается, если его нет в поле видимости, типа lazyload;
      5) В модуле можно выводить кнопку "показать еще";
      6) В модуле можно задавать скролл для текста
      7) Так же можно задавать стили для кнопки "показать еще";
      Зачем нужен этот модуль и как он работает?
      Модуль позволяет гибко, быстро и удобно настраивать вывод блоков с текстом на сайте.
      Например вам нужно на главной странице вывести блок с заголовком и текстом. С такой задачей может с легкостью справится модуль "Текстовый блок - HTML".
      Но а если вам нужно что бы на модуле была кнопка "загрузить еще", что бы при нажатии показывался весь текст. Или же вам надо что бы на модуле был скролл определенной высоты или задать ширину блока. То тогда нужно обращаться к программистам что бы дописывал функционал.
      А в данном модуле уже все сделано и займет немного времени в настройке и выводе.
       
      Модуль легкий в настройке.
      Модуль имеет 14 полей:
      1) Название модуля - тут просто пишите название модуля, оно будет отображаться в админке вашего сайта;
      2) Кнопка "Загрузить еще" - Она отвечает будет ли на блоке с текстом кнопка "показать еще";
      3) Высота блока для загрузить еще - отвечает за высоту блока, после которой появится кнопка "показать еще";
      4) Затухнение блока при кнопке "Загрузить еще" - отвечает за затухнение текста перед кнопкой "показать еще";
      5) Расположение кнопка "Загрузить еще" - отвечает за расположение кнопки "показать еще";
      6) Текст кнопки До нажатия - тут можно задать название кнопки "показать еще", по стандарту, если поле пустое, то выводится стандартный текст;
      7) Текст кнопки После нажатия - тут можно задать название кнопки "скрыть", по стандарту, если поле пустое, то выводится стандартный текст;
      8) Блок со скроллом - отвечает за то будет скрол на тексте или нет;
      9) Высота блока для скролла - задается высота для блока со скроллом;
      10) Умное появление - lazyload;
      11) Ширина блока с описанием - тут задается ширина блока с текстом, если поле равно 0, то ширина блока равна 100%;
      12) Статус - оно отвечает, будет работать модуль или нет на сайте.
      13) Заголовок - тут задается заголовок;
      14) Описание - тут задается описание
       
      Если вы заметите какие-то неполадки или у вас будет предложение по улучшению самого модуля, пишите в личное сообщения данного сервиса, после чего я вам обязательно отвечу.
       
      Будьте внимательные к описанию данного модуля, его характеристикам и скринам приложенным к нему перед приобретением модулям. Если же вам что-то не понятно или есть вопросы перед приобретением, можете написать автору модуля и уточнить свои вопросы к данному модулю
       
      Убедительная просьба, если вы заказываете дополнительные платные услуги по модулю, заранее согласуйте с автором, поскольку автор может быть занят или отсутствовать.
       
      Другие модули автора:
      Sunser Callback - форма обратной связи
      Sunser map - кастомная карта для сайта
      Content manager – модуль учета контента.
      Subscribe_pro - улучшенная подписка на новости
      Sitemap generator - генератор статической карты сайта
      Добавил Sunser Добавлено 28.10.2019 Категория Модули Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 3.0
      2.3
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1 Обращение к серверу разработчика Нет Старая цена 0  
    • By Sunser
      Ease description - модуль упрощенного описания для Opencart и ocStore.
       
      Расширение подходит и тестировалось на версиях Opencart 2.0, 2.1, 2.2, 2.3 и 3.0
      Так же подойдет для OpencartPro версии 2.1 и 2.3
      Расширение подходит и тестировалось на версиях ocStore 2.1, 2.3 и 3.0
      Расширение тестировалось на официальных версиях, скачанных из официальных сайтов сборок.
      Модуль тестировался по нескольких раз на всех выше указанных версиях. Так же модуль проверялся на ошибки.
       
      -- Установка расширения:
      Есть два способа установки:
      1) Это просто откройте установщик расширений и выберите данное расширение под версию вашей сборки и установите, после чего обновите "Модификаторы", Потом перейдите в раздел Модулей и активируйте его, после чего настройте как вам необходимо. После настройки и сохранения модуля, перейдите в макеты или схемы и выберите место где вы хотите что бы модуль выводился и сохраните. После чего модуль появится на сайте;
      2) Распакуйте файл с версией вашего Opencart или ocStore и перетащите в корень вашего сайта. После чего обновите "Модификаторы", потом перейдите в раздел Модулей и активируйте его, после чего настройте как вам необходимо.
      Модуль не заменяет никаких файлов.
       
      -- Что может модуль:
      1) Модуль мультиязычный;
      2) Модуль выводит любой текст и заголовок на сайте, который вы можете редактировать как вам будет удобно;
      3) В модуле можно задавать ширину блока;
      4) В блоке есть настройка, при которой блок скрывается, если его нет в поле видимости, типа lazyload;
      5) В модуле можно выводить кнопку "показать еще";
      6) В модуле можно задавать скролл для текста
      7) Так же можно задавать стили для кнопки "показать еще";
      Зачем нужен этот модуль и как он работает?
      Модуль позволяет гибко, быстро и удобно настраивать вывод блоков с текстом на сайте.
      Например вам нужно на главной странице вывести блок с заголовком и текстом. С такой задачей может с легкостью справится модуль "Текстовый блок - HTML".
      Но а если вам нужно что бы на модуле была кнопка "загрузить еще", что бы при нажатии показывался весь текст. Или же вам надо что бы на модуле был скролл определенной высоты или задать ширину блока. То тогда нужно обращаться к программистам что бы дописывал функционал.
      А в данном модуле уже все сделано и займет немного времени в настройке и выводе.
       
      Модуль легкий в настройке.
      Модуль имеет 14 полей:
      1) Название модуля - тут просто пишите название модуля, оно будет отображаться в админке вашего сайта;
      2) Кнопка "Загрузить еще" - Она отвечает будет ли на блоке с текстом кнопка "показать еще";
      3) Высота блока для загрузить еще - отвечает за высоту блока, после которой появится кнопка "показать еще";
      4) Затухнение блока при кнопке "Загрузить еще" - отвечает за затухнение текста перед кнопкой "показать еще";
      5) Расположение кнопка "Загрузить еще" - отвечает за расположение кнопки "показать еще";
      6) Текст кнопки До нажатия - тут можно задать название кнопки "показать еще", по стандарту, если поле пустое, то выводится стандартный текст;
      7) Текст кнопки После нажатия - тут можно задать название кнопки "скрыть", по стандарту, если поле пустое, то выводится стандартный текст;
      8) Блок со скроллом - отвечает за то будет скрол на тексте или нет;
      9) Высота блока для скролла - задается высота для блока со скроллом;
      10) Умное появление - lazyload;
      11) Ширина блока с описанием - тут задается ширина блока с текстом, если поле равно 0, то ширина блока равна 100%;
      12) Статус - оно отвечает, будет работать модуль или нет на сайте.
      13) Заголовок - тут задается заголовок;
      14) Описание - тут задается описание
       
      Если вы заметите какие-то неполадки или у вас будет предложение по улучшению самого модуля, пишите в личное сообщения данного сервиса, после чего я вам обязательно отвечу.
       
      Будьте внимательные к описанию данного модуля, его характеристикам и скринам приложенным к нему перед приобретением модулям. Если же вам что-то не понятно или есть вопросы перед приобретением, можете написать автору модуля и уточнить свои вопросы к данному модулю
       
      Убедительная просьба, если вы заказываете дополнительные платные услуги по модулю, заранее согласуйте с автором, поскольку автор может быть занят или отсутствовать.
       
      Другие модули автора:
      Sunser Callback - форма обратной связи
      Sunser map - кастомная карта для сайта
      Content manager – модуль учета контента.
      Subscribe_pro - улучшенная подписка на новости
      Sitemap generator - генератор статической карты сайта
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.