Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рейтинг новости (+1 или -1), php, mysql, ajax 
:(
    Опции темы
Feldmarschall
Дата 7.7.2008, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: нет
Всего: 32



Это отдельная сложная тема, хе-хе.
Для начала надо ответить себе на вопрос, а кому может взбрести в голову накручивать рейтинг твоим новостям.
PM   Вверх
krundetz
Дата 7.7.2008, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



Цитата(JEEN @ 7.7.2008,  00:00)
а как сделать чтобы пользователь не мог одной новости приплюсовывать несколько раз?

Я же сказал что делаешь проверку на прова пользователя в часности и на права повторно проплюсовать новость. Вся проверка сводиться к тому что в БД заводиться отдельная таблица в которую будет отмечать кто за какую новость уже проголосовал а дальше просто проверяешь естьли там этот юзер либо его нет


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
JEEN
Дата 11.7.2008, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 8.3.2008

Репутация: нет
Всего: 1



Цитата(Feldmarschall @  7.7.2008,  08:36 Найти цитируемый пост)
Это отдельная сложная тема, хе-хе.Для начала надо ответить себе на вопрос, а кому может взбрести в голову накручивать рейтинг твоим новостям.


"новости" это я образно сказал.. ;)

 
Цитата(krundetz @  7.7.2008,  14:35 Найти цитируемый пост)
Я же сказал что делаешь проверку на прова пользователя в часности и на права повторно проплюсовать новость. Вся проверка сводиться к тому что в БД заводиться отдельная таблица в которую будет отмечать кто за какую новость уже проголосовал а дальше просто проверяешь естьли там этот юзер либо его нет


ну у меня не все так серьезно чтобы такую проверку делать... я порылся немного на форуме и нашел как сделать через куки.
кому-нибудь может пригодится, вот в этой теме http://forum.vingrad.ru/forum/topic-83976/unread-1.html


Feldmarschall, krundetz, огромное спасибо за помощь ;)

Добавлено через 7 минут и 50 секунд
эээм.... щас вот еще подумал... у меня вообще цель пока научиться кодить на php с использованием mysql... учусь помаленьку... УЧУЧЬ.. а не copy/paste... но хотелось бы чтобы все таки страница не перезагружалась при изменении рейтинга... тут как уже было сказано без AJAX'а не обойтись.. но изучать все его тонкости мне пока не надо и времени нет :( может есть какая-нибудь статья или пример как сделать то что я хочу?
PM MAIL   Вверх
JEEN
Дата 17.7.2008, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 8.3.2008

Репутация: нет
Всего: 1



 smile  столько тем уже про ajax прочитал.. ниче понять не могу =(

http://forum.vingrad.ru/index.php?showtopi...st&p=445827

вот этот пример то что мне надо или нет?%)
PM MAIL   Вверх
JEEN
Дата 14.8.2008, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 8.3.2008

Репутация: нет
Всего: 1



ну что, никто не поможет? :(
PM MAIL   Вверх
Feldmarschall
Дата 15.8.2008, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: нет
Всего: 32



С перезагрузкой уже сделал?
PM   Вверх
JEEN
Дата 15.8.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 8.3.2008

Репутация: нет
Всего: 1



Feldmarschall, ага, я же писал уже, еще на первой странице код лежит smile

вчера всю ночь статьи по аяксу читал, все так сложно %) одну статью только нашел, которую хоть как то понял.

создаестся файл ajax.js

Код

function createHttpRequest() {
var httpRequest;
var browser = navigator.appName;

if (browser == "Microsoft Internet Explorer") {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else {
httpRequest = new XMLHttpRequest();
}

return httpRequest;
}

function sendRequest(file, _resultId, getRequestProc) {
resultId = _resultId;
document.getElementById(resultId).innerHTML = 'Загрузка...';
httpRequest.open('get', file);
httpRequest.onreadystatechange = getRequestProc;
httpRequest.send(null);
}

function getRequest() {
if (httpRequest.readyState == 4) {
document.getElementById(resultId).innerHTML = httpRequest.responseText;
}
}

var httpRequest = createHttpRequest();
var resultId = '';


а вот это уже html документ

Код

<html>
<head>
<title>Привет, мир AJAX'a</title>
<script language="JavaScript" src="ajax.js" type="text/javascript"></script>
</head>

<body>

<a href="#" onclick="javascript:sendRequest('hello.txt', 'result', getRequest);">Кликни по мне, чтобы отправить запрос</a>.
<p id="result">Здесь будет результат запроса</p>

</body>
</html>


P.S. взял с http://www.xakep.ru/post/35903/default.asp

все работает отлично. Пытаюсь это вставить в свой код. Вставлял всяко... постоянно лаги были, либо:
1) рейтинг не прибавлялся
2) прибавлялся, но только после того как сам обновлю страницу
3) когда жму на + или - браузер думает... и ниче не делает, секунды через 3 обновляет страницу :(

Изменения в коде:
было:
Код

<a href="/rating.php?page=<?=$_GET['page']?>&pic=<?=$_GET['pic']?>&sort=<?=$_GET['sort']?>&action=up&id=<?=$status['id']?>" title="Нравится">+</a>
<b><?=$status['rating']?></b> // вывод рейтинга

стало:
Код

<a href="" onClick="javascript:sendRequest('/rating.php?action=up&id=<?=$status['id']?>', 'result<?=$status['id']?>', getRequest);" title="Нравится">+</a>
<b id="result<?=$status['id']?>"><? include "./rating.php";?></b> // вывод рейтинга

Вопросы:
1) раньше я передавал много переменных для того, чтобы потом после изменения рейтинга вернуться на ту же страницу smile а если не будет перезагрузки страницы, то и мне не надо передавать эти переменные?
2) я правильно переделал вывод рейтинга? О.о 

изменения в rating.php
было:
Код

if (!$id || !$sort || !$page || !$action)
    {
        echo 'Вы ввели не все необходимые сведения.<br>'.'Пожалуйста, вернитесь к предыдущей странице и повторите попытку.';
        echo "<a href='./index.php'>Вернуться на главную страницу</a>";
        exit;
    }
    else {
        setcookie ("limit".$id,"yes",time()+43200, "/");
        
        if ($action == 'up') {
            $query = "UPDATE `status` SET `rating` = `rating` + 1 WHERE `id` = $id";
        }
        elseif ($action == 'down') {
            $query = "UPDATE `status` SET `rating` = `rating` - 1 WHERE `id` = $id";
        }  
            
        $result = mysql_query($query);
        if ($result)
        {            
            header("Location: index.php?page=$page&pic=$pic&sort=$sort");   
        }
        
    }

стало:
Код

if (!$id || !$action)
    {
        echo $status['rating'];
    }
    else {
        setcookie ("limit".$id,"yes",time()+43200, "/");
        
        if ($action == 'up') {
            $query = "UPDATE `status` SET `rating` = `rating` + 1 WHERE `id` = $id";
        }
        elseif ($action == 'down') {
            $query = "UPDATE `status` SET `rating` = `rating` - 1 WHERE `id` = $id";
        }  
            
        $result = mysql_query($query);
        if ($result)
        { 
            echo $status['rating'];        
        }
        
    }


при таких изменениях когда я нажимаю на рейтинг, браузер думает секунд 3-5, потом перезагружает страницу и только потом меняет рейтинг. И еще.. думаю потом будут еще проблемы с куками)... но сейчас не об этом.

Это сообщение отредактировал(а) JEEN - 15.8.2008, 11:37
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.