Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: скрипт голосования
 
 автор: Gorillaz   (05.08.2004 в 18:31)
 
 

ТОт кто ставил скрипт голосования, скачинный с этого сайта, может подоходчевей объяснить как его ставить ? Заранее благодарен :)

   
 
 автор: Artem S.   (05.08.2004 в 19:02)   письмо автору
 
   для: Gorillaz   (05.08.2004 в 18:31)
 

А в чем проблема?
Я ставил. Вначале че-то руганулся когда только поставил, но когда я создал новое голосование, все стало как надо.

   
 
 автор: Gorillaz   (06.08.2004 в 12:42)
 
   для: Artem S.   (05.08.2004 в 19:02)
 

Мне пишет "Ошибка при обращении к блоку голосования"
И де ты записывал голосование..? может я чёто не то сделал..=\

   
 
 автор: Artem S.   (06.08.2004 в 14:45)   письмо автору
 
   для: Gorillaz   (06.08.2004 в 12:42)
 

У меня тоже так писал.
когда ты поставил голосование идешь в (папка скрипта)\admin\index.php
И создаешь новое голосование. Доложно заработать

   
 
 автор: ПБ (Дмитрий)   (08.08.2004 в 13:19)   письмо автору
 
   для: 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 пытаюсь заменить на те, что в книжке.

   
 
 автор: cheops   (08.08.2004 в 13:30)   письмо автору
 
   для: ПБ (Дмитрий)   (08.08.2004 в 13:19)
 

