Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 31.05.2009, 22:38   #1
eldar
Форумчанин
 
Аватар для eldar
 
Регистрация: 04.08.2008
Сообщений: 154
Репутация: 22
По умолчанию Подсчёт голосов

Вот скрипт предназначен для голосование
1 . проверяет в базе на активное голосование, если находит, то форму для ввода адреса (URL) скрывает, если не находит то показывает поле ввода.
2. если юзер ввел адрес URL, то ему предоставляется проголосовать за него, голосовать может только один раз. После чего он может только наблюдать или ждать окончания.
3. Скрипт выводит время до конца голосования.

Так вот как создать подсчёт голосов?
тоесть сколько "за", а сколько "против" то выполняется вот это

PHP код:
header('Location: http://'.urlencode($part['url'])); 
Вот сам скрипт

PHP код:
<?php
# СОЕДИНЯЕМСЯ С БАЗОЙ
    
$dbhost "";
    
$dbuser "";
    
$dbpass "";
    
$dbname "";
    
$connect mysql_connect($dbhost,$dbuser,$dbpass);if(!$connect) {echo "<b>Ошибка соединения с базой".mysql_errno().":</b>".mysql_error();exit;}
    
mysql_select_db($dbname,$connect);
if(isset(
$_POST['url'])){
    if(!isset(
$_SESSION['url'])){

    
$time_in date('Y-m-d H:i:s');
    
$time_end date('Y-m-d H:i:s',time()+1800);
    
$url_insertmysql_query("UPDATE `xxx`  SET `url`= '".$_POST['url']."'  WHERE `id`='29' "$connect) or die(mysql_error());
    
$url_insertmysql_query("UPDATE `xxx`  SET `golos`= '0'  WHERE `id`='29' "$connect) or die(mysql_error());
    
$url_insertmysql_query("UPDATE `xxx`  SET `active`= '1'  WHERE `id`='29' "$connect) or die(mysql_error());
    
$url_insertmysql_query("UPDATE `xxx`  SET `time_in`= '".$time_in."'  WHERE `id`='29' "$connect) or die(mysql_error());
    
$url_insertmysql_query("UPDATE `xxx`  SET `time_end`= '".$time_end."'  WHERE `id`='29' "$connect) or die(mysql_error());
    
$act_hidden 1;
        
session_register('url');
        
$_SESSION['url'] == 1;
    }else{
$act_hidden 1;}        
    }
# ПРОВЕРЯЕМ НА ACTIVE (АКТИВНОЕ ГОЛОСОВАНИЕ)
$query_active mysql_query("SELECT * FROM `xxx` WHERE `active`='1' LIMIT 1"$connect) or die(mysql_error());
$part mysql_fetch_array($query_active);
if(
$part['active'] == 1){ # ЕСЛИ ГОЛОСОВАНИЕ НАЧАЛОСЬ
    
$act_hidden 1$vis_url 'none';
    
$time strtotime(date('Y-m-d H:i:s'));
    
$time_end strtotime($part['time_end']);
    
$time_show $time_end $time;
    
$ts .= "Осталась ".date('i',$time_show)." мин. до окончания голосования.";
    if(!isset(
$_SESSION['golos'])){
        
$vis 'block'$vis2 'none';
        if(isset(
$_POST['golos'])){ # ПРОВЕРЯЕМ НА ГОЛОС
        
$vis 'none'$vis2 'block';
        
session_register('golos');
        
$_SESSION['golos'] == 1;

        
$golosa_update mysql_query("UPDATE `xxx` SET `golos`=golos+1 WHERE `active`='1' LIMIT 1 "$connect) or die(mysql_error());

        }

    }else{
$vis 'none'$vis2 'block';}

    if(
$time $time_end){ # ПРОВЕРЯЕМ ВРЕМЯ ГОЛОСОВАНИЯ И ЕСЛИ ВРЕМЯ ВЫШЛО
        
$act_hidden 0;
        
$vis 'none'$vis2 'none'$vis3 'block'$ts ""$vis_url 'block';
header('Location: http://'.urlencode($part['url']));
        
session_unregister('url');
        
session_unregister('golos');
            
$active_reset mysql_query("UPDATE `xxx` SET `active`='0' WHERE `active`='1' LIMIT 1 "$connect) or die(mysql_error());


        }else{
$vis3 'none';} # ЕСЛИ ВРЕМЯ ДЛЯ ГОЛОСОВАНИЯ ЕЩЕ ЕСТЬ
}else{ # ЕСЛИ АКТИВНОГО ГОЛОСОВАНИЯ НЕ НАЙДЕНО
    
$vis 'none'$vis2 'none'$vis3 'block'$ts ""$vis_url 'block';
    
session_unregister('url');
    
session_unregister('golos');

?>
<div align="center"><? echo $ts;?></div>
<!-- ФОРМА ДЛЯ ДОБАВЛЕНИЯ URL -->
<div style="display:<? echo $vis_url;?>">
<form name="set_url" action="" method="post">
<input id="act_hidden" type="hidden" value="<? echo $act_hidden;?>">
<input id="url" name="url" type="text" value=""><br/>
<input type="submit" value="Добавить URL">
</form>
</div>
<br /><br />
<!-- ФОРМА ДЛЯ ГОЛОСОВАНИЯ -->
<div style="display:<? echo $vis;?>">
<form name="golosovanie" action="" method="post">
Все дружненько голосуем за <? echo $part['url'];?><br /><br />
<input id="golos" name="golos" type="radio" value="1" checked="checked">Да<br />
<input id="golos" name="golos" type="radio" value="0">Нет<br/>
<input type="submit" value="Голосовать">
</form>
</div>
<div style="display:<? echo $vis2;?>">СПАСИБО ЗА ГОЛОС!</div>
<div style="display:<? echo $vis3;?>">ВВЕДИТЕ ПОЖАЛУЙСТА URL</div>
<script type="text/javascript">
check();
function check(){
if (document.getElementById('act_hidden').value == 1){document.getElementById('url').disabled = true;}else{document.getElementById('url').disabled = false;}
}
</script>
__________________
http://www.dowlands.sk6.ru/
eldar вне форума   Ответить с цитированием
Старый 31.05.2009, 23:05   #2
Dj_smart
Капсула от спама
Участник клуба
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Адрес: /www[.](.*)[.]ru/
Сообщений: 779
Репутация: 290

icq: 9804336
По умолчанию

Ну просто создайте два поля, g_yes и g_no и пусть в зависимости от выбраного ответа инкриминирует значение поля.
И еще: защищайтесь от инъекций! Я введу в поле адреса это:
Код:

" WHERE `id`='29';
DROP DATABASE `имявашейБД`; --

И фсе, 3.141592956 вашей базе данных...
__________________
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума   Ответить с цитированием
Старый 31.05.2009, 23:29   #3
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
Репутация: 18
По умолчанию

гг, а если на сервере magic_quotes = true? a? =)

Ну я лично все равно делаю проверку, для универсальности
iankov вне форума   Ответить с цитированием
Старый 31.05.2009, 23:47   #4
eldar
Форумчанин
 
Аватар для eldar
 
Регистрация: 04.08.2008
Сообщений: 154
Репутация: 22
По умолчанию

А как защититься от инъекции?
__________________
http://www.dowlands.sk6.ru/
eldar вне форума   Ответить с цитированием
Старый 31.05.2009, 23:56   #5
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
Репутация: 18
По умолчанию

Прямо с мануала по пхп
Example 1849. get_magic_quotes_gpc() example

PHP код:
<?php
echo get_magic_quotes_gpc();         // 1
echo $_POST['lastname'];             // O\'reilly
echo addslashes($_POST['lastname']); // O\\\'reilly

if (!get_magic_quotes_gpc()) {
    
$lastname addslashes($_POST['lastname']);
} else {
    
$lastname $_POST['lastname'];
}

echo 
$lastname// O\'reilly
$sql "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
?>
iankov вне форума   Ответить с цитированием
Старый 01.06.2009, 12:39   #6
eldar
Форумчанин
 
Аватар для eldar
 
Регистрация: 04.08.2008
Сообщений: 154
Репутация: 22
По умолчанию

Цитата:
Ну просто создайте два поля, g_yes и g_no и пусть в зависимости от выбраного ответа инкриминирует значение поля.
Что значит инкриминирует?
__________________
http://www.dowlands.sk6.ru/
eldar вне форума   Ответить с цитированием
Старый 01.06.2009, 12:40   #7
Dj_smart
Капсула от спама
Участник клуба
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Адрес: /www[.](.*)[.]ru/
Сообщений: 779
Репутация: 290

icq: 9804336
По умолчанию

Цитата:
Что значит инкриминирует?
Увеличивает на единицу. Декриминировать значит уменьшить.
__________________
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчёт кол-ва дней ivp88 БД в Delphi 7 14.01.2008 10:16
Подсчёт непустых клеток mik Microsoft Office Excel 7 27.10.2007 13:40
Подсчёт трафика с сайта Маркъ Работа с сетью в Delphi 3 25.09.2007 10:06
Подсчёт трафика Альберт Работа с сетью в Delphi 2 10.09.2007 11:35


02:57.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru