Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

Вот скрипт предназначен для голосование
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>
eldar вне форума Ответить с цитированием
Старый 31.05.2009, 23:05   #2
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Ну просто создайте два поля, 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
По умолчанию

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

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

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

Прямо с мануала по пхп
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
По умолчанию

Цитата:
Ну просто создайте два поля, g_yes и g_no и пусть в зависимости от выбраного ответа инкриминирует значение поля.
Что значит инкриминирует?
eldar вне форума Ответить с цитированием
Старый 01.06.2009, 12:40   #7
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчёт кол-ва дней ivp88 БД в Delphi 7 14.01.2008 09: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