Скорее всего это проявление ещё одного сюрприза от создателей PHP - теперь в отличие от предыдущих версий по умолчанию поддержка MySQL отключена :(((
Для того чтобы включить её найдите в конфигурационном файле php.ini строку
extension=php_mysql.dll

И уберите комментарий - изменения вступают в силу после перезагрузки сервера Apache. Динамическая библиотека php_mysql.dll находится в папке C:/PHP/ext и этот путь вообщето следует прописать в директории extension_dir, но если вы не хотите возится с этим просто скопируйте библиотеку в C:/PHP или в С:/WINDOWS/system32/.

   
 
 автор: ПБ (Дмитрий)   (08.08.2004 в 13:47)   письмо автору
 
   для: cheops   (08.08.2004 в 13:30)
 

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

   
 
 автор: cheops   (08.08.2004 в 13:55)   письмо автору
 
   для: ПБ (Дмитрий)   (08.08.2004 в 13:47)
 

Следует проверить все три переменные
<?php
    $dblocation 
"127.0.0.1"// лучше 127.0.0.1 чем localhost
    
$dbuser "root"
    
$dbpasswd ""// Вы не меняли пароль для root, когда ставили MySQL?
?>

   
 
 автор: ПБ (Дмитрий)   (08.08.2004 в 14:18)   письмо автору
 
   для: cheops   (08.08.2004 в 13:55)
 

Поставил пароль password, его же присваиваю переменной $dbpasswd="password".
Может Mysql как-то включить надо? Как Апачь.

   
 
 автор: ПБ (Дмитрий)   (08.08.2004 в 15:48)   письмо автору
 
   для: cheops   (08.08.2004 в 13:55)
 

О!!! Оказывается сервер доступен. Срабатывает вот это:
<?php
if (@!mysql_select_db($dbname,$dbcnx) ) {
  echo( 
"<P>база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" );
  exit();
}
?>


Ну вот!!! Неправильно обозвал базу. Все заработало!!! Супер!!!
Спасибо!!!

   
 
 автор: ПБ (Дмитрий)   (10.08.2004 в 18:46)   письмо автору
 
   для: Gorillaz   (05.08.2004 в 18:31)
 

Загнал голосование в табличку, раскрасил и поставил в нужное место. Появилось несколько вопросов.
1. Как установить фиксированный размер шрифта для ответов? При изменение "размера шрифта" в меню "вид" ИЕ, табличка изменяет размер по высоте.
2. Защита от голосования. Я так и не понял, в каких случаях она срабатывает? Совершенно неожиданно удается проголосовать еще раз.
3. Как сделать, чтобы итоги голосования выводились в эту же табличку, ну или хотя бы в окне определенного размера?
4. Можно ли сделать, чтобы для уже проголосовавшего, загружались текущие итоги голосования, а не само голосование?

   
 
 автор: Artem S.   (10.08.2004 в 20:35)   письмо автору
 
   для: ПБ (Дмитрий)   (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='&#195;&#238;&#235;&#238;&#241;&#238;&#226;&#224;&#242;&#252;'></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(!
$polputerror("Ошибка при обращении к блоку голосования");
  
$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";

?>


Так у меня работает. Но возможно тебе придется поменять гдето пути.
Возможно сделать и проще. Но я пока учусь =)

   
 
 автор: ПБ (Дмитрий)   (10.08.2004 в 23:07)   письмо автору
 
   для: 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))

В эту таблицу вставляешь размер шрифта, и теперь уже ничего не меняется!!!
С остальным завтра буду разбираться, у нас уже ночь глубокая.

   
 
 автор: ПБ (Дмитрий)   (28.08.2004 в 16:06)   письмо автору
 
   для: Gorillaz   (05.08.2004 в 18:31)
 

Наконец-то опробовал голосование на удаленном сервере. Вроде работает.
Вопрос такой. У меня вроде некуда воткнуть его на странице, поэтому хотелось бы, чтобы он открывался в отдельном небольшом окошке. Как это можно сделать?

   
 
 автор: Адоп Акробат   (28.08.2004 в 17:21)   письмо автору
 
   для: ПБ (Дмитрий)   (28.08.2004 в 16:06)
 

Я непомню как это делается но делается через JavaScript

   
 
 автор: ПБ (Дмитрий)   (28.08.2004 в 22:42)   письмо автору
 
   для: Адоп Акробат   (28.08.2004 в 17:21)
 

Есть приблуда window.open(), но как ей пользоваться я не знаю.

   
 
 автор: ПБ (Дмитрий)   (29.08.2004 в 00:13)   письмо автору
 
   для: Адоп Акробат   (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 в 02:00)   письмо автору
 
   для: ПБ (Дмитрий)   (29.08.2004 в 00:13)
 

Новая проблемка с окном.
Хостер автоматически вставляет рекламный банер в верх страницы, в том числе и в окно с голосованием. Как-то можно убирать этот банер, кроме как написать письмо хостерам?

   
 
 автор: glsv (Дизайнер)   (29.08.2004 в 02:54)   письмо автору
 
   для: ПБ (Дмитрий)   (29.08.2004 в 02:00)
 

По моему нельзя. И что то мне подсказывает, что хостер тут Вам не поможет. У вас бесплатный хостинг?
...Хотя как знать. Попробуйте написать - может что и выйдет.

   
 
 автор: Artem S.   (29.08.2004 в 08:57)   письмо автору
 
   для: ПБ (Дмитрий)   (29.08.2004 в 02:00)
 

Хм. Попробуйте так.
Раздобудьте себе место у другого хостера у которого нет рекламы. Например, почтовики дают место под сайт около 20 мегабайт и нет никакой рекламы (но нет и PHP). Далее на этом "сайте" создайте один файл вроде poll.htm с примерным содержанием

<html>
<head>
<title>Результаты опроса</title>
</head>
<body>
&nbsp;

Далее финт ушами

<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>
Попробуй, но может быть я что-то упустил

   
 
 автор: 10100100   (26.09.2005 в 14:24)   письмо автору
 
   для: 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

   
 
 автор: cheops   (26.09.2005 в 22:17)   письмо автору
 
   для: 10100100   (26.09.2005 в 14:24)
 

Хм... а текстовый файл, к которому обращается скрипт, существует?

   
 
 автор: 10100100   (27.09.2005 в 11:56)   письмо автору
 
   для: cheops   (26.09.2005 в 22:17)
 

да - существует :(

   
 
 автор: alexbg   (30.09.2005 в 12:26)   письмо автору
 
   для: 10100100   (27.09.2005 в 11:56)
 

ну вы даете в ваших кодах у меня возникли ошибки но я решил зато свою проблему которую не мог решить неделю!
спасибо

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования