[Release] Система за гласуване

Dungeon

New Member
Joined
Nov 15, 2009
Messages
2,234
Reaction score
819
Здравейте,



почти съм 100% сигурен, че сте виждали системата за гласуване с ръчичките като във Vbox7.





Точно такава система съм решил да ви покажа как се прави в днешния урок.



Ще видите сами, че изобщо не е сложно :)



Първото нещо, което трябва да направите е разбира се базата данни.

След, което ще трябва да създадем и таблиците.

Ето ги и тях:

Code:
    CREATE TABLE `votes` (
    `id` int(12) NOT NULL,
    `yes` int(10) NOT NULL default '0',
    `no` int(10) NOT NULL default '0',
    UNIQUE KEY(`id`)
    );

    CREATE TABLE `ips` (
    `id` int(12) NOT NULL,
    `ip` varchar(25) NOT NULL,
    `vote` enum('-1','1') NOT NULL,
    `timestamp` int(15) NOT NULL
    );
Така готови сме с базата данни и таблиците в нея.



Сега следва да създадем файла, който ще се свързва с тази база данни.



Нека го кръстим connect.php. В него сложете:

PHP:
    <?php
    define("HOST", "localhost"); // хост на MySQL - default: localhost
    define("USER", "root"); // усер за MySQL - default: root
    define("PASS", ""); // парола за MySQL - default: празна
    define("BD", "votes"); // име на база данни - default: votes

    $db_conn = @mysql_connect(HOST, USER, PASS) or die(mysql_error());
    @mysql_select_db(BD, $db_conn) or die(mysql_error());

    define("TIMESTAMP_VOTE", 24); // през колко време да може да гласува дадено IP в часова. 0 - само по 1 път.
    ?>
Както сами виждате, имаме възможност да нагласим през колко време да може да гласува даден потребител. Като разбира се може да направите само веднъж за ID.



Сега нека преминем към AJAX файла.



Създайте си файл vote.js и в него поставете следния код:

Code:
    var xmlHttp

    function showHint(str, id)
    {
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null)
    {
    alert ("Browser does not support HTTP Request")
    return
    }
    var url="vote.php"
    url=url+"?q="+str
    url=url+"&id="+id+"&sid="+Math.random()
    xmlHttp.onreadystatechange=stateChanged
    xmlHttp.open("GET",url,true)
    xmlHttp.send(null)
    }

    function stateChanged()
    {
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    {
    document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
    }
    }

    function GetXmlHttpObject()
    {
    var objXMLHttp=null
    if (window.XMLHttpRequest)
    {
    objXMLHttp=new XMLHttpRequest()
    }
    else if (window.ActiveXObject)
    {
    objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
    }
    return objXMLHttp
    }
Така. Готови сме и с AJAX файла. Останаха ни два файла. index.php и vote.php.



Добре сега създайте файл с име vote.php и в него поставете:

PHP:
    <?php
    require "connect.php";

    $id = $_GET['id'];
    $q = $_GET['q'];
    $ip = $_SERVER['REMOTE_ADDR'];

    if (($q == -1 || $q == 1) && is_numeric($id) && $id > 0)
    {
    $glasove = mysql_fetch_object(mysql_query("SELECT `yes`,`no` FROM `votes` WHERE `id` = '$id' LIMIT 1"));
    $timestamp_vote = (is_numeric(TIMESTAMP_VOTE) && TIMESTAMP_VOTE > 0) ? time() - (TIMESTAMP_VOTE * 3600) : 0;
    $ip_count = @mysql_result(mysql_query("SELECT COUNT(*) FROM `ips` WHERE `id` = '$id' AND `ip` = '$ip' AND `timestamp` > '$timestamp_vote' LIMIT 1"), 0);
    if (!$ip_count)
    {
    $yes = ($q == 1) ? 1 : 0;
    $no = ($q == -1) ? 1 : 0;
    $procent_yes = @round((($glasove -> yes + $yes) / (($glasove -> yes + $yes) + $glasove -> no)) * 100);
    $procent_no = @round((($glasove -> no + $no) / ($glasove -> yes + ($glasove -> no + $no))) * 100);
    $vote_yes = ($q == 1) ? "vote_up" : "vote_up2";
    $vote_no = ($q == -1) ? "vote_down" : "vote_down2";
    $sql = "INSERT INTO `votes` (`id`,`yes`,`no`) VALUES ('$id','$yes','$no')";
    if (!mysql_query($sql))
    {
    mysql_query("UPDATE `votes` SET `yes` = yes + $yes,`no` = no + $no WHERE `id` = '$id'");
    }

    $count_ip = mysql_fetch_object(mysql_query("SELECT COUNT(*) as 'kolko' FROM `ips` WHERE `id` = '$id' AND `ip` = '$ip' LIMIT 1"));
    if (!$count_ip -> kolko)
    {
    mysql_query("INSERT INTO `ips` (`id`,`ip`,`vote`,`timestamp`) VALUES ('$id','$ip','$q','".time()."')");
    }
    else
    {
    mysql_query("UPDATE `ips` SET `vote` = '$q',`timestamp` = '".time()."' WHERE `id` = '$id' AND `ip` = '$ip' LIMIT 1");
    }

    echo "<img src="".$vote_yes.".gif" border="0"> <b>".(($glasove -> yes) + $yes)." ($procent_yes%)</b> <img src="".$vote_no.".gif" border="0"> <b>".(($glasove -> no) + $no)." ($procent_no%)</b><br />Гласували: <b>".(($glasove -> yes + $yes) + ($glasove -> no + $no))."</b>";
    }
    else
    {
    echo "<img src="".$vote_yes.".gif" border="0"> <b>".(($glasove -> yes) + $yes)." ($procent_yes%)</b> <img src="".$vote_no.".gif" border="0"> <b>".(($glasove -> no) + $no)." ($procent_no%)</b><br />Гласували: <b>".(($glasove -> yes + $yes) + ($glasove -> no + $no))."</b>";
    }
    }
    ?>
