Перейти к контенту
  • 0

Опрос на главной страничке сайта


Вопрос

Люди плиз помогите, я в Php не силён, но догадываюсь что нуна написать запрос к базе или что-то в этом роде. Может кто делал такое помогите. Мне нужен опрос с форума поместить на главной страничке сайта.
Ссылка на комментарий
Поделиться на других сайтах

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

  • 0
Номера лутше самому указывать так как это не даст опросам из скрытых топиков вылезти на сайт. + не всё опросы интерестны.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Номера лутше самому указывать так как это не даст опросам из скрытых топиков вылезти на сайт. + не всё опросы интерестны.

 

Щас пожди, кофе себе приготовлю и напишу :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

:D Можешь ещё и поесть, я не возражаю. ;)

Кстати если ты это напишешь то оно вполне заслуживает на место в архиве модов. Там есть 1 такой про вывод последних тем на сайт. И ничего про опрос нету. Причём на инвизионайзе я тоже ничего про опрос на сайт не нашёл.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Наслаждайся:

 

<?php

$link = mysql_connect("хост", "логин", "пароль")
	or die("Could not connect: " . mysql_error());

print ("Connected successfully<br /><br />");
mysql_select_db('имя БД', $link) or die ('Can\'t use db : ' . mysql_error());

$mas = array('0'=>'108','1'=>'109','2'=>'110'); //Генерируем массив номеров нужных опросов
$n = (mt_rand(0,2)); //Случайно выбираем номер опроса

$all = mysql_query("SELECT * FROM ibf_polls WHERE pid='$mas[$n]'"); //Выбираем из базы этот опрос
while ($all_row = mysql_fetch_array($all, MYSQL_ASSOC))
{
$poll_answers = unserialize(stripslashes($all_row['choices']));
echo('Опрос №'.$all_row['tid'].' "'.$all_row['poll_question'].'"<br />');
for ($i=1;$i<=count($poll_answers);$i++)
{
	if (isset($poll_answers[$i]['question']))
	{
		echo($poll_answers[$i]['question']);
		echo('<br />');
	}
	$mas = array(); //Ну... переменная $mas больше не нужна для хранения номеров всех массивов, потому используем ещё для храния опроса
	for ($j=1;$j<=count($poll_answers[$i]['choice']);$j++)
	{
		$mas[$poll_answers[$i]['choice'][$j]] = $poll_answers[$i]['votes'][$j];  
	}
	asort($mas); //Стандартная сортировка по возрастанию
	reset($mas);
	$mas = array_reverse($mas); //МЕняем местами элементы - теперь по убыванию :)
	foreach ($mas as $k => $j)
	{
		echo($k.'===>'.$j.'<br>'); //Вывод на экран
	}
echo('<br />');
}
}
mysql_close($link);

?>

 

 

По поводу архива модов, можешь оформить и выложить :D)))))

Я седня после обеда уезжаю и инета у меня не будет где то месяц :!:, потому, извини, но от меня техподдержки пока не будет.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ок, мегасенкс. Тоесть мегамега сенкс.

А у меня сгорел дом весной поэтому этим летом я особо никуда ездить небуду... :D Зато интернет будет.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
:D "Connected successfully" а дальше белый лист... Обломно. И не понятно почему. Кстати у меня стоит мод который розширяет возможности стандартного опроса предоставляя возможность выбирать несколько пунктов а также открыто голосовать (видно кто). Может из-за этого? Кто тут ещё в пхп понимает?
Ссылка на комментарий
Поделиться на других сайтах

  • 0
:D "Connected successfully" а дальше белый лист... Обломно. И не понятно почему. Кстати у меня стоит мод который розширяет возможности стандартного опроса предоставляя возможность выбирать несколько пунктов а также открыто голосовать (видно кто). Может из-за этого? Кто тут ещё в пхп понимает?

 

Так я ещё не уехал...

 

$mas = array('0'=>'108','1'=>'109','2'=>'110'); //Генерируем массив номеров нужных опросов

 

Ты эту строку то под себя сделал?

108, 109, 110 - это номера опросов, у тебя то они какие то свои...

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Да, конечтно делал. Я исползовал файл с кодом с 11 поста. Там он сразу выдаёт номера опросов. Потом вставил эти номера в твой последний код но ничего не вышло. ЗЫ: ты уже уехал? :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Да, конечтно делал. Я исползовал файл с кодом с 11 поста. Там он сразу выдаёт номера опросов. Потом вставил эти номера в твой последний код но ничего не вышло. ЗЫ: ты уже уехал? :D

 

Уехал, но уже приехал ;)

 

А можешь выложить здесь полный код, который ты запускаешь?

Или в личку кинь...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

ХАХАХА! А я завтра уезжаю. :D Код кину здесь, пусть эта тема будет служить разбором данной фичи.

 

<?php

$link = mysql_connect("localhost", "eskimosi_root", ":)")
	or die("Could not connect: " . mysql_error());

print ("Connected successfully<br /><br />");
mysql_select_db('eskimosi_forum', $link) or die ('Can\'t use db : ' . mysql_error());

$mas = array('0'=>'133','1'=>'144','2'=>'87'); //Генерируем массив номеров нужных опросов
$n = (mt_rand(0,2)); //Случайно выбираем номер опроса

$all = mysql_query("SELECT * FROM ibf_polls WHERE pid='$mas[$n]'"); //Выбираем из базы этот опрос
while ($all_row = mysql_fetch_array($all, MYSQL_ASSOC))
{
$poll_answers = unserialize(stripslashes($all_row['choices']));
echo('Опрос №'.$all_row['tid'].' "'.$all_row['poll_question'].'"<br />');
for ($i=1;$i<=count($poll_answers);$i++)
{
	if (isset($poll_answers[$i]['question']))
	{
		echo($poll_answers[$i]['question']);
		echo('<br />');
	}
	$mas = array(); //Ну... переменная $mas больше не нужна для хранения номеров всех массивов, потому используем ещё для храния опроса
	for ($j=1;$j<=count($poll_answers[$i]['choice']);$j++)
	{
		$mas[$poll_answers[$i]['choice'][$j]] = $poll_answers[$i]['votes'][$j];
	}
	asort($mas); //Стандартная сортировка по возрастанию
	reset($mas);
	$mas = array_reverse($mas); //МЕняем местами элементы - теперь по убыванию :)
	foreach ($mas as $k => $j)
	{
		echo($k.'===>'.$j.'<br>'); //Вывод на экран
	}
echo('<br />');
}
}
mysql_close($link);

?>

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Хм.... Ты же сам вроде говорил что определенный опрос тебе надо, а выбираешь ВСЕ. Потому и не работает.

 

Строку

$all = mysql_query("SELECT * FROM ibf_polls WHERE pid='$mas[$n]'"); //Выбираем из базы этот опрос

исправлять то не надо было.

Ну то есть надо только '$mas[$n]' на номер опроса заменить, а не убирать совсем....

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Я щас внимательно посмотрел на код и моего 36 сообщения. Это тоже что ты написал в 11. Сорри. Просто тебя давно небыло и я забыл уже что я и где делал. Щас поменяю.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Я щас внимательно посмотрел на код и моего 36 сообщения. Это тоже что ты написал в 11. Сорри. Просто тебя давно небыло и я забыл уже что я и где делал. Щас поменяю.

 

Если не сработает, то извиняюсь со своей стороны, я сам долго код не смотрел, а протестировать щас негде... :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Всё, изменил, читай ещё раз мой 36 пост. В результате ничего кроме первой надписи не отображаеться. Вообщем вот http://www.eskimosi.in.ua/forum/test.php

 

У меня есть хост где я могу дать тебе доступ, просто нету файлов форума чтоб туда залить.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Да лучше я числа 30-го где то наконец то до своего сервера добирусь и нормально всё просмотрю, а то щас на модеме на ужасной скорости сижу.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
О! ЭТО УЖАСНО! Я ЭТО ЗНАЮ! Лана, щасливо тебе отдохнуть и мне тоже. :D До сентября.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Такс. Это свершилось - я добрался до кода.

Отвечаю на код поста 36.

Он правильный. Полностью.

Раз он коннектит, но ничего не выводит - то проверь следующее:

$mas = array('0'=>'133','1'=>'144','2'=>'87');

Правильные ли это номера опросов: 87, 133 и 144. (поле pid в таблице ibf_polls).

Правилен ли префикс таблиц. ( может у тебя не ibf_ )

Работает ли функция mt_rand. (для этого например напиши echo($n); после $n = (mt_rand(0,2)); и посмотри что выводится.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Всё ок. Просто я пользовалься тем кодом с 11 поста. А он выдаёт не pid a tid. Поэтому и не получалось. Теперь всё ок. Осталось поработать над оформлением что я щас и делаю. Пытаюсь зделать его красивым.

 

Ещё одна проблема: как его выводить на сайт? Если пихануть его в ифрейм то там нету функции авторесайза и поэтому ифрейм будет всегда одинаковым независимо от текста в нём. Чем ещё можно выводить?

 

ЗЫ: ещё надо добавить внизу количество проголосовавших в данном опросе.

ЗЫ: как его взять в таблицу? Где ёё начинать? Где кончать? Чтобы верхняя ячейка была названием, а дальше 2 столбца: вариант ответа - количество голосов. Потом общее количество проголосовавших уже можно не в таблице.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Всё ок. Просто я пользовалься тем кодом с 11 поста. А он выдаёт не pid a tid. Поэтому и не получалось. Теперь всё ок. Осталось поработать над оформлением что я щас и делаю. Пытаюсь зделать его красивым.

ОК

 

Ещё одна проблема: как его выводить на сайт? Если пихануть его в ифрейм то там нету функции авторесайза и поэтому ифрейм будет всегда одинаковым независимо от текста в нём. Чем ещё можно выводить?

Не понял проблему. А почему нельзя вывести прям сами переменные с тегами. (не видел системы вашего сайта, потому хз)

 

ЗЫ: ещё надо добавить внизу количество проголосовавших в данном опросе.

Вообще в таблице ibf_polls форума есть поле, где число проголовавших сохраняется, но как показывает практика, часто хранится это число криво (не то, что на самом деле), потому лучше подсчитывать его прямо в цикле, где у меня вывод реализован.

 

ЗЫ: как его взять в таблицу? Где ёё начинать? Где кончать? Чтобы верхняя ячейка была названием, а дальше 2 столбца: вариант ответа - количество голосов. Потом общее количество проголосовавших уже можно не в таблице.

 

Вот пример посмотри (готовый файл) :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>

<table border="1" width="300" height="100">
<tr>
	<td colSpan=2 width="100%">Опрос "Про сайт"</td>
	<td></td>
</tr>
<tr>
	<td width="50%">Да!</td>
	<td width="50%">2 голоса</td>
</tr>
<tr>
	<td width="50%">Нет!</td>
	<td width="50%">4 голоса</td>
</tr>
<tr>
	<td colSpan=2 width="100%">Всего проголосовало - 6 человек</td>
	<td></td>
</tr>
</table>

</BODY>
</HTML>

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Лол. Я же не полный придурок. Я в штмл хорошо понимаю. (всётаки целый сайт написал) Я просто не понимаю как в твой пхп код вписать таблицу так как в пхп я понимаю только методом тыка.

 

Насчёт вывода на сайт. У меня сайт написан в штмл. Поэтому такой мод надо вставлять туда чемто типа фрейма. Тоесть чтобы этот код был отдельным файлом а я лишь вписываю в ифрэйм адрес к файлу и тот отображается. Вот к примеру так у меня выглядить вставленый пхп файл который отображает последние сообщения на форуме:

<table width=100% height=100% bgcolor=FFFFFF border=3 cellpadding=4 cellspacing=2>
<tr><td align=center style="font-size: 14pt" background="/img/title_bg.gif"><b>Последнее на <a href="forum" target="_blank" title="Форум...">форуме:</b></td></tr>
<tr><td>
<iframe src="http://www.eskimosi.in.ua/forum/latest_posts.php" width=100% height=1100 scrolling="no" frameborder="0"></iframe>
</table>
</td>

 

Как видишь это таблица с ифреймом внутри. В ифрейме ссылка на latest_posts.php. Но у ифрейма задана высота 1100, но если текст в нём меняеться получаэться что иногда много пустого места либо наоборот часть текста обрезана. По-этому ифрейм не годиться. А тогда как?

 

С тем файлом легко работать так как там понятно где вывод. Там внутри пхп файла есть такое:

<a href="$INFO[board_url]/index.php?showtopic=$post[tid]&view=getnewpost" target="_blank"><img src="http://eskimosi.in.ua/img/all_news.gif" width=20 height=20 border=0>"$post[short_title]"</a><br>Автор: <a href="$INFO[board_url]/index.php?showuser=$post[last_poster_id]" target="_blank"><b>$post[last_poster_name]</b></a><BR>$datefield, и <b>$post[posts]</b> ответов.<P>

А у тебя он разбросан и я не знаю за что хвататься.

 

Число всех проголосовавших понятно. Только я ж не знаю как это реализовать.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ну если не хочешь долго париться, то попробуй так:

 

Файл index.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>

<? include 'test2.php' ?>

</BODY>
</HTML>

 

Файл test2.php

<?php

$link = mysql_connect("localhost", "логин", "пароль")
	or die("Could not connect: " . mysql_error());

mysql_select_db('имя_бд', $link) or die ('Can\'t use db : ' . mysql_error());

$mas = array('0'=>'108','1'=>'109','2'=>'110'); //Генерируем массив номеров нужных опросов
$n = (mt_rand(0,2)); //Случайно выбираем номер опроса

$all = mysql_query("SELECT * FROM ibf_polls WHERE pid='$mas[$n]'"); //Выбираем из базы этот опрос
while ($all_row = mysql_fetch_array($all, MYSQL_ASSOC))
{
$poll_answers = unserialize(stripslashes($all_row['choices']));
echo('<table border="1" width="400" height="100"><tr><td colSpan=2 width="100%">Опрос №'.$all_row['tid'].' "'.$all_row['poll_question'].'"</td><td></td></tr>');
for ($i=1;$i<=count($poll_answers);$i++)
{
	if (isset($poll_answers[$i]['question']))
	{
		echo('<tr><td colSpan=2 width="100%">'.$poll_answers[$i]['question'].'</td><td></td></tr>');
	}
	$mas = array(); //Ну... переменная $mas больше не нужна для хранения номеров всех массивов, потому используем ещё для храния опроса
	for ($j=1;$j<=count($poll_answers[$i]['choice']);$j++)
	{
		$mas[$poll_answers[$i]['choice'][$j]] = $poll_answers[$i]['votes'][$j];  
	}
	asort($mas); //Стандартная сортировка по возрастанию
	reset($mas);
	$mas = array_reverse($mas); //МЕняем местами элементы - теперь по убыванию :)
	$summ = '0'; //Будущее количество участников голосования
	foreach ($mas as $k => $j)
	{
		echo('<tr><td width="50%">'.$k.'</td><td width="50%">'.$j.'</td></tr>'); //Вывод на экран
		$summ = $summ+$j;
	}
	echo('<tr><td colSpan=2 width="100%">Всего проголосовало - '.$summ.' человек</td><td></td></tr>');
}
echo('</table>');
}
mysql_close($link);

?>

 

index.php - это твой хтмльный файл, где таблица с опросом вызывается, который из твоего что_то_там.htm нужно переименовать в что_то_там.php (что б php в нем заработал)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

О, спасиб, это уже понятней. Теперь я вижу что редактировать и где. Только вот сделать из своего штмл файла пхп както не хочеться...

Щас проверю.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
О, спасиб, это уже понятней. Теперь я вижу что редактировать и где. Только вот сделать из своего штмл файла пхп както не хочеться...

Щас проверю.

 

А как ты хочешь нормально работать с пхп, не указывая брузеру, что здесь пхп? :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
но ведь через iframe оно работает! Наверняка есть какойто способ заставить его работать.
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.