помогите со вторым LEFT JOIN!!!

Тема в разделе "Базы данных", создана пользователем fafee, 21 май 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. fafee

    fafee Постоялец

    Регистр.:
    4 окт 2008
    Сообщения:
    92
    Симпатии:
    0
    есть запрос, который выводит все новости из таблицы NEWS по id, хотелось бы включить в этот запрос вывод количества комментариев к каждой новости, комментарии хранятся в таблице NEWSCOMMENTS. В запросе уже есть один LEFT JOIN, а как еще один вставить, я что-то не пойму:ah:

    первый запрос

    PHP:
         $sql '
            SELECT 
            nw.`id_entry`, 
            nw.`date_add`, 
            nw.`id_employee`,
            nw.`status`,
            nwl.`link_rewrite`, 
            nwl.`meta_title`, 
            nwl.`description_short`
            FROM `' 
    _DB_PREFIX_ 'news` nw
            LEFT JOIN `' 
    _DB_PREFIX_ 'news_lang` nwl 
            ON (nw.`id_entry` = nwl.`id_entry`) 
            WHERE nwl.`id_lang` = ' 
    intval($cookie->id_lang) . 
            AND nwl.`meta_title` != ""
            AND nw.`status` = 1
            ORDER BY nw.`date_add` DESC'
    ;

    второй

    PHP:
    $sql '
    SELECT COUNT(`id_entry_comment`) AS "nbr"
            FROM `'
    ._DB_PREFIX_.'newscomments` pc
            WHERE `id_entry` = '
    .intval($entry_id)'; 
    Спасибо.
     
  2. malibu

    malibu Создатель

    Регистр.:
    8 июл 2009
    Сообщения:
    20
    Симпатии:
    9
    Можно вообще без join
    PHP:
     $sql '
            SELECT 
                  nw.`id_entry`, 
                  nw.`date_add`, 
                  nw.`id_employee`,
                  nw.`status`,
                  nwl.`link_rewrite`, 
                  nwl.`meta_title`, 
                  nwl.`description_short`,
                  (SELECT COUNT(`id_entry_comment`) AS "nbr"
                  FROM `'
    ._DB_PREFIX_.'newscomments` pc
                  WHERE pc.`id_entry` = nw.`id_entry`) cnt
              FROM 
                    `' 
    _DB_PREFIX_ 'news` nw
            LEFT JOIN 
                    `' 
    _DB_PREFIX_ 'news_lang` nwl 
            ON 
                (nw.`id_entry` = nwl.`id_entry`) 
            WHERE 
                  nwl.`id_lang` = ' 
    intval($cookie->id_lang) . 
                  AND nwl.`meta_title` != ""
                  AND nw.`status` = 1
            ORDER BY 
                    nw.`date_add` DESC'

    Но если очень хочется, то можно и так
    PHP:
    $sql '
            SELECT 
                  nw.`id_entry`, 
                  nw.`date_add`, 
                  nw.`id_employee`,
                  nw.`status`,
                  nwl.`link_rewrite`, 
                  nwl.`meta_title`, 
                  nwl.`description_short`,
                  pc.`nbr`
            FROM 
                    `' 
    _DB_PREFIX_ 'news` nw
            LEFT JOIN 
                    `' 
    _DB_PREFIX_ 'news_lang` nwl 
            ON 
                    (nw.`id_entry` = nwl.`id_entry`) 
              LEFT JOIN        
                    (
                        SELECT `id_entry`, COUNT(`id_entry_comment`) AS "nbr"
                        FROM `'
    ._DB_PREFIX_.'newscomments` pc
                        GROUP BY `id_entry`
                    ) pc
              ON
                    pc.`id_entry` = nw.`id_entry`
            WHERE 
                  nwl.`id_lang` = ' 
    intval($cookie->id_lang) . 
                  AND nwl.`meta_title` != ""
                  AND nw.`status` = 1
            ORDER BY 
                    nw.`date_add` DESC'
    ;  
    можно добавить фильтрацию здесь
    PHP:
    (
                        
    SELECT `id_entry`, COUNT(`id_entry_comment`) AS "nbr"
                        
    FROM `'._DB_PREFIX_.'newscommentspc
    WHERE что
    -то-тут-фильтруем
                        GROUP BY 
    `id_entry`
                    ) 
    pc
    чтоб не брать ненужное
     
    fafee нравится это.
  3. fafee

    fafee Постоялец

    Регистр.:
    4 окт 2008
    Сообщения:
    92
    Симпатии:
    0
    Здорово Вы в этом разбираетесь. Спасибо.
    Попробовал первый и второй вариант, но почему-то в темплейте не выводится это злосчастное количество комментариев,
    вот код функции, которая отвечает за это и часть темплейта,
    выводится все, кроме {$entry.nbr}

    PHP:
    <?
    public function 
    getNews($p false$n false)
        {
            global 
    $cookie;
            
    $rewrite intval(Configuration::get('PS_REWRITING_SETTINGS'));
            
    $tmpLink _PS_BASE_URL_ __PS_BASE_URI__;
             
    $sql 
            SELECT  
                  nw.`id_entry`,  
                  nw.`date_add`,  
                  nw.`id_employee`, 
                  nw.`status`, 
                  nwl.`link_rewrite`,  
                  nwl.`meta_title`,  
                  nwl.`description_short`, 
                  pc.`nbr` 
            FROM  
                    `' 
    _DB_PREFIX_ 'news` nw 
            LEFT JOIN  
                    `' 
    _DB_PREFIX_ 'news_lang` nwl  
            ON  
                    (nw.`id_entry` = nwl.`id_entry`)  
              LEFT JOIN         
                    ( 
                        SELECT `id_entry`, COUNT(`id_entry_comment`) AS "nbr" 
                        FROM `'
    ._DB_PREFIX_.'newscomments` pc 
                        GROUP BY `id_entry` 
                    ) pc 
              ON 
                    pc.`id_entry` = nw.`id_entry` 
            WHERE  
                  nwl.`id_lang` = ' 
    intval($cookie->id_lang) . '  
                  AND nwl.`meta_title` != "" 
                  AND nw.`status` = 1 
            ORDER BY  
                    nw.`date_add` DESC'
    ;  
            
            if(
    $p AND $n) {
                
    $sql .= ' LIMIT ' . ((intval($p) - 1) * intval($n)) . ',' intval($n);
            } elseif (
    $p) {
                
    $sql .= ' LIMIT ' . (intval($p));
            }
            


            
    $result Db::getInstance()->ExecuteS($sql);
            
    $links = array();

            if (
    $result)
            {
                foreach (
    $result as $row
                {
                    
    $row['link'] = self::getLink(array('entry' => array('id' => $row['id_entry'], 'rewrite' => $row['link_rewrite'])));
                    
    $links[] = $row;
                    
                }
                return 
    $links;
                
            }

            return 
    false;
        }
        
    ?>




    <?
    $newsClass = new News(Tools::getValue('id_entry', true));
    $data = $newsClass->getNews($p, $n);
    $smarty->assign(array(
            'nbNews'        => $nbProducts,
            'news'          => $data
        ));
    ?>

    {foreach from=$news item=entry}
    {$entry.id_entry}
    {$entry.id_employee}
    {$entry.link_rewrite}

    //а вот и число комментариев
    {$entry.nbr}

    {/foreach}

    Голову уже поломал, в чем дело....
     
  4. malibu

    malibu Создатель

    Регистр.:
    8 июл 2009
    Сообщения:
    20
    Симпатии:
    9
    Данные в таблицах точно есть нужные?
    Во втором запросе в случае отсутсвия комментариев к новости будет выбран NULL и smarty его не отобразить.
    В первом запросе в любом случае будет число, только внимательно посмотрите, там поле называется cnt, а не nbr, так что надо написать {$entry.cnt}
     
    fafee нравится это.
  5. fafee

    fafee Постоялец

    Регистр.:
    4 окт 2008
    Сообщения:
    92
    Симпатии:
    0
    данные есть, но даже в первом случае не выводит ничего

    на всякий случай привожу скрины таблиц
    NEWS
    [​IMG]
    NEWSCOMMENTS
    [​IMG]

    и полный листинг файлов

    класс News.php

    PHP:
    <?php
    class News extends ObjectModel
    {
        public 
    $meta_title;
        public 
    $meta_description;
        public 
    $meta_keywords;
        public 
    $description_short;
        public 
    $content;
        public 
    $link_rewrite;
        public 
    $status true;
        public 
    $date_add;
        public 
    $count_num;
        public 
    $date_upd;
        public 
    $id_employee;
        public 
    $id_category_default;

         protected 
    $fieldsRequiredLang = array(
             
    'meta_title'
             
    'link_rewrite'
         
    );
         
        protected 
    $fieldsSizeLang = array(
            
    'meta_description'  => 255
            
    'meta_keywords'     => 255
            
    'meta_title'        => 128
            
    'link_rewrite'      => 128
            
    'description_short' => 65536
            
    'count_num'           => 128,
            
    'content'           => 65536
        
    );
        
        protected 
    $fieldsValidate = array(
            
    'id_employee'   => 'isInt'
            
    'status'        => 'isBool'
        
    );
        
        protected 
    $fieldsValidateLang = array(
            
    'meta_description'  => 'isGenericName'
            
    'meta_keywords'     => 'isGenericName'
            
    'meta_title'        => 'isGenericName'
            
    'link_rewrite'      => 'isLinkRewrite'
            
    'description_short' => 'isCleanHTML'
            
    'count_num'         => 'isCleanHTML'
            
    'content'           => 'isCleanHTML'
        
    );

        protected 
    $table 'news';
        protected 
    $identifier 'id_entry';
        
        public function 
    getFields() { 
            global 
    $cookie;
            
    parent::validateFields();
            
    $fields['id_employee'] = intval($cookie->id_employee);
            
    $fields['status'] = intval($this->status);
            
    $fields['date_add'] = pSQL($this->date_add);
            
    //$fields['count_num'] = pSQL($this->id);
            
    $fields['date_upd'] = pSQL($this->date_upd);
            
            if(
    Module::isInstalled('newscategoriesmod')) {
                
    $fields['id_category_default'] = intval($this->id_category_default);
            }
            
            return 
    $fields
        }
        
        public function 
    getTranslationsFieldsChild()
        {
            
    parent::validateFieldsLang();

            
    $fieldsArray = array('meta_title''meta_description''meta_keywords''link_rewrite');
            
    $fields = array();
            
    $languages Language::getLanguages();
            
    $defaultLanguage Configuration::get('PS_LANG_DEFAULT');
            foreach (
    $languages as $language)
            {
                
    $fields[$language['id_lang']]['id_lang'] = $language['id_lang'];
                
    $fields[$language['id_lang']][$this->identifier] = intval($this->id);
                
    $fields[$language['id_lang']]['description_short'] = (isset($this->description_short[$language['id_lang']])) ? Tools::htmlentitiesDecodeUTF8(pSQL($this->description_short[$language['id_lang']], true)) : '';
                
    $fields[$language['id_lang']]['content'] = (isset($this->content[$language['id_lang']])) ? Tools::htmlentitiesDecodeUTF8(pSQL($this->content[$language['id_lang']], true)) : '';
                foreach (
    $fieldsArray as $field)
                {
                    if (!
    Validate::isTableOrIdentifier($field))
                        die(
    Tools::displayError());
                    if (isset(
    $this->{$field}[$language['id_lang']]) AND !empty($this->{$field}[$language['id_lang']]))
                        
    $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$language['id_lang']]);
                    elseif (
    in_array($field$this->fieldsRequiredLang))
                        
    $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]);
                    else
                        
    $fields[$language['id_lang']][$field] = '';
                }
            }
            return 
    $fields;
        }
        
        public function 
    add($autodate true$nullValues false) { 
            if(
    parent::add($autodatetrue)) {
                if(
    Module::isInstalled('newscategoriesmod')) {
                    
    $_POST['id_category'][] = $_POST['id_category_default'];
                    
    $_POST['id_category'] = array_unique($_POST['id_category']);
                    foreach(
    $_POST['id_category'] as $category_id) {
                        
    $sql '
                            INSERT INTO `' 
    _DB_PREFIX_ 'newstocategories` VALUES (
                            ' 
    intval($category_id) . ',
                            ' 
    $this->id ')';
                        
                        if(!
    Db::getInstance()->Execute($sql)) {
                            return 
    false;
                        }
                    }
                }
                
                return 
    true;
            }
            return 
    false;
        }
        
        public function 
    delete()
        {
            if(
    parent::delete()) {
                
    $sql '
                DELETE FROM `' 
    _DB_PREFIX 'newscomments` 
                WHERE `id_entry` = ' 
    $this->id;
                if(
    Db::getInstance()->Execute($sql)) {
                    return 
    true;
                }
            }
            return 
    false;
        }
        
        public function 
    toggleStatus()
        {
             if (!
    Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table)) {
                 die(
    Tools::displayError());
            } elseif (!
    key_exists('status'$this)) {
                 die(
    Tools::displayError());
             }
            return 
    Db::getInstance()->Execute('
            UPDATE `'
    .pSQL(_DB_PREFIX_.$this->table).'`
            SET `status` = !`status`
            WHERE `'
    .pSQL($this->identifier).'` = '.intval($this->id));
        }
        
        public function 
    update($nullValues false)
        {
             if(
    parent::update($nullValues)) {
                if(
    Module::isInstalled('newscategoriesmod')) {
                    
    $sql '
                    DELETE FROM `' 
    _DB_PREFIX_ 'newstocategories` 
                    WHERE `id_entry` = ' 
    intval($this->id);
                    
                    if(!
    Db::getInstance()->Execute($sql)) {
                        return 
    false;
                    }

                    
    $_POST['id_category'][] = $_POST['id_category_default'];
                    
    $_POST['id_category'] = array_unique($_POST['id_category']);
                    
                    foreach(
    $_POST['id_category'] as $category_id) {
                        
    $sql '
                        INSERT INTO `' 
    _DB_PREFIX_ 'newstocategories` VALUES (
                        ' 
    intval($category_id) . ',
                        ' 
    $this->id ')';

                        if(!
    Db::getInstance()->Execute($sql)) {
                            return 
    false;
                        }
                    }
                }
                
                return 
    true;
            }
            return 
    false;
        }
        
        public function 
    getEntryPreview($id_lang$entry_id$category_id null)
        {
            if(!
    Validate::isUnsignedInt($entry_id
                OR !
    Validate::isUnsignedInt($id_lang
                OR (
    $category_id AND !Validate::isUnsignedInt($category_id))) {
                return 
    false;
            }
            
            if(
    $category_id) {
                
    $sql '
                SELECT nw. * , nwl. * , ncl.`meta_title` AS  `category_name` , ncl.`link_rewrite` AS  `category_link` 
                FROM  `' 
    _DB_PREFIX_ 'newstocategories` ntc
                LEFT JOIN  `' 
    _DB_PREFIX_ 'news` nw ON ( nw.`id_entry` = ntc.`id_entry` ) 
                LEFT JOIN  `' 
    _DB_PREFIX_ 'news_lang` nwl ON ( nw.`id_entry` = nwl.`id_entry` ) 
                LEFT JOIN  `' 
    _DB_PREFIX_ 'newscategories` nc ON ( nc.`id_category` = ntc.`id_category` ) 
                LEFT JOIN  `' 
    _DB_PREFIX_ 'newscategories_lang` ncl ON ( nc.`id_category` = ncl.`id_category` ) 
                WHERE ntc.`id_category` = ' 
    intval($category_id) . '
                AND nc.`status` = 1
                AND nw.`status` = 1
                AND nw.`id_entry` = ' 
    intval($entry_id) . '
                AND nwl.`id_lang` = ' 
    intval($id_lang) . '
                AND ncl.`id_lang` = ' 
    intval($id_lang);
            } else {
                
    $sql '
                SELECT 
                nw.*, nwl.* 
                FROM `' 
    _DB_PREFIX_ 'news` nw
                LEFT JOIN `' 
    _DB_PREFIX_ 'news_lang` nwl 
                ON (nw.`id_entry` = nwl.`id_entry`) 
                WHERE nw.`id_entry` = ' 
    intval($entry_id) . 
                AND nw.`status` = 1
                AND nwl.`id_lang` = ' 
    intval($id_lang);
            }

            return 
    Db::getInstance()->getRow($sql);
        }

        
        public function 
    getEntryById($category_id null)
        {
            global 
    $cookie;
            if(!
    $this->id OR ($category_id AND !Validate::isUnsignedId($category_id))) {
                return 
    false;
            }
            
            if(
    $category_id) {
                
    $sql '
                SELECT nw. * , nwl. * , ncl.`meta_title` AS  `category_name` , ncl.`link_rewrite` AS  `category_link` 
                FROM  `' 
    _DB_PREFIX_ 'newstocategories` ntc
                LEFT JOIN  `' 
    _DB_PREFIX_ 'news` nw ON ( nw.`id_entry` = ntc.`id_entry` ) 
                LEFT JOIN  `' 
    _DB_PREFIX_ 'news_lang` nwl ON ( nw.`id_entry` = nwl.`id_entry` ) 
                LEFT JOIN  `' 
    _DB_PREFIX_ 'newscategories` nc ON ( nc.`id_category` = ntc.`id_category` ) 
                LEFT JOIN  `' 
    _DB_PREFIX_ 'newscategories_lang` ncl ON ( nc.`id_category` = ncl.`id_category` ) 
                WHERE ntc.`id_category` = ' 
    intval($category_id) . '
                AND nc.`status` = 1
                AND nw.`status` = 1
                AND nw.`id_entry` = ' 
    $this->id '
                AND nwl.`id_lang` = ' 
    intval($cookie->id_lang) . '
                AND ncl.`id_lang` = ' 
    intval($cookie->id_lang);
            } else {
                
    $sql '
                SELECT 
                nw.*, nwl.* 
                FROM `' 
    _DB_PREFIX_ 'news` nw
                LEFT JOIN `' 
    _DB_PREFIX_ 'news_lang` nwl 
                ON (nw.`id_entry` = nwl.`id_entry`) 
                WHERE nw.`id_entry` = ' 
    $this->id 
                AND nw.`status` = 1
                AND nwl.`id_lang` = ' 
    intval($cookie->id_lang);
            }

            return 
    Db::getInstance()->getRow($sql);
        }
        
        static public function 
    getLink($params)
        {
            
    $link false;
            
    $template = array('blog''entry''category');
            
    $tmpLink _PS_BASE_URL_ __PS_BASE_URI__;
            
    $rewrite intval(Configuration::get('PS_REWRITING_SETTINGS')) == true false;
            if(isset(
    $params['category'])) {
                if(!isset(
    $params['entry'])) {
                    
    $link $tmpLink . ($rewrite $template[0] . '/' $template[2] . '/' $params['category']['id'] . '-' $params['category']['rewrite'] . '.html' 'modules/newscore/news.php?category_id=' $params['category']['id']);
                } else {
                    
    $link $tmpLink . ($rewrite $template[0] . '/' $template[2] . '/' $params['category']['id'] . '-' $params['category']['rewrite'] . '/' $template[1] . '/' $params['entry']['id'] . '-' $params['entry']['rewrite'] . '.html' 'modules/newscore/news.php?category_id=' $params['category']['id'] . '&id_entry=' $params['entry']['id']);
                }
            } elseif(isset(
    $params['entry'])) {
                
    $link $tmpLink . ($rewrite $template[0] . '/' $template[1] . '/' $params['entry']['id'] . '-' $params['entry']['rewrite'] . '.html' 'modules/newscore/news.php?id_entry=' $params['entry']['id']);
            }
            return 
    $link;
        }
        
        
        
    /*
        static public function getCommentNumber($id_entry)
        {
            if (!Validate::isInt($id_entry)) {
            die(Tools::displayError());
            }
            $validate = intval(Configuration::get('NEWSCOMMENTS_ADGROUP'));
            if (($result = Db::getInstance()->getRow('
            SELECT COUNT(`id_entry_comment`) AS "nbr"
            FROM `'._DB_PREFIX_.'newscomments` pc
            WHERE `id_entry` = '.intval($entry_id).($validate == '1' ? ' AND `validate` = 1' : ''))) === false)
                return false;
            return intval($result['nbr']);
        }*/
        
        
        
    public function getNews($p false$n false)
        {
            global 
    $cookie;
            
    $rewrite intval(Configuration::get('PS_REWRITING_SETTINGS'));
            
    $tmpLink _PS_BASE_URL_ __PS_BASE_URI__;
             
    $sql 
            SELECT  
                  nw.`id_entry`,  
                  nw.`date_add`,  
                  nw.`id_employee`, 
                  nw.`status`, 
                  nwl.`link_rewrite`,  
                  nwl.`meta_title`,  
                  nwl.`description_short`, 
                  (SELECT COUNT(`id_entry_comment`) AS "nbr" 
                  FROM `'
    ._DB_PREFIX_.'newscomments` pc 
                  WHERE pc.`id_entry` = nw.`id_entry`) cnt 
              FROM  
                    `' 
    _DB_PREFIX_ 'news` nw 
            LEFT JOIN  
                    `' 
    _DB_PREFIX_ 'news_lang` nwl  
            ON  
                (nw.`id_entry` = nwl.`id_entry`)  
            WHERE  
                  nwl.`id_lang` = ' 
    intval($cookie->id_lang) . '  
                  AND nwl.`meta_title` != "" 
                  AND nw.`status` = 1 
            ORDER BY  
                    nw.`date_add` DESC'
    ;  
                    
            if(
    $p AND $n) {
                
    $sql .= ' LIMIT ' . ((intval($p) - 1) * intval($n)) . ',' intval($n);
            } elseif (
    $p) {
                
    $sql .= ' LIMIT ' . (intval($p));
            }
            


            
    $result Db::getInstance()->ExecuteS($sql);
            
    $links = array();

            if (
    $result)
            {
                foreach (
    $result as $row
                {
                    
    $row['link'] = self::getLink(array('entry' => array('id' => $row['id_entry'], 'rewrite' => $row['link_rewrite'])));
                    
    $links[] = $row;
                    
                }
                return 
    $links;
                
            }

            return 
    false;
        }
        
    }

    ?>

    news.php

    PHP:
    <?php
    include(dirname(__FILE__) . '/../../config/config.inc.php');
    include(
    dirname(__FILE__) . '/../../init.php');
    include_once(
    dirname(__FILE__) . '/meta.php');


    $css_files = array(
        
    __PS_BASE_URI__ 'modules/newscore/blog.css' => 'screen'
    );

    include(
    dirname(__FILE__) . '/../../header.php');

    global 
    $errors;
    $warning false;

    include_once(
    dirname(__FILE__) . '/classes/News.php');
    $newsClass = new News(Tools::getValue('id_entry'true));

    if (
    Module::isInstalled('newscategoriesmod')) {
        
    $pathToCatModule    dirname(__FILE__) . '/../newscategoriesmod/';
        
    $categoriesEnabled  true;
        
        include_once(
    $pathToCatModule '/classes/NewsCategories.php');
        
        
    $newsCategories     = new NewsCategories(Tools::getValue('category_id'false));
        
    $categoryNames      $newsCategories->getCategoryNames();
    }

    $moduleLink intval(Configuration::get('PS_REWRITING_SETTINGS')) == _PS_BASE_URL_ __PS_BASE_URI__ 'blog/' _PS_BASE_URL_ __PS_BASE_URI__ 'modules/newscore/news.php';

    if (
    Tools::getIsset('id_entry')) {
        
    $category_id Tools::getValue('category_id'false);
        if(!
    $newsCategories->id AND $categoriesEnabled) {
            
    $newsCategories->id $newsCategories->selectEntriesDefaultCategory(Tools::getValue('id_entry'));
        }

        
    $templatePath dirname(__FILE__) . '/';
        
    $template 'news-entry';

        if (!
    $data $newsClass->getEntryById($newsCategories->id)) {
            
    $errors[] = Tools::displayError('The requested page doen\'t exist');
        }

        
    $smarty->assign(array(
            
    'entry' => $data,
            
    'categoryName' => $newsCategories->id $data['category_name'] : null,
            
    'categoryLink' => ($newsCategories->id AND intval(Configuration::get('PS_REWRITING_SETTINGS')) == 1) ? $moduleLink 'category/' $newsCategories->id '-' $data['category_link'] . '.html' $moduleLink '?category_id=' intval($newsCategories->id),
            
    'HOOK_NEWS_FOOTER_CONTENT' => Module::hookExec('newsFooter')
        ));
    } else {
        if (
    $categoriesEnabled && $newsCategories->id) {
            
    $templatePath dirname(__FILE__) . '/';
            
    $template 'news-list';
            if(!
    $newsCategories->checkIfCategoryIsActive() OR !$data $newsCategories->getNews()) {
                
    $warning Tools::displayError('The requested category doesn\'t exist or empty');
            }
        } elseif (
    $categoriesEnabled && !$newsCategories->id) {
            
    $templatePath $pathToCatModule;
            
    $template 'category-list';
            
    $data $newsCategories->getCategories();
        } else {
            
    $templatePath dirname(__FILE__) . '/';
            
    $template 'news-list';
            if(!
    $data $newsClass->getNews()) {
                
    $warning Tools::displayError('No news yet');
            }
        }

        
    $nbProducts sizeof($data);
        include(
    dirname(__FILE__).'/../../pagination.php');

        if (
    $categoriesEnabled && $newsCategories->id) {
            
    $data $newsCategories->getNews($p$n);
        } elseif (
    $categoriesEnabled && !$newsCategories->id) {
            
    $data $newsCategories->getCategories($p$n);
        } else {
            
    $data $newsClass->getNews($p$n);
        }
               
            
        
        
    $smarty->assign(array(
            
    'pages_nb'      => ceil($nbProducts intval($n)),
            
    'warning'       => $warning $warning null,
            
    'nbNews'        => $nbProducts,
            
    'news'          => $data,
            
    'categoryName'  => $categoriesEnabled $newsCategories->getCurrentCategoryName() : null
        
    ));
    }
    $smarty->assign('newsLink'$moduleLink);
    $smarty->assign('errors'$errors);
    $smarty->display($templatePath $template '.tpl');
    include(
    dirname(__FILE__) . '/../../footer.php');
    ?>

    и шаблон для вывода всех новостей для категории news-list.tpl

    HTML:
    
    {if $categoryName}
    {capture name=path}<a href="{$newsLink}">{l s='News' mod='newscore'}</a><span class="navigation-pipe">{$navigationPipe}</span>{$categoryName}{/capture}
    {else}
    {capture name=path}{l s='News' mod='newscore'}{/capture}
    {/if}
    <div style="margin:0px 0px 0px -50px">
    
    <div id="news" class="newsEntries">
    	<h2 class="none"><br></h2>
    	{if isset($errors) AND $errors}
    		{include file=$tpl_dir./errors.tpl}
    	{elseif $warning}
    	<p class="warning">{$warning}</p>
    	{else}
    		{if $nbNews > 0}
    		<ul class="entriesList">
    		{foreach from=$news item=entry}
    			<li style="margin:50px 0px 100px 0px!important">
    
                        {assign var='time' value=$entry.date_add|date_format:"%d %B в %H:%M"} 				
                   <font style="color:#888888; font-family:Georgia!important; font-style:italic">{$time|replace:'January':'января'|replace:'February':'февраля'|replace:'March':'марта'|replace:'April':'апреля'|replace:'May':'мая'|replace:'June':'июня'|replace:'July':'июля'|replace:'August':'августа'|replace:'September':'сентября'|replace:'October':'октября'|replace:'November':'ноября'|replace:'December':'декабря'}</font>
    
                	<h3 style="font-size:1.0em;margin:15px 10px">
    					<a href="{$entry.link}" title="{$entry.meta_title|escape:html:'UTF-8'}" style="text-decoration:none;font-weight:bold;letter-spacing:0.1em; font-family:Verdana">{$entry.meta_title|escape:html:'UTF-8'}</a> </h3>
                    
    					
    				<div style="margin:25px 0px 10px 30px;color:black; line-height:130%;">
    				{$entry.description_short}</div>
    				<div style="margin:30px 0px 30px 0px;padding-right:60px"><a class="readMore" href="{$entry.link}">( Читать дальше )</a></div>
                    комментариев: {$entry.cnt}
                    
    			</li>
    		{/foreach}
    		</ul>
    	
    		{/if}
    	{/if}
    </div>
    </div>
    
    
    Извиняюсь за дотошность...
     
  6. rex1963

    rex1963

    Регистр.:
    19 фев 2007
    Сообщения:
    228
    Симпатии:
    47
    Установи прогу SQL Manager for MySQL, подключись к базе и отошли запрос. Посмотришь, что за данные выводятся, и идет ли вывод вообще.
    Чем приводить скриншоты, лучше бы приатачил дамп таблиц
     
  7. fafee

    fafee Постоялец

    Регистр.:
    4 окт 2008
    Сообщения:
    92
    Симпатии:
    0
    данные выводятся все, которые собираются функцией getnews, все кроме кол-ва комментариев. Дампы вот

    PHP:
    -- --------------------------------------------------------

    --
    -- 
    Структура таблицы `ti_news`
    --

    CREATE TABLE IF NOT EXISTS `ti_news` (
      `
    id_entryint(10unsigned NOT NULL auto_increment,
      `
    id_category_defaultint(10NOT NULL default '1',
      `
    id_employeeint(10unsigned NOT NULL,
      `
    statustinyint(1unsigned NOT NULL default '0',
      `
    date_adddatetime NOT NULL,
      `
    date_upddatetime NOT NULL,
      
    PRIMARY KEY  (`id_entry`)
    ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=;

    --
    -- 
    Дамп данных таблицы `ti_news`
    --

    INSERT INTO `ti_news` (`id_entry`, `id_category_default`, `id_employee`, `status`, `date_add`, `date_upd`) VALUES
    (1111'2010-05-16 12:16:17''2010-05-18 20:51:40'),
    (
    2111'2010-05-16 13:41:21''2010-05-18 21:11:20'),
    (
    3111'2010-05-16 13:42:52''2010-05-18 21:11:50');

    -- --------------------------------------------------------

    --
    -- 
    Структура таблицы `ti_newscomments`
    --

    CREATE TABLE IF NOT EXISTS `ti_newscomments` (
      `
    id_entry_commentint(10unsigned NOT NULL auto_increment,
      `
    id_entryint(10unsigned NOT NULL,
      `
    id_parentint(10unsigned NOT NULL,
      `
    usernamevarchar(32NOT NULL,
      `
    emailvarchar(128NOT NULL,
      `
    id_customerint(10unsigned NOT NULL,
      `
    contenttext NOT NULL,
      `
    validatetinyint(1NOT NULL,
      `
    date_adddatetime NOT NULL,
      
    PRIMARY KEY  (`id_entry_comment`)
    ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ;

    --
    -- 
    Дамп данных таблицы `ti_newscomments`
    --

    INSERT INTO `ti_newscomments` (`id_entry_comment`, `id_entry`, `id_parent`, `username`, `email`, `id_customer`, `content`, `validate`, `date_add`) VALUES
    (110's''de@ff.ru'0'jfkajka'1'2010-05-17 20:50:14'),
    (
    230'Олег''d@d.ru'0'12345'1'2010-05-19 18:41:38'),
    (
    14312'34''drumnbi@mail.ru'0'ffffffffffffff'1'2010-05-20 00:09:24'),
    (
    1532'аааа''fd@rrr.r'0'ffffffffffffffff'1'2010-05-20 12:31:52'),
    (
    1630'fr''re@dd.e'0'dssssssssss'1'2010-05-20 15:58:10'),
    (
    1720'Анечка''aa@bb.cc'0'ну не знаю, а че прикольно штоли?'1'2010-05-22 20:38:51'),
    (
    1230'Hohg''ff@ff.rr'0'!!!!!!!!!!!'0'2010-05-20 00:06:12'),
    (
    18217'Джон''dd@dd.ru'0'ну типо да!'1'2010-05-22 20:47:53');
     
  8. malibu

    malibu Создатель

    Регистр.:
    8 июл 2009
    Сообщения:
    20
    Симпатии:
    9
    Вроде как все должно работать, попробуйте удалить скомпилированные теплейты смарти из папки templatecache, или как у Вас в настройках указано.
     
  9. fafee

    fafee Постоялец

    Регистр.:
    4 окт 2008
    Сообщения:
    92
    Симпатии:
    0
    удалил, не помогло.
    но все равно спасибо.
     
  10. rex1963

    rex1963

    Регистр.:
    19 фев 2007
    Сообщения:
    228
    Симпатии:
    47
    А что в таблице news_lang? Вроде она тоже как бы нужна.
     
Статус темы:
Закрыта.