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

Поиск:

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


Шустрый
*


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

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



На сайте есть новости. Хочу чтобы любой пользователь мог изменять их рейтинг, ставив + или - 

подскажите пожалуста как мне это можно осуществить?

все новости находятся в БД MySQL. 

а для того чтобы каждый раз не перезагружать страницу, нужно использовать AJAX.. но 3х часовой поиск в google практически ничего не дал :(
PM MAIL   Вверх
Feldmarschall
Дата 1.7.2008, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Ну, искать-то в гугле надо, наверное, не по запросу "рейтинг новости", а по запросу "обучение AJAX".
Хотя я бы на твоем месте сначала сделал без аякса, а потом уже занимался украшениями.
PM   Вверх
JEEN
Дата 1.7.2008, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



я так и искал)))) 

вот лучшее что нашел http://netfaq.ru/ajax/ajax_get_req
))
 но тут немного другая ситуация :(


Цитата(Feldmarschall @  1.7.2008,  23:20 Найти цитируемый пост)
Хотя я бы на твоем месте сначала сделал без аякса, а потом уже занимался украшениями.


%) тоже вариант... но у меня итак все медленно грузится, а если еще и это будет всю страницу перезагружать то это будет жесть..)))
PM MAIL   Вверх
Feldmarschall
Дата 2.7.2008, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



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


PM   Вверх
krundetz
Дата 2.7.2008, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



JEEN сделайте действительно сначала как сказал Feldmarschall, тоесть без ajax. так сказать разбейте задачу на два этапа сначала внутренний функционал потом внешний.

Всего то будет два запроса типа таких http://host.ru/?news=id&action=up и http://host.ru/?news=id&action=down.

В теле скрипта проверяе пришедшие значения и права.

Выполняете один из запросов к БД.

Код

UPDATE `news` SET `rating` = `rating` + 1 WHERE `id` = $id


Код

UPDATE `news` SET `rating` = `rating` - 1 WHERE `id` = $id


Далее перересовываете страницу.

Следующий шаг добавление ajax.

Создаете ajax запросы вточности повторяющие предыдущие создаете реакцию а эти запросы, тоесть javascript который будет работать на клиенте.

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


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


Новичок
****


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

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



Да сообщать, в принципе, не нужно. Можно сразу яваскриптом единичку рисовать.

По поводу кода. возможно, я покажусь идиотом, но ситуация, на мой взгляд, в веб-программировании настолько чудовищная, что даже такие иллюстративные запросы надо обязательно сопровождать строчкой
Код

$id=intval($_GET['id']);

Особенно при том, что большинство приходит на форум чтобы скопировать приведенный код, ни разу над ним не задумавшись.
PM   Вверх
krundetz
Дата 2.7.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Feldmarschall я не зря упомянул права собственна ответ возвращается когда у пользователя нет прав делать операцию как вариант он уже один раз голосовал за эту новость или поднимал репутацию человеку который ему помог на форуме за последние 24 часа.

По поводу идиотизма. Извините при всем желание вас так назвать не получается. smile 

Это сообщение отредактировал(а) krundetz - 2.7.2008, 14:30


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


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



А при чем тут X-технологии??!
Цитата(JEEN @  2.7.2008,  00:41 Найти цитируемый пост)
но у меня итак все медленно грузится, а если еще и это будет всю страницу перезагружать то это будет жесть..))) 

Тогда с AJAX вам точно не по пути. Ждать когда хоть что-то произойдет, после нажатия на кнопочку при тормозном сайте - кому захочется?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
JEEN
Дата 4.7.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



krundetz, большое спасибо smile


Feldmarschall, krundetz, частично убрал тормознутость сайта, но меня удивляет то что он медленно работает на локалхосте Oo... а что будет если я его в инет кину???  %) сделал все как Вы говорили, сделал без AJAX... стоит ли мне парица с аяксом для ускорения работы или это просто понт и быстрее работать от этого не станет?
PM MAIL   Вверх
krundetz
Дата 4.7.2008, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(JEEN @ 4.7.2008,  13:32)
меня удивляет то что он медленно работает на локалхосте Oo... а что будет если я его в инет кину???  %) 

Скорее всего работать он будет быстрее на сервере у провайдера чем на вашей домашней машине

Насчет применять не применять почему бы и нет если это сократит и ваш и пользовательский трафик, просто не нужно перебарщивать с ним


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


Новичок
****


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

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



Аякс работу не ускорит.
Надо снова переделывать, чтобы летал.
Честно говоря, я вообще не представляю, как можно сделать сайт, который будет тормозить с единственным посетителем.

какие конкретные показатели этого "медленно работает"?

PM   Вверх
krundetz
Дата 4.7.2008, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



JEEN существует такая вещь как профайлер советую воспользоваться


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


Шустрый
*


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

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



krundetz, вы апсолютно правы)) на сервере у провайдера сайт летает  smile 


Feldmarschall, если я нажимаю на ссылку от которой меняется запрос к БД и жду 2 секунды пока что то поменяется, я считаю это тормоза) но теперь их нет smile)


krundetz, поискал что такое профайлер... почитал немного..  мне так показалось что мне рано еще это изучать %)


---------------------------

ну вот я все сделал, но.. если допустим новость содержиться внизу, я жму на [+] или [-] у меня страница поднимается вверх :( как сделать так чтобы пользователь не заметил что страница обновилась? и изменение рейтинга ему не мешало просмотру страниц?

Добавлено через 5 минут и 52 секунды
вот код на всякий случай...))


Код

<a href="./rating.php?page=<?=$_GET['page']?>&pic=<?=$_GET['pic']?>&sort=<?=$_GET['sort']?>&action=up&id=<?=$status['id']?>">[+]</a> <?=$status['rating']?> 

<a href="./rating.php?page=<?=$_GET['page']?>&pic=<?=$_GET['pic']?>&sort=<?=$_GET['sort']?>&action=down&id=<?=$status['id']?>">[-]</a>



rating.php

Код

<?php
    include "./tmp/config.php";

    $id = $_GET['id'];
    $pic = $_GET['pic'];
    $sort = $_GET['sort'];
    $page = $_GET['page'];
    $action = $_GET['action'];
    
    if (!$id || !$sort || !$page)
    {
        echo 'Вы ввели не все необходимые сведения.<br>'.'Пожалуйста, вернитесь к предыдущей странице и повторите попытку.';
        echo "<a href='./index.php'>Вернуться на главную страницу</a>";
        exit;
    }
    else {
        
        
        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");        
        }
    }
?>

PM MAIL   Вверх
krundetz
Дата 4.7.2008, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



К сожалению если страница перезагружается то браузер всегда её отображает с начала. Сдесь действительно тогда надо использовать ajax.


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


Шустрый
*


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

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



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


 




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


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

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