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

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


Вопрос

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

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

  • 0

Ещё пару таких красноречивых высказываний и переносим тему в ЮМОР!

 

Кто вам обязан отвечать?!

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

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

 

Только результаты? Или пользователи голосать могут с сайта?

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

  • 0

Ну хотя бы результаты с ссылкой на тему...

 

ЗЫ: Хотелось бы чтобы можно было выбирать несколько голосований и чтобы они по очереди (не все сразу а по одному)показывались на сайте... Это реально?

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

  • 0
Ну хотя бы результаты с ссылкой на тему...

 

ЗЫ: Хотелось бы чтобы можно было выбирать несколько голосований и чтобы они по очереди (не все сразу а по одному)показывались на сайте... Это реально?

 

Всё реально. Главно только найти кто писать будет.

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

 

pid - номер опроса

tid - номер темы с опросом

start_date - дата опроса

choices - текстовое поле хранящее вопросы, ответы и колличество и тех и этих в кодировке

starter_id - номер пользователя создавшего опрос

votes - колличество голосов

forum_id - номер форума в котором опрос создавался

poll_question - название опроса

 

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

Ну или написать форму и там галочки ставить, какие показывать, какие не показывать. (это уже от вашей админки на сайте зависит, как там что сделано).

 

Простой скрипт коннекта к базе данных с выбором всех полей и выводом следующего предложения для всех опросов:

 

В опросе № такой то "Название опроса" столько то голосов.

 

<?php

$host = 'localhost' //имя хоста базы данных, у вас естественно может быть что то другое
$login = 'login' //логин базы данных
$pass = 'pass' //пароль БД
$db = 'db_forum' //имя БД

$link = mysql_connect($host, $login, $pass)
	or die("Could not connect: " . mysql_error());

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

$all = mysql_query("SELECT * FROM ibf_polls");
while ($all_row = mysql_fetch_array($all, MYSQL_ASSOC))
{
 echo('В опросе №'.$all_row['tid'].' "'.$all_row['poll_question'].'" '.$all_row['votes'].' голосов.<br />');
}
mysql_close($link);

?>

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

  • 0

Блин, несовсем то.

Как сделать что-бы хотя-бы видеть результаты, любого опроса, дальше я сам додумаю. А это слишком простой запрос, я сам такой делал.

мне вот именно и надо как разделить поле "choices" на вопрос, ответы, ну и всё остальное

Типа вот такого:

<опрос>

<1 отевет> <голосов>

<2 отевет> <голосов>

<3 отевет> <голосов>

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

  • 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());

$all = mysql_query("SELECT * FROM ibf_polls");
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 />');
	}
	for ($j=1;$j<=count($poll_answers[$i]['choice']);$j++)
	{
		echo(' - '.$poll_answers[$i]['choice'][$j].' ===> '.$poll_answers[$i]['votes'][$j].'<br />');
	}
echo('<br />');
}
}
mysql_close($link);

?>

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

  • 0
ничего не получаеться :D , бился, бился, но он почему-то не хочет конектиться к базе, говорит мол немогу цепануться и всё, на щёт IP, логина и пароля, я всё верно поставил, в чём кроеться проблема не понимаю? ;)
Ссылка на комментарий
Поделиться на других сайтах

  • 0
ничего не получаеться :D , бился, бился, но он почему-то не хочет конектиться к базе, говорит мол немогу цепануться и всё, на щёт IP, логина и пароля, я всё верно поставил, в чём кроеться проблема не понимаю? ;)

 

Впринципе коннект стандартный, так что тут остаётся только проверять, где то всё таки ошибка...

Локально делаешь?

Может ошибка в настройках сервера php.... там, может не localhost прописать надо...

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

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

  • 0
А можно поконкретней? Вот тот код в 11 сообщение этой темы - это всё что надо (ну кроме адреса своего сайта)? Или что-то ещё добавлять? И как оно выглядит?
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ну да. Это я текст кинул целого php файла. Для теста можете сохранить его в корень сайта например под именем test.php и запустить.

Там 4 переменных (я их обозначил как "хост", "логин", "пароль" и "имя базы данных").

Их нужно на соответсвующие у вас заменить. И префиксы ibf_ в таблицах на ваши заменить.

Выглядеть будет типо такого:

 

Опрос №1680 "Имя опроса"

Кто это?

- Я ===> 1

- Ты ===> 11

- ХЗ ===> 0

 

Второй вопрос

- Да! ===> 1

- Нет! ===> 0

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

  • 0

Прикол. Оно показало мне все опросы. Теперь вопросы:

1) как скрыть опросы из закрытых форумов

2) как сделать чтобы каждый раз показывалься какойто 1 дефолтный опрос?

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

  • 0

Главная страница это имеется в виду портал? Если так, то нужный опрос выностится на портал через админку.

Сначала создаешь опрос на самом форуме, потом заходишь в админку, "Управление дополнениями портала > Опрос > Просмотреть главные настройки" (site.url/admin.php?&section=tools&act=portal&code=portal_settings&pc_key=poll&&adsess= (После &adsess= вставляешь код сессии, и сразу попадаешь в нужный раздел))

Там увидишь всего одну форму "Введите URL темы с импортируемым опросом". Вот туда и вводишь адрес до темы с опросом.

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

  • 0
Главная страница это имеется в виду портал? Если так, то нужный опрос выностится на портал через админку.

Сначала создаешь опрос на самом форуме, потом заходишь в админку, "Управление дополнениями портала > Опрос > Просмотреть главные настройки" (site.url/admin.php?&section=tools&act=portal&code=portal_settings&pc_key=poll&&adsess= (После &adsess= вставляешь код сессии, и сразу попадаешь в нужный раздел))

