| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: X технологии > Рейтинг новости (+1 или -1) |
| Автор: JEEN 1.7.2008, 22:54 |
| На сайте есть новости. Хочу чтобы любой пользователь мог изменять их рейтинг, ставив + или - подскажите пожалуста как мне это можно осуществить? все новости находятся в БД MySQL. а для того чтобы каждый раз не перезагружать страницу, нужно использовать AJAX.. но 3х часовой поиск в google практически ничего не дал :( |
| Автор: Feldmarschall 1.7.2008, 23:20 |
| Ну, искать-то в гугле надо, наверное, не по запросу "рейтинг новости", а по запросу "обучение AJAX". Хотя я бы на твоем месте сначала сделал без аякса, а потом уже занимался украшениями. |
| Автор: Feldmarschall 2.7.2008, 00:06 |
| Если у тебя все медленно грузится, то надо сделать, чтобы грузилось быстрее. А не изобретать костыли, которыми ты и пользоваться не умеешь. Делать все равно придется. Серверная часть что с аяксом, что без аякса - одинаковая. С базой у тебя не аякс будет работать. поэтому надо не рассуждать о том, как хорошо бы было бы сделать с красивыми фенечками, и не беседовать на форуме о том, как у тебя все медленно грузится, а взять, и сделать. Без аякса. Чтобы было хоть что-то. к чему потом можно будет прицепить аякс. |
| Автор: krundetz 2.7.2008, 09:16 | ||||
| JEEN сделайте действительно сначала как сказал Feldmarschall, тоесть без ajax. так сказать разбейте задачу на два этапа сначала внутренний функционал потом внешний. Всего то будет два запроса типа таких http://host.ru/?news=id&action=up и http://host.ru/?news=id&action=down. В теле скрипта проверяе пришедшие значения и права. Выполняете один из запросов к БД.
Далее перересовываете страницу. Следующий шаг добавление ajax. Создаете ajax запросы вточности повторяющие предыдущие создаете реакцию а эти запросы, тоесть javascript который будет работать на клиенте. Далее меняете серверную часть вместо целой страницы она у вас теперь должна выдовать ответ клиенту в котором будет сообщать о проделаных действиях. |
| Автор: Feldmarschall 2.7.2008, 09:22 | ||
| Да сообщать, в принципе, не нужно. Можно сразу яваскриптом единичку рисовать. По поводу кода. возможно, я покажусь идиотом, но ситуация, на мой взгляд, в веб-программировании настолько чудовищная, что даже такие иллюстративные запросы надо обязательно сопровождать строчкой
Особенно при том, что большинство приходит на форум чтобы скопировать приведенный код, ни разу над ним не задумавшись. |
| Автор: krundetz 2.7.2008, 14:26 |
| Feldmarschall я не зря упомянул права собственна ответ возвращается когда у пользователя нет прав делать операцию как вариант он уже один раз голосовал за эту новость или поднимал репутацию человеку который ему помог на форуме за последние 24 часа. По поводу идиотизма. Извините при всем желание вас так назвать не получается. |
| Автор: IZ@TOP 2.7.2008, 16:35 | ||
А при чем тут X-технологии??!
Тогда с AJAX вам точно не по пути. Ждать когда хоть что-то произойдет, после нажатия на кнопочку при тормозном сайте - кому захочется? |
| Автор: JEEN 4.7.2008, 13:32 |
| krundetz, большое спасибо Feldmarschall, krundetz, частично убрал тормознутость сайта, но меня удивляет то что он медленно работает на локалхосте Oo... а что будет если я его в инет кину??? %) сделал все как Вы говорили, сделал без AJAX... стоит ли мне парица с аяксом для ускорения работы или это просто понт и быстрее работать от этого не станет? |
| Автор: krundetz 4.7.2008, 13:39 | ||
Скорее всего работать он будет быстрее на сервере у провайдера чем на вашей домашней машине Насчет применять не применять почему бы и нет если это сократит и ваш и пользовательский трафик, просто не нужно перебарщивать с ним |
| Автор: Feldmarschall 4.7.2008, 14:00 |
| Аякс работу не ускорит. Надо снова переделывать, чтобы летал. Честно говоря, я вообще не представляю, как можно сделать сайт, который будет тормозить с единственным посетителем. какие конкретные показатели этого "медленно работает"? |
| Автор: krundetz 4.7.2008, 14:21 |
| JEEN существует такая вещь как профайлер советую воспользоваться |
| Автор: JEEN 4.7.2008, 18:02 | ||||
| krundetz, вы апсолютно правы)) на сервере у провайдера сайт летает Feldmarschall, если я нажимаю на ссылку от которой меняется запрос к БД и жду 2 секунды пока что то поменяется, я считаю это тормоза) но теперь их нет krundetz, поискал что такое профайлер... почитал немного.. мне так показалось что мне рано еще это изучать %) --------------------------- ну вот я все сделал, но.. если допустим новость содержиться внизу, я жму на [+] или [-] у меня страница поднимается вверх :( как сделать так чтобы пользователь не заметил что страница обновилась? и изменение рейтинга ему не мешало просмотру страниц? Добавлено через 5 минут и 52 секунды вот код на всякий случай...))
rating.php
|
| Автор: krundetz 4.7.2008, 21:04 |
| К сожалению если страница перезагружается то браузер всегда её отображает с начала. Сдесь действительно тогда надо использовать ajax. |
| Автор: JEEN 7.7.2008, 00:00 |
| а как сделать чтобы пользователь не мог одной новости приплюсовывать несколько раз? |
| Автор: Feldmarschall 7.7.2008, 08:36 |
| Это отдельная сложная тема, хе-хе. Для начала надо ответить себе на вопрос, а кому может взбрести в голову накручивать рейтинг твоим новостям. |
| Автор: krundetz 7.7.2008, 14:35 | ||
Я же сказал что делаешь проверку на прова пользователя в часности и на права повторно проплюсовать новость. Вся проверка сводиться к тому что в БД заводиться отдельная таблица в которую будет отмечать кто за какую новость уже проголосовал а дальше просто проверяешь естьли там этот юзер либо его нет |
| Автор: JEEN 11.7.2008, 01:12 | ||||
"новости" это я образно сказал.. ;)
ну у меня не все так серьезно чтобы такую проверку делать... я порылся немного на форуме и нашел как сделать через куки. кому-нибудь может пригодится, вот в этой теме http://forum.vingrad.ru/forum/topic-83976/unread-1.html Feldmarschall, krundetz, огромное спасибо за помощь ;) Добавлено через 7 минут и 50 секунд эээм.... щас вот еще подумал... у меня вообще цель пока научиться кодить на php с использованием mysql... учусь помаленьку... УЧУЧЬ.. а не copy/paste... но хотелось бы чтобы все таки страница не перезагружалась при изменении рейтинга... тут как уже было сказано без AJAX'а не обойтись.. но изучать все его тонкости мне пока не надо и времени нет :( может есть какая-нибудь статья или пример как сделать то что я хочу? |
| Автор: JEEN 17.7.2008, 11:38 |
| http://forum.vingrad.ru/index.php?showtopic=56018&view=findpost&p=445827 вот этот пример то что мне надо или нет?%) |
| Автор: JEEN 14.8.2008, 20:03 |
| ну что, никто не поможет? :( |
| Автор: Feldmarschall 15.8.2008, 08:46 |
| С перезагрузкой уже сделал? |
| Автор: JEEN 15.8.2008, 11:34 | ||||||||||||
| Feldmarschall, ага, я же писал уже, еще на первой странице код лежит вчера всю ночь статьи по аяксу читал, все так сложно %) одну статью только нашел, которую хоть как то понял. создаестся файл ajax.js
а вот это уже html документ
P.S. взял с http://www.xakep.ru/post/35903/default.asp все работает отлично. Пытаюсь это вставить в свой код. Вставлял всяко... постоянно лаги были, либо: 1) рейтинг не прибавлялся 2) прибавлялся, но только после того как сам обновлю страницу 3) когда жму на + или - браузер думает... и ниче не делает, секунды через 3 обновляет страницу :( Изменения в коде: было:
стало:
Вопросы: 1) раньше я передавал много переменных для того, чтобы потом после изменения рейтинга вернуться на ту же страницу 2) я правильно переделал вывод рейтинга? О.о изменения в rating.php было:
стало:
при таких изменениях когда я нажимаю на рейтинг, браузер думает секунд 3-5, потом перезагружает страницу и только потом меняет рейтинг. И еще.. думаю потом будут еще проблемы с куками)... но сейчас не об этом. |