Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Подключение плагина рейтинга jQuery, помогите подключить
koltsovmaksim  
 ۩  [x]    Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 21
Пользователь №: 43384
На форуме: 8 месяцев, 7 дней
Карма:




Пытаюсь подключить первый раз плагин, брал отсюда http://phppot.com/jquery/dynamic-star-rati...php-and-jquery/

Что необходимо сделать с кодом, чтобы заработало?
Таблицу в бд создал, файлы закачал

Это первый файл:


<?php
require_once("dbcontroller.php");
$db_handle = new DBController();
$query ="SELECT * FROM tutorial";
$result = $db_handle->runQuery($query);
if(!empty($result)) {
foreach ($result as $tutorial) {
?>
<tr>
<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>
</tr>
<?php
}} ?>


Это второй :



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.php",
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;
}
});
}
}





А это третий:


<?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);
}
?>



Буду признателен за помощь!

Это сообщение отредактировал koltsovmaksim - 20.09.2016 - 17:33
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1513
Пользователь №: 28976
На форуме: 5 лет, 9 месяцев, 24 дня
Карма: 86




а где результат твоих действий ? Какая ошибка ?
jquery надеюсь подключил ?

Отлаживай свой код по частям, и разберешься где ошибки.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
koltsovmaksim  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 21
Пользователь №: 43384
На форуме: 8 месяцев, 7 дней
Карма:




Цитата
Отлаживай свой код по частям, и разберешься где ошибки.


Не работает именно обработчик - третий файл, то есть в бд ничего не изменяется

Да подключил, скажите пожалуйста, почему на чистом сайте все работает, а на старом которой я делаю нет, хотя таблица, данные, все тоже самое, что необходимо проверить?

Спасибо!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1513
Пользователь №: 28976
На форуме: 5 лет, 9 месяцев, 24 дня
Карма: 86




	$.ajax({
url: "add_rating.php",
data:'id='+id+'&rating='+$('#tutorial-'+id+' #rating').val(),
type: "POST"
}),
.
done(function( data ) {
console.log('Результат:\n'+data);
});
и смотри что происходит в консоле
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
koltsovmaksim  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 21
Пользователь №: 43384
На форуме: 8 месяцев, 7 дней
Карма:




Спасибо за ответы)


Пишет вот это:


[Wed Sep 21 23:17:17 2016] [error] [client 77.50.255.7] File does not exist: /home/p/pinair/helperkc/public_html/index
[Wed Sep 21 23:17:18 2016] [error] [client 77.50.255.7] File does not exist: /home/p/pinair/helperkc/public_html/index
[Wed Sep 21 23:17:21 2016] [error] [client 77.50.255.7] script '/home/p/pinair/helperkc/public_html/index.php' not found or unable to stat
[Wed Sep 21 23:17:22 2016] [error] [client 77.50.255.7] script '/home/p/pinair/helperkc/public_html/index.php' not found or unable to stat



Я создал новый сайт, запустил - все работает, я понял что когда подключаю файл .htaccess рейтинг перестаёт записывать данные в бд то есть этот код не работает из-за .htaccess:


<?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);
}
?>




А вот мой .htaccess :



RewriteEngine on
RewriteRule ^resource/(.*)$ resource/$1 [L]
RewriteRule ./index.php [L]
RewriteRule ^sitemap\.xml$ - [L]
RewriteRule ^google109d5949df7c3dbe\.html$ - [L]
RewriteRule ^.*$ index.php [L]




но если я удаляю этот код, то рейтинг начинает работать, НО все мои страницы на сайте перестают открываться, кроме главной.

Как изменить .htaccess , чтобы и страницы работали и рейтинг.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1513
Пользователь №: 28976
На форуме: 5 лет, 9 месяцев, 24 дня
Карма: 86




нужно не меня файл .htaccess, а изменить url аякс запроса на рабочий.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
koltsovmaksim  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 21
Пользователь №: 43384
На форуме: 8 месяцев, 7 дней
Карма:




Цитата

нужно не меня файл .htaccess, а изменить url аякс запроса на рабочий.


Как я понимаю вот этот адрес