Там увидишь всего одну форму "Введите URL темы с импортируемым опросом". Вот туда и вводишь адрес до темы с опросом.

 

Да нет, тут сюдя по всему по настоящую главную станицу говорят... про сайт собственноручно написанный

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

  • 0

ddvhouse дело говорит. Про мою ручную работу. :D Это вам не какой-то портал, это родное. ;) Так что с моими вопросами?

Кстати 3 вопрос: как сделать чтобы они сортировались в порядке на уменьшение? (я имею в виду в зависимости от количества голосов за данный пункт).

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

  • 0
2) как сделать чтобы каждый раз показывалься какойто 1 дефолтный опрос?

 

Если этот "дефолт" устанавливается тобой строго, то строку

 

$all = mysql_query("SELECT * FROM ibf_polls");

 

заменить на

 

$all = mysql_query("SELECT * FROM ibf_polls WHERE pid='90'");

 

Выберется 90й опрос из базы.

 

Если же этот "дефолт" устанавливается рандомно, то

 

$mas = array();
$result = mysql_query("SELECT pid FROM ibf_polls");
while ($all = mysql_fetch_array($result, MYSQL_ASSOC))
{
$mas[]=$all['pid'];
}

 

результат этого кода - массив, где каждый элемент содержит номер опроса;

из него рандомно выбираешь номер, и отображаешь, как в коде выше.

 

Если дефолтный опрос - последний, то

// Номер последнего опроса
$result = mysql_query("SELECT MAX(pid) FROM ibf_polls");
$all = mysql_fetch_array($result, MYSQL_ASSOC);

 

В переменной $all[MAX(pid)] окажется номер последнего опроса.

 

По 3-му вопросу: $poll_answers[$i]['choice'] - массив ответов, просто его отсортировать надо как хочешь.

Сортировать по $poll_answers[$i]['votes'] - массив колличеств ответов на каждый ответ.

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

  • 0

Так, немного запутался. Значит если я хочу чтобы у меня рандомно отображался один из опросов (или 1-й или 2 или 3-й) я должен заминить в коде из 11 поста

$all = mysql_query("SELECT * FROM ibf_polls");

на

$
mas = array();
$result = mysql_query("SELECT pid FROM ibf_polls");
while ($all = mysql_fetch_array($result, MYSQL_ASSOC))
{
$mas[
$all = mysql_query("SELECT * FROM ibf_polls WHERE pid='1'");
$all = mysql_query("SELECT * FROM ibf_polls WHERE pid='2'");
$all = mysql_query("SELECT * FROM ibf_polls WHERE pid='3'");
]=$all['pid'];
}

Правильно или я что-то перепутал?

 

И можно поконкретней как сортировать? Я просто только штмл понимаю, а тут я только ели ели разбираюсь по аналонии.

 

ЗЫ: и на этом уже огромное спасибо!

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

  • 0
Так, немного запутался. Значит если я хочу чтобы у меня рандомно отображался один из опросов (или 1-й или 2 или 3-й) я должен заминить в коде из 11 поста

$all = mysql_query("SELECT * FROM ibf_polls");

на

$
mas = array();
$result = mysql_query("SELECT pid FROM ibf_polls");
while ($all = mysql_fetch_array($result, MYSQL_ASSOC))
{
$mas[
$all = mysql_query("SELECT * FROM ibf_polls WHERE pid='1'");
$all = mysql_query("SELECT * FROM ibf_polls WHERE pid='2'");
$all = mysql_query("SELECT * FROM ibf_polls WHERE pid='3'");
]=$all['pid'];
}

Правильно или я что-то перепутал?

 

 

Неее, извини, но это бред какой то.

Смотри, тебе надо просто запрос чуть усложнить в начале:

$mas = array();
$result = mysql_query("SELECT pid FROM ibf_polls WHERE ((pid='1') or (pid='2') or (pid='3'))"); //делаешь выборку нужного с базы за один запрос
while ($all = mysql_fetch_array($result, MYSQL_ASSOC))
{
$mas[]=$all['pid']; //добавляешь каждый номер в массив
}

 

потом делаешь рандомный выбор - какой массив брать, выпал, например, 2;

ты его сохранил в какую нить переменную: $number_poll

и выполняешь код с 11 поста с изменённой строкой:

$all = mysql_query("SELECT * FROM ibf_polls WHERE pid='$number_poll'");

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

  • 0

Всё что я щас могу сказать - если ты за меня не напишешь всё то я точно ничего не напишу... :D;)

Например фраза "ты его сохранил в какую нить переменную" меня ставит в шок. Я не знаю как её надо сохранять. Ладно, не буду позориться. Можешь дать литературу какуюто почетать по данной теме чтобы понять про что тут вообще говориться?

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

  • 0
Всё что я щас могу сказать - если ты за меня не напишешь всё то я точно ничего не напишу... :D:)

Например фраза "ты его сохранил в какую нить переменную" меня ставит в шок. Я не знаю как её надо сохранять. Ладно, не буду позориться. Можешь дать литературу какуюто почетать по данной теме чтобы понять про что тут вообще говориться?

 

:):) ОК ;)

Щас, т.е. такая задача:

берём 3 опроса (откуда берем номера, посление или ты сам указывать будешь?)

выводим один в порядке уменьшения колва постов в ответах.

 

вопрос выше...

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

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

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

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

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

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

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

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

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

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

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

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