Кармометр

1ive

Well-Known Member
12.09.2010
621
0
Россия, Курск
#1
Хочу всех рассказать о своем новоизобретенном велосипеде)
Даже не просто рассказать, а показать как все работает...

Итак, сегодня мы я расскажу как сделать "кармометр"
Зачем? хм...
Каждый человек любит подниматься в глазах других.
Среди них есть и такие, кому нужно подниматься и в своих глазах..

Этот как прокачивать своего "эльфа 80г уровня", только более глобально). Ты прокачиваешь сам себя!
Да и каждому нужны какие-либо стимулы и награды в жизни..

Приступим?

Дело все будет работать на php + 2 таблицы в MySQL для хранения информации.
На главной - текущая карма (рейтинг), две кнопочки (+ и -) ну и, наверное, список тех, кто поставил оценку)


Не знаю, можно ли и это тоже называть говнокодом)
Если что - напишу еще раз)


PHP:
$dbName = "база данных"; 
mysql_connect("сервер","пользователь","пароль ");
mysql_select_db($dbName);
$query = "SELECT `karma` FROM `karma` LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_assoc($sql);
$karma = $row['karma'];
$ip = $_SERVER['REMOTE_ADDR'];
function update_karma()
{
global $karma;
$query = "UPDATE karma SET karma='$karma'";
mysql_query($query) or die (mysql_error());
}

function secure($value)
{ 
$value=htmlspecialchars($value);
$value=preg_replace("/\n/",'<br>',$value);return $value;
}

function add_mess($znak)
{
global $mess;
global $ip;
global $nick;
global $id; 
$query = "INSERT INTO why VALUES('$id','$znak','$mess', '$ip', '$nick')";
mysql_query($query) or die(mysql_error());
}
function done_pr()
{
die('Оценка добавлена.<a href="index.php">Вернуться на главную</a>');
}


function print_form($add_znak)
{ 
print('
<form action="index.php" method="post">
От
<input name="nick" value="Анонимуса"></input>
За
<textarea cols="40" rows="3" type="text" name="mess" value=""></textarea>
<input type="submit" name="'.$add_znak.'" value="Добавить"/>
</form>');
}
function print_why() 
{
$query = "SELECT * FROM why";
$res = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_array($res))
{
print('<span>'.$row['znak'].' от '.$row['nick'].' сообщение '.$row['text'].'</span><br/>');
}
}


if(isset($_POST['nick'])){$nick = secure($_POST['nick']);}
if(isset($_POST['mess'])){$mess = secure($_POST['mess']);}

if(isset($_POST['add_minus'])){print_form(minus);exit;}
if(isset($_POST['minus'])){$karma--; update_karma();add_mess('-');done_pr();}
if(isset($_POST['add_plus'])){print_form(plus);exit;}
if(isset($_POST['plus'])){$karma++; update_karma();add_mess('+');done_pr();}

print($karma);print('<form action="index.php" method="post"><input type="submit" value="+" name="add_plus"/><input type="submit" value="-" name="add_minus"/></form>');print_why();
 

1ive

Well-Known Member
12.09.2010
621
0
Россия, Курск
#3
да-да-да)
Именно говнокод.
Согласен..
Писал на скорою руку)) в неподходящей обстановке...не было времени оптимизировать)


Мне стыдно.
Исправлюсь.
Завтра.

:facepalm:
 

vital

Больной Компом Детектед
29.01.2006
2 432
40
codeby.net
#4
У лайва партиное задание. Не отвлекай=) Он под моей опекой=)
 
04.09.2006
2 566
2
Минск
#7
Господа, сорри за офтоп, но у меня созрел лозунг: "Даешь больше говнокода по опекой у vital-а!"
 

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#8
European меня вот тоже удивило - обычно vital как раз против подобного кода и очень жестко за это наезжает.
Но там действительно серьезное партийное задание было =)
 

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#9
кстати, а это так и задумано - такое цветовое решение для текста после добавления оценки? =)
karm1.jpg
 

1ive

Well-Known Member
12.09.2010
621
0
Россия, Курск
#10
ПереписаЛ)
Линчуйте...

Любой код можно оптимизировать до бесконечности..

Насчет цветогого решения...Опять же) Не очень хотелось подбирать что-то оригинальное.. Просто взял за основу три цвета.
(#fff, #f9f9f9,#444)

На 1ive.ru/karma - пример работы(совсем без дизайна)
 

vital

Больной Компом Детектед
29.01.2006
2 432
40
codeby.net
#13
ненавижу процедурный подход и PHP4 style. ЧА посмотрю код внимательно.

Добавлено: посмотрел.
Ты что, по Попову учился? Переписывать еще раз.
global забудь.
вместо этого preg_replace("/\n/",'<br>',$value);
юзай nl2br();
Это типа маленькие подсказки. + логику немного стоит пересмотреть.
И сделай это классом(очень желательно).
 

1ive

Well-Known Member
12.09.2010
621
0
Россия, Курск
#17
Не будем учитывать твою личную неприязнь к процедурам)
Без global - не работает
nl2br(); - не такое уж и серьезное изменение..

И вообще я не вижу смысла в каких-либо изменениях.
Можете закидать меня тапками