Така, след като сме създали и този файл ни остана последният файл, а той е index.php



Създайте го и сложете в него:

HTML:
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Система за гласуване</title>
    <?php $id = (is_numeric($_GET['id']) && $_GET['id'] > 0) ? $_GET['id'] : 0; ?>
    <script type="text/javascript" src="vote.js"></script>
    <script language="JavaScript">
    function movepic(img_name,img_src) {
    document[img_name].src=img_src;
    }
    </script>
    </head>
    <?php
    require "connect.php";
    $row = mysql_fetch_array(mysql_query("SELECT `yes`,`no` FROM `votes` WHERE `id` = '$id'"));
    $yess = (empty($row['yes'])) ? 0 : $row['yes'];
    $noo = (empty($row['no'])) ? 0 : $row['no'];

    $timestamp_vote = (is_numeric(TIMESTAMP_VOTE) && TIMESTAMP_VOTE > 0) ? time() - (TIMESTAMP_VOTE * 3600) : 0;

    $query = mysql_query("SELECT `vote` FROM `ips` WHERE `id` = '$id' AND `ip` = '".$_SERVER['REMOTE_ADDR']."' AND `timestamp` > '$timestamp_vote' LIMIT 1");
    $vote_ip = mysql_fetch_object($query);
    $vote_yes = (($vote_ip -> vote) == 1) ? "vote_up" : "vote_up2";
    $vote_no = (($vote_ip -> vote) == -1) ? "vote_down" : "vote_down2";

    $procent_yes = @round(($yess / ($yess + $noo)) * 100);
    $procent_no = @round(($noo / ($yess + $noo)) * 100);
    ?>
    <body>

    <div id="txtHint"><?php if (!mysql_num_rows($query)) { ?><a href="javascript:void(null)" onclick="showHint('1','<?=$id?>')" onmouseover="movepic('pic1','vote_up.gif');"
    onmouseout="movepic('pic1','vote_up2.gif');"><? } ?><img name="pic1" src="<?=$vote_yes?>.gif" border="0"><?php if (!mysql_num_rows($query)) { ?></a><? } ?> <b><?=$yess?> (<?=$procent_yes?>%)</b>
    <?php if (!mysql_num_rows($query)) { ?><a href="javascript:void(null)" onclick="showHint('-1','<?=$id?>')" onmouseover="movepic('pic2','vote_down.gif');"
    onmouseout="movepic('pic2','vote_down2.gif');"><? } ?><img name="pic2" src="<?=$vote_no?>.gif" border="0"><?php if (!mysql_num_rows($query)) { ?></a><? } ?> <b><?=$noo?> (<?=$procent_no?>%)</b><br />
    Гласували: <b><?=($yess+$noo)?></b></div>

    </body>
    </html>
Готови сме с файловете :)



Остава ви да свалите четирите картинки и да ги поставите в директорията с файловете.
http://uroci.net/downloads/vote.zip





Сега да ви обясня как се използва системата.



Влизате във index.php, който създадохме по-горе като трябва да зададете кое ID да отоври.

Това става по следния начин:

yoursite.com/index.php?id=1

В примера зареждаме ID с номер 1.



Резултатите за всяко ID са индивидуални!

Това е системата. Надявам се да ви е полезна :)

Credits : HunteR
 

Attachments

  • vote.zip
    2 KB · Views: 26
Last edited by a moderator:
10/10 nigga gooodddddddddddddddddddddd!!!!!!!!!!
 
Кредити те не са ти верни Hunter е писал тази системата защото го познавам и то много преди да я сложат в uroci.net ....
 
омг дунгеон това лично сам го писал в мфс стига копва ..... :mad:
 
омг дунгеон това лично сам го писал в мфс стига копва ..... :mad:



хахаХАХХАХАхАхАХАХХАхахахАХАХХАхАхАХАХХАхахахаха моляте млк много си зле тая система не е твоя познавам човека който я е писал ае моляти се не се излагаи! (katur)(katur)(katur)
 
Хахахахахахаахахахахахааххаха, само дето това е системата на vbox ,както е споменато.
 
почти съм 100% сигурен, че сте виждали системата за гласуване с ръчичките като във Vbox7.
С червено да го видиш (nqh) (chesan) Имат разлика (xaxa)
 
пак ще кажа че тая система която е тук е писана от HunteR също така от линка който е даден по горе на HunteR на неговата страница е ! няма кво повече да опсъждаме тая тема ...