$.ajax({
url: "add_rating.php",



Я менял и так url: "/add_rating" и "/add_rating.php" и "/page/add_rating.php"

Не понимаю, как сделать чтобы заработало, подскажите
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
koltsovmaksim  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 21
Пользователь №: 43384
На форуме: 8 месяцев, 7 дней
Карма:




Цитата

нужно не меня файл .htaccess, а изменить url аякс запроса на рабочий.


спасибо помогло, вариант "/add_rating" заработал!)

по поводу поключения остался вопрос, у меня на сайте пользователи у каждого свой url такого вида "site.ru/user/maksim", "site.ru/user/nikita", "site.ru/user/masha" и так далее.

сейчас у меня по три рейтинга на каждой странице пользователей как в демо-версии и они не привязаны к пользователям

не понимаю как вызвать у каждого пользователя свой рейтинг, чтобы голосовать именно за него на его странице, спасибо за помощь!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1513
Пользователь №: 28976
На форуме: 5 лет, 9 месяцев, 24 дня
Карма: 86




У каждого пользователя должен быть id в базе. Вот к нему и привязывайся.
Создать таблицу с рейтингами, для каждой записи и пользователя.
id, tutorial_id, rating, user_id, date
и храни там рейтинги.
в этот запрос
SELECT * FROM tutorial
добавляешь LEFT JOIN и подключаешь таблицу с рейтингами.
Ну при обновлении проверяешь есть ли запись. есть - обновляешь данные, нет - создаешь .
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
koltsovmaksim  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 21
Пользователь №: 43384
На форуме: 8 месяцев, 7 дней
Карма:




Вот смотри мои таблицы в бд, плиз

1 - users


user posted image


2 - tutorial , которая в демо-версии, её оставлять?

user posted image


3 - которую Вы мне сказали создать - rating

user posted image


как привязать к id пользователю один рейтинг и показывать на его странице?

LEFT JOIN не работает в sql пишет ошибка запроса




PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1513
Пользователь №: 28976
На форуме: 5 лет, 9 месяцев, 24 дня
Карма: 86




// $user_id - это id пользователя, должен быть где-то выше
$query ="
SELECT
t.*,
r.rating
FROM
`tutorial` AS t
LEFT JOIN
`rating` AS r ON r.tutorial_id = t.id AND user_id =
$user_id
";
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
koltsovmaksim  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 21
Пользователь №: 43384
На форуме: 8 месяцев, 7 дней
Карма:




понял как установить попроще
сделал так, где $Info[id] - id пользователя конкретной страницы


$query ="SELECT `id`, `rating` FROM tutorial WHERE `id` = $Info[id]";




последний вопрос и шаг) как правильно проверить есть ли в таблице tutorial `id` для $Info[id], если нет то CONNECT и создаем строку в таблице tutorial с пользователем и соответственно появляется рейтинг на странице

спасибо за ответы!)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1513
Пользователь №: 28976
На форуме: 5 лет, 9 месяцев, 24 дня
Карма: 86




зачем изобретать велосипед ? Я ведь написал вывод "статьи" и рейтинга к ней.
Если нет рейтинга - MySQL вернет NULL . Сделаем проверку
$query ="
SELECT
t.*,
IF (r.`rating` IS NULL, 0 , r.`rating`) AS `rating`,
/*
можно ещё вот так
IFNULL(r.`rating`, 0) AS `rating`,
*/
(SELECT COUNT(id) FROM `rating` WHERE tutorial_id = t.id GROUP BY tutorial_id) AS `count`
FROM
`tutorial` AS t
LEFT JOIN
`rating` AS r ON r.tutorial_id = t.id AND r.user_id = "
.(int)$Info['id']."
"
;
Если не голосовали - возвращаем ноль, и добавил ещё
count - сколько человек голосовало.

И незачем создавать запись, если рейтинг не проставлен.

Это сообщение отредактировал Kusss - 22.09.2016 - 15:44
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
koltsovmaksim  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 21
Пользователь №: 43384
На форуме: 8 месяцев, 7 дней
Карма:




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

я вообще не понимаю зачем таблица `rating`? - это повтор двух таблиц ниже

когда есть таблица `users` - отсюда берем пользователя и получаем $Info['id'] и таблица `tutorial`где хранятся все оценки и id рейтинга, которое должно равняться $Info['id'], а если пустое или неравняется(что из этого верно?) я это и хочу узнать , как правильно сделать проверку, тогда INSERT into `tutorial` VALUES ($Info['id'], ' ', ' ', 0)


прошу помочь написать проверку, спасибо
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1513
Пользователь №: 28976
На форуме: 5 лет, 9 месяцев, 24 дня
Карма: 86




потому что $Info['id'] - это номер записи, а не пользователя.
$query ="
SELECT
t.*,
IF (r.`rating` IS NULL, 0 , r.`rating`) AS `rating`,
/*
можно ещё вот так
IFNULL(r.`rating`, 0) AS `rating`,
*/
(SELECT COUNT(id) FROM `rating` WHERE tutorial_id = t.id GROUP BY tutorial_id) AS `count`
FROM
`tutorial` AS t
LEFT JOIN
`rating` AS r ON r.tutorial_id = t.id AND r.user_id =
$user_id
WHERE
t.id = "
.(int)$Info['id']."
"
;
А вообще $Info['id'] - это что за зверь, и откуда взялся ?

Это сообщение отредактировал Kusss - 22.09.2016 - 18:22
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса