Помогите с написанием рейтинга

Статус
Закрыто для дальнейших ответов.

feniks99

Member
Регистрация
26.04.2012
Сообщения
12
Здравтсвуйте. Вот решил пробовать себя в сайтиостроении, но прогрммирование учил ток в школе. Те остатки знаний что были не сильно помогают в изучении языков. Перейду к проблеме: есть идея написать простенький рейтинг в учебных целях конечно. Попытки сделать это самому на самоучителях для чайников не увенчались успехом. Материал не понимаю напрочь да и примеры сложноваты. Рейтинг хотелось бы состоящий из двух кнопок увеличить и уменьшить соотвественно. Кнопки написать не проблема не понимаю только как написать программу которая бы по щелчку на кнопку выводила данные. может вопрос глупый но я ведь только учусь.)) Объясните пожалуйста что делать и по понятнее чтоб стал хотяб ясен принцип написания подобных вещей например на php хотя я наверно домаю на java script такого не нпишешь.) Поправьте если не прав. Заранее спасибо))
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
все просто нужно при каждом клике писать в БД запись в таблицу типа
-----------------------------------------------------------------------------------------
id пользователя | + или - | id материала, для которого эта оценка
----------------------------------------------------------------------------------------

соответственно, если id пользователя уже есть среди проголосовавших за этот материал, то ничего не пишем
 

ArhAngel

Well-Known Member
Регистрация
07.05.2011
Сообщения
378
Если в самоучителях сложновато, то наверное свои скрипты еще сложнее писать... Советую еще подучить.
На щет рейтинга - что именно интересует, по посещаемости, по лайкам или что другое?
В любом случае нужны знания php + mysql

Вот к примеру если вы заходите на страницу со статьей, а статья в базе по id = 5
то вам нужно каждый раз выполнить запрос
UPDATE articles SET rating = rating + 1 WHERE id = 5
Это наверное самое простое что вообще можно придумать
 

feniks99

Member
Регистрация
26.04.2012
Сообщения
12
Подучить конечно надо не спорю, но и хочется написать что нибудь серьезьненкое. Не программу из разряда вывод сообщения привет мир, а простое ,но и в то же время значимое . С тем что я хочу все предельно просто две кнопки и вывод чисел рейтинга. Клик по кнопке число выорсло клик по другой оно уменьшилось. Единственное как я представляю этио сделать через if, но вот не понимаю как отправить вот тот самый клик по кнопке в программу. А ведь в дальнейшем мне это может пригодится. Может кто нибудь подскажет самоучитель где все расписано не заумным языком и примерчики по проще?

все просто нужно при каждом клике писать в БД запись в таблицу типа
-----------------------------------------------------------------------------------------
id пользователя | + или - | id материала, для которого эта оценка
----------------------------------------------------------------------------------------

соответственно, если id пользователя уже есть среди проголосовавших за этот материал, то ничего не пишем
А как ограничиться записью не в базу данных а допустим в текстовый файл? Или с базой все таки попроще? Просто в самоучителе видел такой пример с записью в файл txt пример сам вроде понял, повторил, работает. А вот тут чет сел. Правда там дата в файл записывалась)))
 

ArhAngel

Well-Known Member
Регистрация
07.05.2011
Сообщения
378
вот код, писал прям здесь, ошибки не проверял

Код:
<?php
    if(!file_exists('rating.dat')){ file_put_contents('rating.dat','0'); }
    $rating = file_get_contents('rating.dat');
//тут проверяем массив $_GET на наличие "up" или "down"
   if(isset($_GET['up'])){ $rating ++; file_put_contents('rating.dat',$rating) }
   if(isset($_GET['down'])){ $rating --; file_put_contents('rating.dat',$rating) }
?>
<thml>
   <body>
Rating: <?=$rating;?>
<a href = "index.php?up=1">+</a>
<a href = "index.php?down=1">-</a>
   </body>
</html>
 

feniks99

Member
Регистрация
26.04.2012
Сообщения
12
Вставил в Dreamweawer. Ругается как раз на IF. Синтаксическая ошибка. Даже 2.Пока не нашел. За код спасибо бум пробовать вместо ссылок кнопочки поставить. А так очень благодарен!
 

ArhAngel

Well-Known Member
Регистрация
07.05.2011
Сообщения
378
Какой дримвер, ставь апач + php, настрой серв, и там все тести

Руками все делать надо, потом прбоблем с удаленными сервами и хостингами будет меньше

поищи по нету LAMP (Linux + Apache + MySQL + Php) - вот тебе сервер (линух на виртуальную машину поставь, если без винды никак)
 

feniks99

Member
Регистрация
26.04.2012
Сообщения
12
Какой дримвер, ставь апач + php, настрой серв, и там все тести

Руками все делать надо, потом прбоблем с удаленными сервами и хостингами будет меньше

поищи по нету LAMP (Linux + Apache + MySQL + Php) - вот тебе сервер (линух на виртуальную машину поставь, если без винды никак)
Без винды и в прямь никак. Linux конечно есть но не хочу там чет возиться. Насчет локального сервера есть Denwer. Через него и смотрю че получается. Щас вродь все работает. еще раз спасибо!

И еще вопрос почему при обновлении страницы рейтинг меняется?
 

ArhAngel

Well-Known Member
Регистрация
07.05.2011
Сообщения
378
Проверяйте гет запрос, если вы просто обновите такой запрос index.php?up=1 - то у вас каждый раз будет менятся рейтиг в плюс, иле down=1 - то в минус
Код:
<?php
    if(!file_exists('rating.dat')){ file_put_contents('rating.dat','0'); }
    $rating = file_get_contents('rating.dat');
//тут проверяем массив $_GET на наличие "up" или "down"
   if(isset($_GET['up'])){ $rating ++; file_put_contents('rating.dat',$rating); header("Location: index.php"); }
   if(isset($_GET['down'])){ $rating --; file_put_contents('rating.dat',$rating);  header("Location: index.php"); }
?>
<thml>
   <body>
Rating: <?=$rating;?>
<a href = "index.php?up=1">+</a>
<a href = "index.php?down=1">-</a>
   </body>
</html>
Вот подправил, будет релоад страници на нормальный урл index.php

Про линух - годика четыре тому назад, когда под виндой сидел, без нее себя не представлял. Потом решился поставить что-нить из unix-ов, да наверное ошибся, так как FreeBSD для домашнего десктопа - не оч подходит, он больше как серв хорош.
Отказался от этой безумной затеи. Потом на одном из трекеров нашел Ubunut с описанием, ну и решился скачать и поставить.
Если честно - через месяц я понял что под виндой просидел максимум 1-2 дня. Через 3 месяца зашел под винду, начал там чет-писать... Понял что ниче не получается, под линухом удобнее оказалось - чего я не ожидал, но так и получилось.
Сейчас на двух моих рабочих лошадках(компах) стоит Ubuntu (она на основе Debian что почти на всех веб-сервах стоит), на одном 11.10 на втором 12.04 Beta (Beta пускай не смущает). И только на одном стоит на виртуальной машине винда семерка ради фотошопа))

На обоих машинка настроено порядка 10-15 хостов под апачем, поставлен мускул php и питон через mod_wsgi - работают на ура, сбоев не наблюдаю, никаких траблов с оборудованием и прогами... Работаю если что серьезное на NetBeans а если по проще - стандартный Gedit - который подсвечивает почти любой синтаксис (кроме css3). Про мышу вообще забыл, любая прога контролируется полностью с клавы, даже вкладки вот в фаерфоксе Alt+1, Alt+2 и так далее. ))

Ну это просто к слову о линухе - не надо боятся перемен, часто они бывают к лучшему...

И еще, как редактор именно пхп - zend studio - отличная штука, хоть и платный, но там триал на 30 дней. Единственный минус - когда серъезный проект, оперативы хавает за гиг из-за индексации всех файлов проекта
 

feniks99

Member
Регистрация
26.04.2012
Сообщения
12
Спасибо еще раз! Каждому свое как говорится. Для меня это пока своего рода хобби. Хотя из за этого хобби чуть не взяли на работу. Стало стимулом для изучения дальше. Дается тяжеловато... Может по тому, что нет склонностей к математике, а может просто потупел так скажем. В голове много глупых вопросов, но глупых для вас. Для людей кто в этом варится или варился. А для меня лично ответ даже на такой простой с вашей точки зрения вопрос как штурм эвереста. насчет линукса.. Откровенность за откровенность. У самого второй осью стоит ubuntu 10.4 интересовался линуксом давно, но решился попробовать. Очень не привычно. Даже просто прогу установить делать по иному приходится. Знаю что она в целом для программистов. Мне как простому пользователю она пока так для развлекухи. Посмотреть потыкать узнать что к чему. Но я знаю что может она мне как нибудь и пригодится, а пока пишу простенькие сайтики под виндой. Ваш код уже пытаюсь переделать под себя. Может пойму что к чему наконец.

После изменений кода ошибку выдает. Ругается на строчки с if .
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
телепаты застрелились уже, дайте лог ошибки
 

feniks99

Member
Регистрация
26.04.2012
Сообщения
12
не ну если я кого то достал... :(
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
Все в порядке, дайте лог ошибки, что именно он пишет по поводу строки if
 

feniks99

Member
Регистрация
26.04.2012
Сообщения
12
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\*******.com\www\index.php:10) in Z:\home\*******.com\www\index.php
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
ну поставьте вместо header('Location: index.php')

echo '<meta http-equiv="refresh" content="0;url=index.php">';

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

feniks99

Member
Регистрация
26.04.2012
Сообщения
12
браузер тупо обновляет станицу. рейтинг не меняется практически при клике на ссылку
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
а файл "rating.dat" рядом со скриптом лежит?
если да, то в него что-нибудь пишется?
 

feniks99

Member
Регистрация
26.04.2012
Сообщения
12
файлик да рядом со скриптом лежит. пишется в него значение рейтиинга то есть топо цифра.
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
после
Код:
$rating = file_get_contents('rating.dat');
выводите print_r($rating);
если выведет цифру рейтинга
значит меняем

Код:
<?=$rating;?>
на

Код:
<?php echo $rating;?>
 

feniks99

Member
Регистрация
26.04.2012
Сообщения
12
страница продолжает перезагружеаться. в строке
Код:
echo '<meta http-equiv="refresh" content="0;url=index.php">';
есть надобность?

Как понимаю всех достал. Ладно. Спасибо всем! :(
 
Статус
Закрыто для дальнейших ответов.
Верх Низ