Перейти к контенту
  • 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 оно работает! Наверняка есть какойто способ заставить его работать.
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Ответить на вопрос...

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

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

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

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

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

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

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

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