|
автор: Gorillaz (05.08.2004 в 18:31) |
|
| ТОт кто ставил скрипт голосования, скачинный с этого сайта, может подоходчевей объяснить как его ставить ? Заранее благодарен :) | |
|
|
|
|
|
|
|
для: Gorillaz
(05.08.2004 в 18:31)
| | А в чем проблема?
Я ставил. Вначале че-то руганулся когда только поставил, но когда я создал новое голосование, все стало как надо. | |
|
|
|
|
автор: Gorillaz (06.08.2004 в 12:42) |
|
|
для: Artem S.
(05.08.2004 в 19:02)
| | Мне пишет "Ошибка при обращении к блоку голосования"
И де ты записывал голосование..? может я чёто не то сделал..=\ | |
|
|
|
|
|
|
|
для: Gorillaz
(06.08.2004 в 12:42)
| | У меня тоже так писал.
когда ты поставил голосование идешь в (папка скрипта)\admin\index.php
И создаешь новое голосование. Доложно заработать | |
|
|
|
|
|
|
|
для: Artem S.
(05.08.2004 в 19:02)
| | А у меня не работает. Запускаю index из папки Админ, доходит до обращения к серверу
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
|
в файле config.php и исчезает в просторах вселенной. Не ругается, а просто не возвращается. Специально менял значения $dblocation и $dbuser на неправельные - никакого эффекта, будто они ей и не нужны.
Вроде Mysql работает, базу данных создал, таблицы. А соединяться не хочет.
У меня вот какой вопрос. Через администратор Mysql файл my.ini вроде как есть, а вот в самой папке он не ищется. И когда я его в администраторе изменяю, сохраняю изменения, а потом снова открываю, там всё по-старому.
Конкретно, строчки basedir=C:/server/mysql и datadir=C:/server/mysql/data пытаюсь заменить на те, что в книжке. | |
|
|
|
|
|
|
|
для: ПБ (Дмитрий)
(08.08.2004 в 13:19)
| | Скорее всего это проявление ещё одного сюрприза от создателей PHP - теперь в отличие от предыдущих версий по умолчанию поддержка MySQL отключена :(((
Для того чтобы включить её найдите в конфигурационном файле php.ini строку
И уберите комментарий - изменения вступают в силу после перезагрузки сервера Apache. Динамическая библиотека php_mysql.dll находится в папке C:/PHP/ext и этот путь вообщето следует прописать в директории extension_dir, но если вы не хотите возится с этим просто скопируйте библиотеку в C:/PHP или в С:/WINDOWS/system32/. | |
|
|
|
|
|
|
|
для: cheops
(08.08.2004 в 13:30)
| | Вот, теперь заработало, но говорит, что В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.
Теперечи что ей не хватает? | |
|
|
|
|
|
|
|
для: ПБ (Дмитрий)
(08.08.2004 в 13:47)
| | Следует проверить все три переменные
<?php
$dblocation = "127.0.0.1"; // лучше 127.0.0.1 чем localhost
$dbuser = "root";
$dbpasswd = ""; // Вы не меняли пароль для root, когда ставили MySQL?
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(08.08.2004 в 13:55)
| | Поставил пароль password, его же присваиваю переменной $dbpasswd="password".
Может Mysql как-то включить надо? Как Апачь. | |
|
|
|
|
|
|
|
для: cheops
(08.08.2004 в 13:55)
| | О!!! Оказывается сервер доступен. Срабатывает вот это:
<?php
if (@!mysql_select_db($dbname,$dbcnx) ) {
echo( "<P>база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" );
exit();
}
?>
|
Ну вот!!! Неправильно обозвал базу. Все заработало!!! Супер!!!
Спасибо!!! | |
|
|
|
|
|
|
|
для: Gorillaz
(05.08.2004 в 18:31)
| | Загнал голосование в табличку, раскрасил и поставил в нужное место. Появилось несколько вопросов.
1. Как установить фиксированный размер шрифта для ответов? При изменение "размера шрифта" в меню "вид" ИЕ, табличка изменяет размер по высоте.
2. Защита от голосования. Я так и не понял, в каких случаях она срабатывает? Совершенно неожиданно удается проголосовать еще раз.
3. Как сделать, чтобы итоги голосования выводились в эту же табличку, ну или хотя бы в окне определенного размера?
4. Можно ли сделать, чтобы для уже проголосовавшего, загружались текущие итоги голосования, а не само голосование? | |
|
|
|
|
|
|
|
для: ПБ (Дмитрий)
(10.08.2004 в 18:46)
| | Тоже себе ставил данный скрипт. Сталкнулся с теме же проблемами.
1. index.php
<?php
//что то до этого
echo "<tr><td><input type=radio name=id_answer value=".$answer['id_answer']." $strtemp></td><td>".$answer['name']."</td></tr>";
}
echo "<input type=hidden name=id_poll value=".$poll['id_poll'].">";
echo "<tr><td></td><td><input type=submit value='Ãîëîñîâàòü'></td></tr>";
echo "</form></table>";
?>
|
Сточку <td>".$answer['name']."</td>
Замени на <td><font size="-1">".$answer['name']."</font></td>
2. у меня тоже не работает. Вожможно он не заносит локальный адресс. 127.0.0.1 Надо опробовать на реальном сервере
3 и 4. Хехе. Я для этого использовал cookie (пример ниже)
Делается это так. На своей станичке длаешь там где доложно быть голосованиеставишь
<?php include "choose.php"; ?>
|
choose.php ->
<?php
if($_COOKIE['vote'] == 1) include ("poll/show_poll.php");
else include ("poll/index.php");
?>
|
showpoll.php добовляешь в папку poll
<?php
include_once "poll/config.php";
// Отображаем результаты
$pol = mysql_query("SELECT * FROM poll WHERE archive=0 AND hide=0");
if ($pol)
{
$poll = mysql_fetch_array($pol);
echo $poll['name']."<br>";
// Просматриваем вопросы опроса
$query = "SELECT * FROM answer
WHERE id_poll=".$poll['id_poll']."
ORDER BY pos";
$total = "SELECT SUM(hit) FROM answer WHERE id_poll=".$poll['id_poll'];
$ans = mysql_query($query);
$tot = mysql_query($total);
if($ans && $tot)
{
$totl = mysql_fetch_array($tot);
$totalhits = $totl['SUM(hit)'];
if($totalhits == 0) $totalhits = 1;
echo "<table border=0>";
while($answer = mysql_fetch_array($ans))
{
echo "<tr>
<td>".$answer['name']."</td>
<td>".$answer['hit']."</td>
<td>".sprintf("%01.1f%s", $answer['hit']/$totalhits*100,'%')."</td>
</tr>";
}
echo "</table>";
echo "Общее число проголосовавших составляет: ".$totl['SUM(hit)']."<br>";
echo "<a href=archive.php>Архив голосований</a><br>";
} else puterror("Ошибка при обращении к блоку голосования");
} else puterror("Ошибка при обращении к блоку голосования");
?>
|
ну и измененый index.php в папке poll
<?php
include "poll/config.php";
// Запрашиваем опрос
$pol = mysql_query("SELECT * FROM poll WHERE archive=0 AND hide=0");
if(!$pol) puterror("Ошибка при обращении к блоку голосования");
$poll = mysql_fetch_array($pol);
echo $poll['name']."<br>";
// Просматриваем вопросы опроса
$query = "SELECT * FROM answer
WHERE id_poll=".$poll['id_poll']."
ORDER BY pos;";
$ans = mysql_query($query);
$first = true;
if(!$ans) echo "Нет активных опросов";
echo"<table><form action=poll/vote.php method=post>";
while($answer = mysql_fetch_array($ans))
{
if($first)
{
$strtemp = "checked";
$first = false;
}
else $strtemp = "";
echo "<tr><td><input type=radio name=id_answer value=".$answer['id_answer']." $strtemp></td><td>".$answer['name']."</td></tr>";
}
echo "<input type=hidden name=id_poll value=".$poll['id_poll'].">";
echo "<tr><td></td><td><input type=submit value='Голосовать'></td></tr>";
echo "</form></table>";
?>
|
Файл vote положи в папку poll
<?php
include_once "config.php";
// Учитываем голос
if(!empty($_POST['id_answer']))
{
$date = date("m",time());
setcookie("vote","1",mktime(0,0,0,$date+1,25,2004),"/");
$id_answer = $_POST['id_answer'];
// Получаем ip-адрес посетителя
$forward = getenv(HTTP_X_FORWARDED_FOR);
$ip = urldecode(getenv(HTTP_CLIENTIP));
if (($forward != NULL)&&($forward != $REMOTE_ADDR)) $ip = $ip."/".$forward;
// Проверяем наличие ip-адреса посетителя в таблице poll_ip
$isip = "SELECT * FROM poll_ip
WHERE ip='$ip'
AND puttime>date_sub(now(), interval '2' minute)";
$ipresult = mysql_query($isip);
// Удаляем устаревшие записи в таблице
$delip = "DELETE FROM poll_ip
WHERE puttime<date_sub(now(),interval '2' minute)";
mysql_query($delip);
if($ipresult)
{
if(mysql_num_rows($ipresult)<1)
{
// Заносим ip-адрес посетителя в таблицу poll_ip
mysql_query("INSERT INTO poll_ip VALUES(0,'$ip',now())");
// Заносим голос в таблицу answer
$query = "select hit from answer where id_answer=$id_answer";
$num = mysql_query($query);
if($num)
{
$number = mysql_fetch_array($num);
$query = "UPDATE answer SET hit=".($number['hit']+1)." WHERE id_answer=$id_answer";
mysql_query($query);
} else puterror("Ошибка при обращении к блоку голосования");
}
}
}
print "<HTML><HEAD>\n";
print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=../index.php'>\n";
print "</HEAD></HTML>\n";
?>
|
Так у меня работает. Но возможно тебе придется поменять гдето пути.
Возможно сделать и проще. Но я пока учусь =) | |
|
|
|
|
|
|
|
для: Artem S.
(10.08.2004 в 20:35)
| | По п.1.
Это табличка перестает меняться, т.к. при самом большом шрифте строчки умещаются в размер таблицы. У меня при font size=1. Зато при среднем шрифте слишком мелко. Мне интересно, я в головной таблице, куда все положил, объявил font size=12pt, и заголовок опроса не меняется...
Все, нашел.
echo "<table class='voting'><form action=vote.php method=post>";
while($answer = mysql_fetch_array($ans))
|
В эту таблицу вставляешь размер шрифта, и теперь уже ничего не меняется!!!
С остальным завтра буду разбираться, у нас уже ночь глубокая. | |
|
|
|
|
|
|
|
для: Gorillaz
(05.08.2004 в 18:31)
| | Наконец-то опробовал голосование на удаленном сервере. Вроде работает.
Вопрос такой. У меня вроде некуда воткнуть его на странице, поэтому хотелось бы, чтобы он открывался в отдельном небольшом окошке. Как это можно сделать? | |
|
|
|
|
|
|
|
для: ПБ (Дмитрий)
(28.08.2004 в 16:06)
| | Я непомню как это делается но делается через JavaScript | |
|
|
|
|
|
|
|
для: Адоп Акробат
(28.08.2004 в 17:21)
| | Есть приблуда window.open(), но как ей пользоваться я не знаю. | |
|
|
|
|
|
|
|
для: Адоп Акробат
(28.08.2004 в 17:21)
| | Нашел.
Если переименовать файл index.php, например в pool.php,
А index.php сделать таким:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Система голосования</title>
</head>
<body>
<SCRIPT>
<!-- Защитили текст скрипта от старых браузеров
{
window.open('pool.php','example','scrollbars,resizable,width=300,height=200');void(0);
}
// -->
</SCRIPT>
</body>
</html>
|
то при открытии файла голосование открывается в новом окне. | |
|
|
|
|
|
|
|
для: ПБ (Дмитрий)
(29.08.2004 в 00:13)
| | Новая проблемка с окном.
Хостер автоматически вставляет рекламный банер в верх страницы, в том числе и в окно с голосованием. Как-то можно убирать этот банер, кроме как написать письмо хостерам? | |
|
|
|
|
|
|
|
для: ПБ (Дмитрий)
(29.08.2004 в 02:00)
| | По моему нельзя. И что то мне подсказывает, что хостер тут Вам не поможет. У вас бесплатный хостинг?
...Хотя как знать. Попробуйте написать - может что и выйдет. | |
|
|
|
|
|
|
|
для: ПБ (Дмитрий)
(29.08.2004 в 02:00)
| | Хм. Попробуйте так.
Раздобудьте себе место у другого хостера у которого нет рекламы. Например, почтовики дают место под сайт около 20 мегабайт и нет никакой рекламы (но нет и PHP). Далее на этом "сайте" создайте один файл вроде poll.htm с примерным содержанием
<html>
<head>
<title>Результаты опроса</title>
</head>
<body>
|
Далее финт ушами
<SCRIPT LANGUAGE="JavaScript">
function openpoll()
{
var OpenWindow=window.open("http://адресс_сервера_без_рекламмы/poll.htm", "newwin", "height=300,width=300");
OpenWindow.document.write("<font size=+1>Результат опроса</font>")
//далее через эту функцию и выставляешь весь код результатов.
OpenWindow.document.write("<a href='' onClick='self.close()'> Закрыть окно</a>")
OpenWindow.document.write("</body>")
OpenWindow.document.write("</html>")
self.name="main window"
}
</SCRIPT>
|
теперь где надо воспользуйся функцией openpoll(), ну например через ссылку
<a href="" onClick="openpoll()">Результаты опроса</a>
Попробуй, но может быть я что-то упустил | |
|
|
|
|
|
|
|
для: Artem S.
(29.08.2004 в 08:57)
| | Господа - помогите, у меня скрипт вон как ругается....
Warning: opendir(txt): failed to open dir: Invalid argument in z:\home\localhost\www\6\votes\polls.php on line 10
Warning: readdir(): supplied argument is not a valid Directory resource in z:\home\localhost\www\6\votes\polls.php on line 11
Warning: closedir(): supplied argument is not a valid Directory resource in z:\home\localhost\www\6\votes\polls.php on line 16 | |
|
|
|
|
|
|
|
для: 10100100
(26.09.2005 в 14:24)
| | Хм... а текстовый файл, к которому обращается скрипт, существует? | |
|
|
|
|
|
|
|
для: cheops
(26.09.2005 в 22:17)
| | да - существует :( | |
|
|
|
|
|
|
|
для: 10100100
(27.09.2005 в 11:56)
| | ну вы даете в ваших кодах у меня возникли ошибки но я решил зато свою проблему которую не мог решить неделю!
спасибо | |
|
|
|