вывод случайного голосования через SSI.php

Автор Roman_Grishin, 26 августа 2009, 15:32:39

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Roman_Grishin

вот, хочу с вами поделиться кодиком, я его писал сам и он до тупости простой, но знаю по себе, многие и такого не напишут, а значит может кому нибудь пригодится. Люблю SMF  smitten и всех кто его юзает)))

задача: сдлать вывод случайного голосования через ssi.php
МИНУС МОЕГО ВАРИАНТА: САМОСТОЯТЕЛЬНОЕ ЗАНЕСЕНИЕ ID ГОЛОСОВАНИЯ В ФАЙЛ
первым делом у нас должен быть файл в котором будет выводиться голосование.
в моем случае, это файл index.php (самописный, не от форума, т.к. это файл моего сайта, а не форума. форум в подпапке)
в этом файле обязательно НА ПЕРВОЙ строчке должен стоят код:

<?php require("/forumforall.net/forum/SSI.php");?>

(само собой, что ssi.php лежит в корне ФОРУМА, а не САЙТА)
если у вас форум в корне то путь такой:

<?php require("/forumforall.net/SSI.php");?>

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

<?php include 'poll.php';?><br/>

в этом примере подразуменвается, что файл poll.php находится в той же папке, что и index.php

все, сохраняем и идем создавать файл poll.php:
его содержание:

<?php  
if ($context['user']['is_guest'])
{echo 
'Этот блок так же активен только для <a href="http://forumforall.net/forum/index.php?action=register">зарегистрированных</a> пользователей</br>';
ssi_login($redirect_to='http://forumforall.net/index.php'); 
}
else
{
srand ((float) microtime() * 10000000);
$input = array ("7""1353","1791""1792"); // id топиков c голосованием 
$rand_keys array_rand ($input);
echo 
'<b>Опрос № </b>';
print  
$input[$rand_keys];
ssi_showPoll($input[$rand_keys]);
echo 
'</br><b>Пропущенное голосование:</b></br>';
ssi_recentPoll();}
?>


все, заливаем файл на хост, тестируем )) ошибок не должно быть.
надеюсь моя ламерская инструкция кому нибудь пригодится))
вообще, на моем сайте можно увидеть применение функции ssi.php в различных вариациях)
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

Цитировать
$input 
= array ("7""1353","1791""1792"); // id топиков c голосованием 
номера топиков с голосованиями можно получить из таблицы `smf_topics`, выбрать все строки, где ID_POLL != 0
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman_Grishin

Цитата: BIOHAZARD от 26 августа 2009, 18:45:58
номера топиков с голосованиями можно получить из таблицы `smf_topics`, выбрать все строки, где ID_POLL != 0

о, спасибо! но буду признателен, если вы приведете код, потому что, если я правильно понимаю, придется еще подключать к сайту коннект с базой форума?
или через ssi возможно получить эти топики?
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD


$request 
db_query("
                      SELECT t.ID_TOPIC
	
	
FROM 
{$db_prefix}topics AS t
	
	
WHERE t.ID_POLL != 0
	
	
ORDER BY t.ID_LAST_MSG DESC"
,
                      
__FILE____LINE__);

как то так
и далее разбираем массив $request при помощи mysql_fetch_assoc или ещё чего

PS: всё это НЕ проверено мною на практике
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman_Grishin

печально, я mycql плохо знаю... было бы здорово дописать эту функцию, я бы ее прикрутил к своей, получилась бы полезная штука))

в общем, если не сложно, напишите, потому что для меня эта фраза:
"и далее разбираем массив $request при помощи mysql_fetch_assoc или ещё чего"
звучит как-то ужасающе... fetch_assoc... это прям готическое заклятие какое-то)))
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

http://ru2.php.net/manual/en/function.mysql-fetch-assoc.php

также примеры использования можно найти в коде движка, оттуда собственно мой пример выше и был взят
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman_Grishin

не понятно... значит так:

$request 
db_query("
                      SELECT t.ID_TOPIC
	
	
FROM 
{$db_prefix}topics AS t
	
	
WHERE t.ID_POLL != 0
	
	
ORDER BY t.ID_LAST_MSG DESC"
,
                      
__FILE____LINE__);
while (
$row mysql_fetch_assoc($request)) {
    
$p=$row["t.ID_TOPIC"];

}

mysql_free_result($request);

$p чему равна в этом случае?
мне надо чтобы $p была массивом, который потом подставится сюда:

$input 
= array ($p); // id топиков c голосованием 

как это сделать?
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman_Grishin

Цитата: BIOHAZARD от 27 августа 2009, 19:03:41
$p[]=$row["t.ID_TOPIC"];



читай php.net!!
там все по буржуйски, мне не понятно))
слушай, а разве правильно не
$p=array($row["t.ID_TOPIC"]);
???
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Roman_Grishin

в общем, потестил...
этот запрос:

$request 
db_query("
                      SELECT t.ID_TOPIC
	
	
FROM 
{$db_prefix}topics AS t
	
	
WHERE t.ID_POLL != 0
	
	
"
,
                      
__FILE____LINE__);
while (
$row mysql_fetch_assoc($request)) {
    
$result= array($row["t.ID_TOPIC"]);
	


}

mysql_free_result($request);

не работает, и не дает работать всему сайту, из-за него сайт не грузится(((
помогите кто нибудь правильно его составить, а?...
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

лень вспоминать :о)

while ($row mysql_fetch_assoc($request)) {
    
$p[]=$row["ID_TOPIC"];
}

пробуй
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman_Grishin

не работает...

смотрите что я придумал:

echo 'стадия 1 - ОК';
$request db_query("
                      SELECT t.ID_TOPIC
	
	
FROM 
{$db_prefix}topics AS t
	
	
WHERE t.ID_POLL != 0
	
	
"
,
                      
__FILE____LINE__);
	
	
	
	
	
  echo 
'стадия 2 - ОК';
while (
$row mysql_fetch_assoc($request)) {
    
$p[]=$row["ID_TOPIC"];
	
echo 
'стадия 3 - ОК';
}
echo 
'стадия 4 - ОК';
mysql_free_result($request);
echo 
'стадия 5 - ОК';

ввел контрольный echo, чтоб отследить где обрывается... прикол в том, что выполнение скрипта дало только:
стадия 1 - ОК

и до второй стадии даже не дошло!... в чем может быть косяк?
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

всё работает

require("SSI.php");

$request db_query("
    SELECT t.ID_TOPIC
    FROM 
{$db_prefix}topics AS t 
    WHERE t.ID_POLL != 0" 
,
    
__FILE____LINE__);

while (
$row mysql_fetch_assoc($request)) $p[]=$row["ID_TOPIC"];

mysql_free_result($request);

echo 
'<pre>
Массив $p содержащий номера тем с голосованиями:
'
;
print_r($p);
echo 
'</pre>';
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman_Grishin

#13
блин... почему у меня то не работает :_(
приведу свой код, может вы разберетесь где ошибкка:
index.php  - к нему присоединяется файл с голосованием:

<div class="art-BlockContent-body">
php  include 'poll.php';?> </div>

и сам файл Poll.php

<?php require("/***/home/***/forumforall.net/***/__forum/SSI.php");
$request db_query("
    SELECT t.ID_TOPIC
    FROM 
{$db_prefix}topics AS t 
    WHERE t.ID_POLL != 0" 
,
    
__FILE____LINE__);

while (
$row mysql_fetch_assoc($request)) $p[]=$row["ID_TOPIC"];

mysql_free_result($request);

echo 
'<pre>
Массив $p содержащий номера тем с голосованиями:
'
;
print_r($p);
echo 
'</pre>';
if (
$context['user']['is_guest'])
{echo 
'Этот блок так же активен только для <a href="http://forumforall.net/__forum/index.php?action=register">зарегистрированных</a> пользователей</br>';
ssi_login($redirect_to='http://forumforall.net/index.php');  
}
else 
{
echo 
'Список тем с голосованиями: </br>';
print_r($p);?>

это вариант, который не работает...

вот этот файл poll.php работает:

<?php  
if ($context['user']['is_guest'])
{echo 
'Этот блок так же активен только для <a href="http://forumforall.net/__forum/index.php?action=register">зарегистрированных</a> пользователей</br>';
ssi_login($redirect_to='http://forumforall.net/index.php'); flush(); 
}
else
{

srand ((float) microtime() * 10000000);
$input = array ("7""1353","1791""1792"); // id топиков c голосованием 
$rand_keys array_rand ($input);
echo 
'<b>Опрос № </b>';
print  
$input[$rand_keys];
ssi_showPoll($input[$rand_keys]);
ssi_recentPoll();
}
?>
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Roman_Grishin

вот, решил сделать еще проще:
чтобы доказать что ничего не работает...
я создал левый файл - 2poll.php
его содержание такое, как вы мне сказали + мои вставки ECHO для отлавливания нерабочих кусков + прикрепил к файлу SSI:

<?php require("/***/***/***/forumforall.net/***/forum/SSI.php");
echo 
'Стадия: 1 - ОК</br>';
$request db_query("
  SELECT t.ID_TOPIC
    FROM 
{$db_prefix}topics AS t 
    WHERE t.ID_POLL != 0" 
,
   
__FILE____LINE__);
echo 
'Стадия: 2 - ОК</br>';
while (
$row mysql_fetch_assoc($request)) ;
echo 
'Стадия: 3 - ОК</br>';
$p=array $row["ID_TOPIC"];
echo 
'Стадия: 4 - ОК</br>';
mysql_free_result($request);
echo 
'Стадия: 5 - ОК</br>';
print_r($p);
echo 
'Все стадии завершены успешно!';
?>


этот файл вы можете запустить по адресу: http://forumforall.net/2poll.php
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Drakonsa

if (!require("/***/***/***/forumforall.net/***/forum/SSI.php")) echo 'woops we have trouble';

Roman_Grishin

Цитата: Drakonsa от 29 августа 2009, 13:27:46
if (!require("/***/***/***/forumforall.net/***/__forum/SSI.php")) echo 'woops we have trouble';
ща проверю...

нифига не выходит! пустой лист : http://forumforall.net/2poll.php
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Roman_Grishin

прикол, на официальном сайте СМФ - в моей версии форума вообще нет такой функции db_query() ...
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

во второй ветке отсутствует функция db_query, там свои замуты какие то, я пока не могу разобрать синтаксис

приведённый мною выше код отлично работает на smf 1.1.10, но для второй ветки он бесполезен
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

BIOHAZARD

победил вроде
почему сразу не получалось, так и не понял


$request 
$smcFunc['db_query']('''
	
SELECT id_topic
	
FROM {db_prefix}topics
	
WHERE id_poll != 0'
,
	
array()
	
);
$polls = array();
while (
$row $smcFunc['db_fetch_assoc']($request))
$polls[] = $row['id_topic'];
$smcFunc['db_free_result']($request);
	
	
	

echo 
'<pre>';
print_r($polls); 
echo 
'</pre>';
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman_Grishin

в общем, мой код - готовый вариант:

require("/***/***/***/forumforall.net/***/forum/SSI.php");
$request $smcFunc['db_query']('''
	
SELECT id_topic
	
FROM {db_prefix}topics
	
WHERE id_poll != 0'
,
	
array()
	
);
$polls = array();
while (
$row $smcFunc['db_fetch_assoc']($request))
$polls[] = $row['id_topic'];
$smcFunc['db_free_result']($request);
if (
$context['user']['is_guest'])
{echo 
'Этот блок так же активен только для <a href="http://forumforall.net/forum/index.php?action=register">зарегистрированных</a> пользователей</br>';
ssi_login($redirect_to='http://forumforall.net/index.php');  
}
else
{
// Генерируем случайный индекс массива 
  
$index rand(0,count($polls) - 1); 

echo 
'<b>Опрос № </b>';
echo 
$polls[$index];
ssi_showPoll($polls[$index]);
ssi_recentPoll();
}
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Roman_Grishin

поправка - код не совсем мой - СПАСИБО BIOHAZARD!
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

GD

Решила использовать Ваш код, но к сожалению в php и mySQL неразбираюсь((
После того как сделал все необходимые изменения в index.php и создала файл poll.php.
появляется ошибка

Fatal error: Function name must be a string in /......./forum/poll.php on line
в строке

$request = $smcFunc['db_query']('', '

помогите исправить ошибку  :)

Roman_Grishin

Цитата: GD от 09 ноября 2009, 16:45:29
Решила использовать Ваш код, но к сожалению в php и mySQL неразбираюсь((
После того как сделал все необходимые изменения в index.php и создала файл poll.php.
появляется ошибка

Fatal error: Function name must be a string in /......./__forum/poll.php on line
в строке

$request = $smcFunc['db_query']('', '

помогите исправить ошибку  :)
а у Вас портал? Или вы форумный файл index.php исправили?
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

GD

Я хочу вывести голосование в самое начало форума. Поэтому я правила файл index.template.php

Roman_Grishin

т.е. на первой строчке файла index.template у вас прописано: equire("/***/***/***/forumforall.net/***/__forum/SSI.php");
то есть, путь до вашего файла ssi.php

так?

а далее, в том месте, где вы хотите вывести голосование:

$request 
$smcFunc['db_query']('''
	
SELECT id_topic
	
FROM {db_prefix}topics
	
WHERE id_poll != 0'
,
	
array()
	
);
$polls = array();
while (
$row $smcFunc['db_fetch_assoc']($request))
$polls[] = $row['id_topic'];
$smcFunc['db_free_result']($request);
if (
$context['user']['is_guest'])
{echo 
'Этот блок так же активен только для <a href="http://forumforall.net/__forum/index.php?action=register">зарегистрированных</a> пользователей</br>';
ssi_login($redirect_to='http://forumforall.net/index.php');  
}
else
{
// Генерируем случайный индекс массива 
  
$index rand(0,count($polls) - 1); 

echo 
'<b>Опрос № </b>';
echo 
$polls[$index];
ssi_showPoll($polls[$index]);
ssi_recentPoll();
}

так?

и не работает?

и еще, не забудте поменять везде forumforall.net на адрес вашего форума! :-)
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman_Grishin

Цитата: BIOHAZARD от 10 ноября 2009, 10:33:07
// Don't do anything if SMF is already loaded.
if (defined('SMF'))
return true;

эм... мы что-то не так делаем, да?...
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

если что, так это кусок из файла SSI
т.е. SSI не будет работать (да, совсем) из файлов форума
там вместо этого надо использовать стандартные функции форума
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

GD

Цитироватьт.е. на первой строчке файла index.template у вас прописано: equire("/***/***/***/forumforall.net/***/__forum/SSI.php");
то есть, путь до вашего файла ssi.php

так?

а далее, в том месте, где вы хотите вывести голосование:

Я сделала немножко иначе. Так как Вы описали выше.
В файл index.template.php
вставила строчку
include 'poll.php';
а в poll.php
уже сам код

ошибка Fatal error: Function name must be a string in /......./__forum/poll.php on line
в строке

$request = $smcFunc['db_query']('', '


может там что-то с синтаксисом не правильно?

Roman_Grishin

не правильно то, как сказал BIOHAZARD, что в самом форуме нельзя использовать ssi, а файл poll.php как раз его использует.
Для форума придется писать немного другой запрос, которые не затрагивает ssi. или BIOHAZARD или я напишем вам его, попозже...
мой способ работает только для порталов...
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

GD


Freeizer

Все получается. Использовал вариант похожий на вариант, описанный в первом посте.

Создал файл vote.php примерного содержания:

<?php  
if ($context['user']['is_guest'])
{echo 
'<small>Этот блок активен только для <a href="http://chernushka.net/index.php?action=register">зарегистрированных</a> пользователей/br>';
}
else
{
echo 
'<small>';
srand ((float) microtime() * 10000000);
$input = array ("7""1353","1791""1792"); // id топиков c голосованием 
$rand_keys array_rand ($input);
ssi_showPoll($input[$rand_keys]);
ssi_recentPoll();}
echo 
'</small>';
?>


После же в файле темы оформления index.template.php прописал путь на инклуд vote.php (вариант с моим форумом):

include '/home/freeizer/public_html/vote.php';

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



Roman_Grishin

Цитата: Freeizer от 28 декабря 2009, 23:48:17
Все получается. Использовал вариант похожий на вариант, описанный в первом посте.

Создал файл vote.php примерного содержания:

<?php  
if ($context['user']['is_guest'])
{echo 
'<small>Этот блок активен только для <a href="http://chernushka.net/index.php?action=register">зарегистрированных</a> пользователей/br>';
}
else
{
echo 
'<small>';
srand ((float) microtime() * 10000000);
$input = array ("7""1353","1791""1792"); // id топиков c голосованием 
$rand_keys array_rand ($input);
ssi_showPoll($input[$rand_keys]);
ssi_recentPoll();}
echo 
'</small>';
?>


После же в файле темы оформления index.template.php прописал путь на инклуд vote.php (вариант с моим форумом):

include '/home/freeizer/public_html/vote.php';

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

мы же доработали мой вариант, у вас цитированная старая версия скрипта, а новый с запросом к БД, там не надо в файле ID топиков прописывать, они автоматически выбираются из БД... так же удобнее
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Freeizer

Ну... а новый вообще рабочий? Кто реально проверял? У меня не вышло прикрутить.

Roman_Grishin

Цитата: Freeizer от 29 декабря 2009, 00:55:54
Ну... а новый вообще рабочий? Кто реально проверял? У меня не вышло прикрутить.
именно новый у меня на портале работает как часы (не в смысле время показывать, а в смысле четко и без сбоев  idiot Подпись: Капитан Очевидность)

Если не получилось прикрепить, то опишите что делали и каков результат - есть ли ошибки при выполнении, и.т.п.
Версию форума напишите, там оказывается запросы по разному надо оформлять
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Freeizer


Roman_Grishin

не удивительно, что вариант со SQL не работает, потому что этот запрос написан под SMF 2 ветки а не 1... там другая структура запросов.

вот запрос под 1.1.11 должен работать:

$request 
db_query("
    SELECT t.ID_TOPIC
    FROM 
{$db_prefix}topics AS t 
    WHERE t.ID_POLL != 0" 
,
    
__FILE____LINE__);

while (
$row mysql_fetch_assoc($request)) $p[]=$row["ID_TOPIC"];

mysql_free_result($request);

echo 
'<pre>
Массив $p содержащий номера тем с голосованиями:
'
;
print_r($p);
echo 
'</pre>';


подставь его к коду, поменяй под себя, должно работать
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Freeizer

Или я профан полный или что-то другое. Не выходит. Выдает 504 ошибку.

Roman_Grishin

вот полностью готовый файл, протестируйте:

<?php require("/forum/SSI.php"); 
$request db_query("
    SELECT t.ID_TOPIC
    FROM 
{$db_prefix}topics AS t 
    WHERE t.ID_POLL != 0" 
,
    
__FILE____LINE__);

while (
$row mysql_fetch_assoc($request)) $p[]=$row["ID_TOPIC"];

mysql_free_result($request);

$polls $p;
while (
$row $smcFunc['db_fetch_assoc']($request))
$polls[] = $row['id_topic'];
$smcFunc['db_free_result']($request);
// Генерируем случайный индекс массива 
  
$index rand(0,count($polls) - 1); 

echo 
'<b>Код опроса : </b>';
echo 
$polls[$index];
ssi_showPoll($polls[$index]);
echo 
'</br></br>';
ssi_recentPoll();

?>
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Freeizer

#40
Выдает:
через отдельно созданный файл:

Fatal error: Function name must be a string in /home/freeizer/public_html/forum/vote.php on line 13

На форуме:

Fatal error: Cannot redeclare ssi_shutdown() (previously declared in /home/freeizer/public_html/forum/SSI.php:192) in /home/freeizer/public_html/forum/SSI.php on line 194


В моём случае голосование в сам форум встраиваться должно.

Roman_Grishin

Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Freeizer

#42
Собственно все работает:

$request = db_query("
    SELECT t.ID_TOPIC
    FROM {$db_prefix}topics AS t
    WHERE t.ID_POLL != 0" ,
    __FILE__, __LINE__);

while ($row = mysql_fetch_assoc($request)) $p[]=$row["ID_TOPIC"];

mysql_free_result($request);

$polls = $p;
$index = rand(0,count($polls) - 1);
ssi_showPoll($polls[$index]);

Но из под форума, никак. Можно попробовать вставить через фрейм.

И еще ... выводятся все голосования подряд, хотелось бы, что бы отображались только те, в которых не голосовал.

Roman_Grishin

из под форума не будет работать, т.к. там не через SSI надо делать...
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Roman_Grishin

из под форума, я думаю, надо взять этот код

$request 
db_query("
    SELECT t.ID_TOPIC
    FROM 
{$db_prefix}topics AS t 
    WHERE t.ID_POLL != 0" 
,
    
__FILE____LINE__);

while (
$row mysql_fetch_assoc($request)) $p[]=$row["ID_TOPIC"];

mysql_free_result($request);

$polls $p;
$index rand(0,count($polls) - 1); 

потом выполнить такой вот запрос:

$request 
db_query("
    SELECT t.ID_TOPIC
    FROM 
{$db_prefix}topics AS t 
    WHERE t.ID_POLL != 
$index,
    
__FILE____LINE__);

результатом запроса будет рэндомная тема с голосованием, а вот как ее вывсети в виде голосования, я не знаю... надо капать в ффайле который темы выводит, оттуда брать код
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

digger®

Цитата: Roman_Grishin от 05 января 2010, 20:47:58
из под форума, я думаю, надо взять этот код

$request 
db_query("
    SELECT t.ID_TOPIC
    FROM 
{$db_prefix}topics AS t 
    WHERE t.ID_POLL != 0" 
,
    
__FILE____LINE__);

while (
$row mysql_fetch_assoc($request)) $p[]=$row["ID_TOPIC"];

mysql_free_result($request);

$polls $p;
$index rand(0,count($polls) - 1); 

потом выполнить такой вот запрос:

$request 
db_query("
    SELECT t.ID_TOPIC
    FROM 
{$db_prefix}topics AS t 
    WHERE t.ID_POLL != 
$index,
    
__FILE____LINE__);

результатом запроса будет рэндомная тема с голосованием, а вот как ее вывсети в виде голосования, я не знаю... надо капать в ффайле который темы выводит, оттуда брать код

Результатом будет ерунда.

Roman_Grishin

Цитата: digger от 05 января 2010, 21:47:07
Результатом будет ерунда.
конечно, новая версия линукса наврятли получится из такого запроса, но то что он выдаст id случайной темы с голосованием - это 100%
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

digger®

Цитата: Roman_Grishin от 05 января 2010, 22:27:41
конечно, новая версия линукса наврятли получится из такого запроса, но то что он выдаст id случайной темы с голосованием - это 100%

200% что он выдаст список ВСЕХ тем форума кроме одной, ID которой тоже никак не связан с голосованиями.

BIOHAZARD

да я вот тоже сомневаюсь в работоспособности
у вас
Цитата: Roman_Grishin от 05 января 2010, 20:47:58
из под форума, я думаю, надо взять этот код

$index 
rand(0,count($polls) - 1); 
...
    
WHERE t.ID_POLL != $index"

и вот этот кусок меня смущает

к тому же гораздо проще сразу взять случайную тему сразу из мускула, что-то вроде
$request db_query("
    SELECT t.ID_TOPIC
    FROM 
{$db_prefix}topics AS t 
    WHERE t.ID_POLL != 0 ORDER by RAND() LIMIT 1" 
,
    
__FILE____LINE__);

работоспособность данного запроса не проверял
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

digger®

Цитата: BIOHAZARD от 06 января 2010, 08:38:10
да я вот тоже сомневаюсь в работоспособности
у васи вот этот кусок меня смущает

к тому же гораздо проще сразу взять случайную тему сразу из мускула, что-то вроде
$request db_query("
    SELECT t.ID_TOPIC
    FROM 
{$db_prefix}topics AS t 
    WHERE t.ID_POLL != 0 ORDER by RAND() LIMIT 1" 
,
    
__FILE____LINE__);

работоспособность данного запроса не проверял

Работать будет.
Проще, но такой способ не кошерный.

Roman_Grishin

Цитата: digger от 06 января 2010, 08:29:19
200% что он выдаст список ВСЕХ тем форума кроме одной, ID которой тоже никак не связан с голосованиями.
я прислал код который у меня работает, при том как надо и без глюков, но если 200% то тут конечно не поспоришь...
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

digger®

Цитата: Roman_Grishin от 06 января 2010, 08:49:20
я прислал код который у меня работает, при том как надо и без глюков, но если 200% то тут конечно не поспоришь...

Он работает и без глюков. Но делает совсем не то что нужно :)

Roman_Grishin

у меня отличия только в последнем запросе, у меня его вообще нет:

$request 
db_query("
    SELECT t.ID_TOPIC
    FROM 
{$db_prefix}topics AS t 
    WHERE t.ID_POLL != 
$index,
    
__FILE____LINE__);

потому что переменная $index используется в ssi_showPoll($polls[$index]);
и работает так: выводит одно случайное голосование... может я блондинка ((( блин, запутался...
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