JQuery & PHP Star Rating упрощен - PullRequest
       19

JQuery & PHP Star Rating упрощен

2 голосов
/ 02 апреля 2012

РЕДАКТИРОВАТЬ: рассматриваемый плагин находится здесь .

PHP новичок здесь использует фрагмент кода JQuery Star Rating и получил его для идеальной работы. Моя проблема в том, что в настоящее время он настроен на подсчет и отображение среднего значения многих оценок (для общедоступных приложений). Я пытаюсь упростить плагин, чтобы он позволял устанавливать личный рейтинг (как если бы вы оценивали свои собственные песни в iTunes). Пользователь может обновить свой рейтинг, но никакие частичные звезды никогда не будут существовать. Я много раз ломал плагин, пытаясь заставить его работать, но безрезультатно. База данных mysql существует следующим образом:

CREATE TABLE IF NOT EXISTS `pd_total_vote` (
  `id` int(11) NOT NULL auto_increment,
  `desc` varchar(50) NOT NULL,
  `counter` int(8) NOT NULL default '0',
  `value` int(8) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

Если бы я мог работать так, как я себе представляю, мне бы не потребовались оба столбца counter и value, просто один столбец INT, который содержит значение от 1 до 5. В настоящее время counter накапливает количество голосов, а value агрегирует рейтинги. Звезды затем отображаются с использованием (значение / счетчик) * 20 (в процентах). PHP ниже (оригинал):

<?php

// connect to database

$dbh=mysql_connect ("localhost", "user", "pass") or die ('Cannot connect to the database');
mysql_select_db ("thenally_pd",$dbh);

if($_GET['do']=='rate'){
    rate($_GET['id']);
}else if($_GET['do']=='getrate'){

    // get rating

    getRating($_GET['id']);
}

// get data from table

function fetchStar(){
    $sql = "select * from `pd_total_vote`";
    $result=@mysql_query($sql);
    while($rs = @mysql_fetch_array($result,MYSQL_ASSOC)){
        $arr_data[] = $rs;
    }
    return $arr_data;
}

// function to retrieve

function getRating($id){
    $sql= "select * from `pd_total_vote` where id='".$id."' ";
    $result=@mysql_query($sql);
    $rs=@mysql_fetch_array($result);
    // set width of star
    $rating = (@round($rs[value] / $rs[counter],1)) * 20; 
    echo $rating;
}

// function to set rating

function rate($id){
    $text = strip_tags($_GET['rating']);
    $update = "update `pd_total_vote` set counter = counter + 1, value = value + ".$_GET['rating']."  where id='".$id."' ";
    $result = @mysql_query($update);
}

?>

Спасибо за точку в правильном направлении,

Mike

1 Ответ

1 голос
/ 03 апреля 2012

Я не уверен, поскольку у меня нет доступа к используемой вами рейтинговой системе, но я просто смотрю на то, что у вас есть. Полагаю, вы можете оставить счетчик равным 1 (если его удаление нарушит систему рейтинга jQuery) и обновите значение. человеком, поэтому, когда вы выбираете его, они видят только его значение (убедитесь, что значение не может превышать 5). Таким образом, если значение установлено на 5, оно будет показывать 5, потому что оно не находит других оценок .... (основываясь на моем понимании) Вам также нужно будет добавить идентификатор пользователя, чтобы вы знали, какой рейтинг людей выбрать ( так как ты хочешь это личное). Это зависит от того, насколько зависит приложение от конкретной базы данных.

...