Перейти к содержимому
Русский язык для Invision Community 5

SQL код в html

Вопрос к программистам sql

 

каким образом преобразовать sql запрос к БД:

 

 

        if( count($data['topic_data']) )
       {
           $reps = array();
           $tids = array_keys( $data['topic_data'] );

           $this->DB->build( array(
               'select'   => 'rc.rep_points',
               'from'     => array('reputation_cache' => 'rc'),
               'add_join' => array(
                   0 => array(
                       'select' => 'p.topic_id',
                       'from'   => array('posts' => 'p'),
                       'where'  => 'rc.type_id=p.pid',
                       'type'   => 'inner',
                   ),
               ),
               'where'    => 'p.topic_id IN ('.implode(',', $tids).') AND rc.app="forums"',
               'group'    => 'p.topic_id',
               'order'    => 'p.pid ASC',
           ) );

           $this->DB->execute();

           while( $row = $this->DB->fetch() )
           {
               $reps[ $row['topic_id'] ] = $row['rep_points'];
           }

           foreach( $tids as $v )
           {
               $data['topic_data'][$v]['rep_firstpost'] = ( $reps[$v] ) ? $reps[$v] : 0;
           }
       }

 

 

(благодарность за код siv1987)

 

в вариант для вставки в html (шаблон страницы IP.Content) По примеру кода-запроса к БД

 

 

 

<if test="intval($record['record_topicid'])">
<if test="($forum = $this->DB->buildAndFetch( array('select' => 'f.id, f.name, f.name_seo', 'from' => array('forums' => 'f'), 'where' => 'f.id=t.forum_id', 'add_join' => array( array('from' => array('topics' => 't'), 'where' => 't.tid='.$record['record_topicid'])))))!==FALSE">
{$forum['name']}
</if>
</if>

 

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

  • Автор

 

<php>
$_data = $this->DB->buildAndFetch( array(
'select' => 'p.topic_id',
'from'   => array('posts' => 'p'), 
'where'  => 'p.topic_id='.$record['record_topicid'].' AND rc.type="pid"';
'add_join' => array( 
	array(
		'select' => 'rc.rep_points',
		'from'   => array('reputation_cache' => 'rc'), 
		'where'  => 'rc.type_id=p.pid';
	)
)
);
</php>

 

Вроде бы все верно, что то подобное и хотел сконструировать... но от чего то выдается синтаксическая ошибка со ссылкой на page.php ip.content`а

 

[Tue Jan 22 17:22:44 2013] [error] [client 12.222.54.132] PHP Parse error:  syntax error, unexpected ';', expecting ')' in /var/www/gogo/data/www/***.ru/forums/admin/applications_addon/ips/ccs/sources/pages.php(419) : eval()'d code on line 2343

[Tue Jan 22 17:22:44 2013] [error] [client 12.222.54.132] PHP Fatal error:  Class 'skin_ccs' not found in /var/www/gogo/data/www/***.ru/forums/admin/applications_addon/ips/ccs/sources/pages.php on line 421

[Tue Jan 22 17:22:44 2013] [error] [client 12.222.54.132] PHP Parse error:  syntax error, unexpected ';', expecting ')' in /var/www/gogo/data/www/***.ru/forums/admin/applications_addon/ips/ccs/sources/pages.php(419) : eval()'d code on line 2343, referer: http://***.ru/

[Tue Jan 22 17:22:44 2013] [error] [client 12.222.54.132] PHP Fatal error:  Class 'skin_ccs' not found in /var/www/gogo/data/www/***.ru/forums/admin/applications_addon/ips/ccs/sources/pages.php on line 421, referer: http://***.ru/

 

строка 419 page.php

 

	419.	eval( $skinFile['cache_content'] );

	421.		$this->registry->output->compiled_templates['skin_ccs']	= new skin_ccs( $this->registry );
	}
}

'rc.type_id=p.pid';

AND rc.type="pid"';

 

; в конце замените на ,

 

А ); замените на ));

Там не хватает одной скобки.

  • Автор

 

'rc.type_id=p.pid';

";" в конце замените на ","

 

 

Белый экран и все та же ошибка в логах. Не помогает.

Оригинальный запрос исправлен. Скопируйте еще раз.

  • Автор

Синтаксис верный, результатов нет.. :( Спасибо, вам @siv1987, за помощь, и так уже достал просьбами.

Покажите результат кода print_r( $record );

В шаблоне где вы вставляете запрос к бд

  • Автор

Покажите результат кода <php>print_r( $record );</php>

В шаблоне где вы вставляете запрос к бд

 

Был неправ. Подтянулась репутация, но только для первого продвинутого поста на главную ccs, остальные выдвинутые без репы.

 

[primary_id_field] => 39 
[member_id] => 2 
[record_saved] => 1358746186 
[record_updated] => 1358746186 
[rating_real] => 0 
[rating_hits] => 0 
[rating_value] => 0 
[category_id] => 1 
[record_locked] => 0 
[record_comments] => 0 
[record_views] => 1 
[record_approved] => 1 
[record_pinned] => 0 
[record_dynamic_furl] => a-vse-tak-horosho-nachinalos 
[record_static_furl] => 
[record_meta_keywords] => 
[record_meta_description] => 
[record_template] => 0 
[record_topicid] => 33 

  • Автор

Понял, подтягивает если есть репутация. При 0 не подтягивает, но это не принципиально. :rolleyes: обнял-расцеловал!

$_data['rep_points'] = intval( $_data['rep_points'] );

 

Добавить после sql запроса.

  • Автор

Теперь и с 0 работает. Гранд муррси!

  • Автор

$_data['rep_points'] = intval( $_data['rep_points'] );

 

Добавить после sql запроса.

 

Хмм...вчера с нулем рейтинг показывало, а сегодня чего то нет... Верно вставил?

 

$_data = $this->DB->buildAndFetch( array(
   'select' => 'p.topic_id',
   'from'   => array('posts' => 'p'), 
   'where'  => 'p.topic_id='.$record['record_topicid'].' AND rc.type="pid"',
   'add_join' => array( 
       array(
           'select' => 'rc.rep_points',
           'from'   => array('reputation_cache' => 'rc'), 
           'where'  => 'rc.type_id=p.pid',
       )
   )
) );
{$_data['rep_points'] = ( $_data['rep_points'] ) ? $_data['rep_points'] : 0;}

Фигурные скобки уберите, это php код. Они нужны только в html коде для обрамления переменных.

  • Автор

:unsure: все равно не показывает...

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.