скрипт рейтинга php. как адаптироваться под разные article_ids - PullRequest
0 голосов
/ 26 марта 2012

У меня есть эта стартовая система, которая отлично работает.но я хотел бы использовать его на разных сайтах.голосовать за разные статьи ... как адаптировать этот скрипт, чтобы использовать его для разных статей?

для создания таблицы mysql:

    CREATE TABLE IF NOT EXISTS `rating` (  
  `ID` int(11) NOT NULL AUTO_INCREMENT,  
  `ArticleID` int(11) NOT NULL,  
  `Vote` int(11) NOT NULL,  
  `date` datetime NOT NULL,  
  PRIMARY KEY (`ID`)  
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;  

rating.php:

    <?php
/** CONFIG */
$Server = 'localhost';
$Username = 'root';
$Password = '';
$DB_Name = 'tutorials';
$db = new mysqli($Server, $Username, $Password, $DB_Name);
/** END CONFIG */


function rate($rate, $db, $article_id = 0) {
  if(!is_numeric($rate)) return false;
  $rate = (int)$rate;
  if($rate < 1 || $rate > 5) return false;
  $sql = 'INSERT INTO rating(ArticleID, Vote, date)
                      VALUES(?, ?, NOW())'; 
  $stmt = $db->prepare($sql);
  $stmt->bind_param('ii', $article_id, $rate);
  $stmt->execute();
  $result = $stmt->insert_id;
  $stmt->close();
  return (bool)$result;  
}


function getVotes($db) {
$result = false;
$sql = 'SELECT 
                SUM(Vote),
                COUNT(*)
        FROM
                rating';
$stmt = $db->prepare($sql);
$stmt->execute();
$stmt->bind_result($rate_sum, $rate_count);
while($stmt->fetch()):
    if($rate_count > 0) {
    $result = array('RateSum' => $rate_sum,
                    'RateCount' => $rate_count,
                    'Rate' => floor($rate_sum/$rate_count));
    }               
endwhile;
return $result;                 

}




if(isset($_GET['rating'])) {
    $result = rate($_GET['rating'], $db);
}


//$votes = getVotes($db);
//var_dump($votes);




require_once 'rating_template.tpl';

здесь rating_template.tpl:

    <!DOCTYPE html>
<html lang="de">
    <head>
        <meta charset="utf-8" />
        <title>Rating</title>

        <style>
            .rating{
                    width:180px;
                    height:26px;
                    margin:0 0 20px 0;
                    padding:0;
                    list-style:none;
                    clear:both;
                    position:relative;
            }

            ul.rating li {float:left;}
            ul.rating a{display:block;background-image:url(star.png);width:24px;height:24px;border:1px solid #ffffff;margin:1px;color:white;text-align:center;text-decoration:none;}
            ul.rating a:hover{color:white;background:#469DFA;background-image:url(star_on.png)}
            .active{color:white;background:#469DFA;background-image:url(star_on.png) !important;}
        </style>

    </head>
    <body>

    <div style="width:180px;margin:0 auto;">
        <ul class="rating">

        <?php $i = 1; while($i <= 5) : ?>
            <?php if(is_array($votes) && $i <= $votes['Rate']): ?>
                <li><a href="?rating=<?php echo $i ?>" class="active" title="<?php echo $i ?> Star"><?php $i ?></a></li>
            <?php else: ?>
                <li><a href="?rating=<?php echo $i ?>" title="<?php echo $i ?> Star"><?php $i ?></a></li>
            <?php endif; ?>

        <?php ++$i; endwhile; ?>
        </ul>
    </div>
    </body>
</html>
...