вывод случайного голосования через 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__);?>

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

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