Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 22.09.2016
Сообщений: 3

Рейтинг 5 звезд AJAX jQuery php

22.09.2016, 22:14. Показов 2163. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Долго вожусь с плагином, вроде установил на страницу, но теперь не могу понять, как сделать чтобы нормально голоса считал, как добавить число проголосовавших, сумму, среднее значение, чтобы рейтинг нормально считал а не просто заменял значение выбранной звезды на кол-во нажатых звезд, ничего не запоминая и не суммируя.

Вот мой код:

первый файл:


PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php
 
if ($Module) {
$Module = FormChars($Module);
$Info = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `id`,`login`, `name`, `email`, `country`, `regdate`, `avatar`, `status`, `city`, `lastname` FROM `users` WHERE `login` = '$Module'"));
 
?>
 
 
<?php
require_once("dbcontroller.php");
$db_handle = new DBController();
$query ="SELECT `id`, `rating` FROM tutorial WHERE `id` = $Info[id]";
$result = $db_handle->runQuery($query);
?>
 
<HTML>
<HEAD>
<TITLE>PHP Dynamic Star Rating using jQuery</TITLE>
<style>
body{width:610;}
.demo-table {border-spacing: initial;margin: 20px 0px;word-break: break-word;table-layout: auto;line-height:1.8em;color:#333;}
.demo-table th {background: #999;padding: 5px;text-align: left;color:#FFF;}
.demo-table td {border-bottom: #f0f0f0 0px solid;background-color: #eeeeee;padding: 5px;}
.demo-table td div.feed_title{text-decoration: none;color:#00d4ff;font-weight:bold;}
.demo-table ul{margin:0;padding:0;}
.demo-table li{cursor:pointer;list-style-type: none;display: inline-block;color: #fff;text-shadow: 0 0 1px #fff;font-size:30px;}
.demo-table .highlight, .demo-table .selected {color:#F4B30A;text-shadow: 0 0 1px #F48F0A;}
</style>
<script src="https://code.jquery.com/jquery-2.1.1.min.js" type="text/javascript"></script>
<script>function highlightStar(obj,id) {
    removeHighlight(id);        
    $('.demo-table #tutorial-'+id+' li').each(function(index) {
        $(this).addClass('highlight');
        if(index == $('.demo-table #tutorial-'+id+' li').index(obj)) {
            return false;   
        }
    });
}
 
function removeHighlight(id) {
    $('.demo-table #tutorial-'+id+' li').removeClass('selected');
    $('.demo-table #tutorial-'+id+' li').removeClass('highlight');
}
 
function addRating(obj,id) {
    $('.demo-table #tutorial-'+id+' li').each(function(index) {
        $(this).addClass('selected');
        $('#tutorial-'+id+' #rating').val((index+1));
        if(index == $('.demo-table #tutorial-'+id+' li').index(obj)) {
            return false;   
        }
    });
    $.ajax({
    url: "/add_rating",
    data:'id='+id+'&rating='+$('#tutorial-'+id+' #rating').val(),
    type: "POST"
    });
    
    
}
 
 
function resetRating(id) {
    if($('#tutorial-'+id+' #rating').val() != 0) {
        $('.demo-table #tutorial-'+id+' li').each(function(index) {
            $(this).addClass('selected');
            if((index+1) == $('#tutorial-'+id+' #rating').val()) {
                return false;   
            }
        });
    }
} </script>
 
 
</HEAD>
<BODY>
<table class="demo-table">
<tbody>
 
<?php
if(!empty($result)) {
$i=0;
foreach ($result as $tutorial) {
?>
 
<td valign="top">
<div class="feed_title"><?php echo $tutorial["title"]; ?></div>
<div id="tutorial-<?php echo $tutorial["id"]; ?>">
<input type="hidden" name="rating" id="rating" value="<?php echo $tutorial["rating"]; ?>" />
<ul onMouseOut="resetRating(<?php echo $tutorial["id"]; ?>);">
  <?php
  for($i=1;$i<=5;$i++) {
  $selected = "";
  if(!empty($tutorial["rating"]) && $i<=$tutorial["rating"]) {
    $selected = "selected";
  }
  ?>
  <li class='<?php echo $selected; ?>' onmouseover="highlightStar(this,<?php echo $tutorial["id"]; ?>);" onmouseout="removeHighlight(<?php echo $tutorial["id"]; ?>);" onClick="addRating(this,<?php echo $tutorial["id"]; ?>);">★</li>  
  <?php }  ?>
<ul>
</div>
<div><?php echo $tutorial["description"]; ?></div>
</td>
 
<?php       
}
}
?>
</tbody>
</table>
</BODY>
</HTML>
 
 
<?php
if(isset($tutorial['id']))
{
echo "";
}
else
{
mysqli_query($CONNECT, "INSERT INTO `tutorial` VALUES ($Info[id], '', '', 0)");
echo "";
}
?>
второй файл:
PHP/HTML
1
2
3
4
5
6
7
8
<?php
if(!empty($_POST["rating"]) && !empty($_POST["id"])) {
require_once("dbcontroller.php");
$db_handle = new DBController();
$query ="UPDATE tutorial SET rating='" . $_POST["rating"] . "' WHERE id='" . $_POST["id"] . "'";
$result = $db_handle->updateQuery($query);
}
?>
и третий:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
class DBController {
    private $host = "localhost";
    private $user = "";
    private $password = "";
    private $database = "";
    
    function __construct() {
        $conn = $this->connectDB();
        if(!empty($conn)) {
            $this->selectDB($conn);
        }
    }
    
    function connectDB() {
        $conn = mysql_connect($this->host,$this->user,$this->password);
        return $conn;
    }
    
    function selectDB($conn) {
        mysql_select_db($this->database,$conn);
    }
    
    function runQuery($query) {
        $result = mysql_query($query);
        while($row=mysql_fetch_assoc($result)) {
            $resultset[] = $row;
        }       
        if(!empty($resultset))
            return $resultset;
    }
    
    function numRows($query) {
        $result  = mysql_query($query);
        $rowcount = mysql_num_rows($result);
        return $rowcount;   
    }
    
    function updateQuery($query) {
        $result = mysql_query($query);
        if (!$result) {
            die('Invalid query: ' . mysql_error());
        } else {
            return $result;
        }
    }
}
?>

Что необходимо сделать и добавить для подсчета голосов? Спасибо за помощь!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.09.2016, 22:14
Ответы с готовыми решениями:

PHP+JQUERY+AJAX
Имею таблицу с 3-мя полями - id, name - имя товара, dop_info -доп. инфа) Сначала вывел 5 товаров. Далее условие написал, если больше...

PHP и JQUERY и AJAX
Здравствуйте, ФОрумчане!!! Тут такой вопрос возник про технологию AJAX , вот : \итак у меня есть база данных в которую заносится мэйл...

Jquery AJAX и php
Не могу понять в чем ошибка. Вроде бы ajax запрос верно написан, но не выводит ничего, а постоянно выполняется beforeSend. Использую...

5
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
23.09.2016, 10:00
Цитата Сообщение от koltsovmaksim Посмотреть сообщение
чтобы рейтинг нормально считал а не просто заменял значение выбранной звезды на кол-во нажатых звезд, ничего не запоминая и не суммируя.
Писать все оценки в отдельную таблицу, где будет каждая оценка, а не только последняя.
0
0 / 0 / 0
Регистрация: 22.09.2016
Сообщений: 3
23.09.2016, 10:51  [ТС]
Писать все оценки в отдельную таблицу, где будет каждая оценка, а не только последняя.
Спасибо за ответ, предположим я создал таблицу rates с отдельными оценками, id - тот, кто проголосовал, vote - оценка
Или можно в ту таблицу которая у меня есть (tutorial)?
И что необходимо после этого поменять в коде?

Вот это? на что поменять?
Code
1
$query ="UPDATE tutorial SET rating='" . $_POST["rating"] . "' WHERE id='" . $_POST["id"] . "'"
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
23.09.2016, 11:15
Цитата Сообщение от koltsovmaksim Посмотреть сообщение
Вот это? на что поменять?
Теперь надо 2 запроса. Первый - занести оценку в таблицу оценок. Второй, посчитать среднее орефметическое оценок и занести в tutorial
0
0 / 0 / 0
Регистрация: 22.09.2016
Сообщений: 3
23.09.2016, 16:08  [ТС]
Спасибо!

Теперь надо 2 запроса. Первый - занести оценку в таблицу оценок. Второй, посчитать среднее орефметическое оценок и занести в tutorial


А это менять нужно? что еще нужно менять в остальном коде?

Code
1
2
3
4
5
6
    });
    $.ajax({
    url: "/add_rating",
    data:'id='+id+'&rating='+$('#tutorial-'+id+' #rating').val(),
    type: "POST"
    });
Добавлено через 1 час 36 минут
Прошу помощи,

не понимаю я этот код, а рейтинг нужен, подскажите, как правильно написать этот кусок кода, чтобы заработало:

Это то, что было
PHP/HTML
1
2
3
4
5
6
7
8
<?php
if(!empty($_POST["rating"]) && !empty($_POST["id"])) {
require_once("dbcontroller.php");
$db_handle = new DBController();
$query ="UPDATE tutorial SET rating='" . $_POST["rating"] . "' WHERE id='" . $_POST["id"] . "'";
$result = $db_handle->updateQuery($query);
}
?>
А вот что надо, только как это оформить, чтобы работало?:

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
if(!empty($_POST["rating"]) && !empty($_POST["id"])) {
require_once("dbcontroller.php");
$db_handle = new DBController();
$query ="UPDATE rates SET id='" . $_POST["id"] . "' AND SET vote='" . $_POST["rating"] . "'";
 
$Odin = "SELECT COUNT(*) FROM `rates` WHERE id='" . $_POST["id"] . "'";
 
$Dva = "SELECT SUM(vote) FROM `rates` WHERE id='" . $_POST["id"] . "'";
 
$Tri = "UPDATE `tutorial` SET rating=($Dva)/($Odin) WHERE id = '$_POST['id']'";
 
$result = $db_handle->updateQuery($query);
}
?>
Понимаю что тут много ошибок, но как оформить, буду очень благодарен! Спасибо
0
 Аватар для dukesov
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
23.09.2016, 19:48
Есть готовое решение, например: тут
Сам использую. И считает, и отображает и голосует отлично.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2016, 19:48
Помогаю со студенческими работами здесь

PHP AJAX не подключаются JQUERY параметры
Добрый день вот такая проблема. Вот есть код $(document).ready(function(){ $('#select_color').change(function(){ ...

Форма обратной связи на PHP и jQuery с использованием Ajax
Здравствуйте, С наступившим Новым Годом! Подскажите, пожалуйста, устанавливал форму обратной связи: &quot;Форма обратной связи на PHP и...

PHP+jQuery.ajax - только для залогиненого пользователя
Доброй ночи. Ситуация - есть WEB прилада, работает только если юзверь залогинился. Прикрутил AJAX, написал обработчик url:...

Sending an AJAX request by jQuery to write to a text file using PHP
Еще раз всем привет Нашел такой скрипт и он не работает Можете исправить его? &lt;html&gt; &lt;script...

Пример простейшего калькулятора на PHP без перезагрузки страницы (чистый Ajax, без jQuery и других библиотек)
Привет. Это, в каком-то смысле, продолжение креатива https://www.cyberforum.ru/php-beginners/thread1889429.html но здесь я решил не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru