ОБСУЖДЕНИЕ

Нужно подправить код.

17 сообщений1 просмотровОткрыта
#1
Нужно подправить код. Это код обмен постов форума на бублики.
Сейчас стоит 1 пост на 1 бублик. А мне нужно сделать, 1 пост на 100 бубликов.
PHP

<?
$do = isset($_GET['do']) ? $_GET['do'] : NULL;
switch($do) {
default:

 $nk = my_int($_REQUEST['nk']);
  if (!user_inf($nk)) {
     err('Пользователь не найден!');

  } else {

if (isset($_GET['ok'])) msg('Рейтинг успешно повышен!');

$set = mysql_fetch_array(mysql_query("SELECT `price_rating` FROM `setting` WHERE `ids` = '1'"));

    $look = ($user['balls'] >= $set[0])
        ? 'Вы можете повысить рейтинг до ' . (int)($user['balls'] / $set[0]) . '%'
: 'Вы не можете повышать рейтинг.';

if (isset($_POST['up'])) {
   $proc = my_int($_POST['proc']);
   $balls = $set[0] * $proc;

     if (empty($proc)) {
    err('Укажите целое число!');
 } elseif ($balls > $user['balls']) {
    err('У вас недостаточно бубликов!');
 } elseif ($user['rating_limit'] > time()) {
    err('Повышать рейтинг можна раз в 3 часа!');
 }elseif ($proc > 100) {
    err('За один раз разрешается повышать до 100%');
 } else {
    mysql_query("UPDATE `users` SET `rating` = `rating` + '$proc' WHERE `id` = '$nk' LIMIT 1");
    mysql_query("UPDATE `users` SET `balls` = `balls` - '$balls', `rating_limit` = '" . (time() + 6480) . "' WHERE `id` = '".$user['id']."' LIMIT 1");

// запись истории
mysql_query("INSERT INTO `history_rating` SET `user` = '$nk', `who` = '".$user['id']."', `proc` = '$proc', `time` = '" . time() . "'");

    $message = 'Пользователь ' . us($user['id']) . ' повысил Вам рейтинг на ' . $proc . '%!';
            mysql_query("INSERT INTO `letters` (`id`,`who`,`idwho`,`message`,`data`,`read`,`mod`)
                     VALUES (0,'0','$nk','$message','" . time() . "','0','i')");

header('Location: avtorating.php?nk='.$nk.'&ok');
 }
}

if (rat($user['id']) >= 100) {
$OK = $div_aut . 'Ваша страница заполнена целиком!' . $div_end;
}

///////////////////////////////////////////////////////////
$percent = rat($user['id']);
if ($percent >= 0 && $percent <= 100) $ratimg = 'red.gif';
else $ratimg = 'yellow.gif';
if ($percent > 100) $percent = $percent - (intval($percent / 100) * 100);
//-------------------------------------------------//
$percentnk = rat($nk);
if ($percentnk >= 0 && $percentnk <= 100) $ratimg = 'red.gif';
else $ratimg = 'yellow.gif';
if ($percentnk > 100) $percentnk = $percentnk - (intval($percentnk / 100) * 100);
///////////////////////////////////////////////////////////

echo $div_title . '
     Повысить рейтинг
 ' . $div_end . $div_left . $div_razdel . '
 <img src="/ico/profile/' . $ratimg . '" width="' . $percent . '" height="5" alt=""/><img src="/ico/profile/green.gif" width="' . (100 - $percent) . '" height="5" alt=""/>
 <br/>
 Рейтинг: ' . rat($user['id']) . '%
 ' . $div_end . $div_tworazdel . '
 <b>Что означает рейтинг страницы?</b><br/>
 Рейтинг страницы определяет ее порядок при выводе в результатах поиска, выводе в списке друзей и т.д.
 <br/>
 За Вас могут голосовать другие участники системы с помощью кристаллов. Также голосовать можно и за себя самого.
 <br/>' . $div_end . '
 ' . $OK . '' . $div_tworazdel . ' 
 <a href="avtorating.php?do=exchange"><span style="color:#FF0000;">Получить кристаллы:</span></a>
 ' . $div_end . $div_tworazdel . '
 <a href="avtorating.php?do=history">История операций</a><br/>
 ' . $div_end . $div_razdel . '
 1% рейтинга стоит ' . $set[0] . '
 <img src="ico/bublik_small.png" alt=""/>
 <br/>
 У Вас есть ' . $user['balls'] . '
 <img src="ico/bublik_small.png" alt=""/>
 <br/>
 ' . $look . $div_end . '
 Рейтинг ' . us($nk) . '
 <br/>
 <img src="/ico/profile/' . $ratimg . '" width="' . $percentnk . '" height="5" alt=""/><img src="/ico/profile/green.gif" width="' . (100 - $percentnk) . '" height="5" alt=""/> ' . rat($nk) . '%
 ' . $div_tworazdel . '
  <FORM method="POST" action="avtorating.php?'.$ref.'">
   <label>Повысить на</label>: <input type="text" name="proc" size="3"/>%
    <br/>
<input type="hidden" name="nk" value="' . $nk . '"/>
   <input type="submit" name="up" value="Повысить"/>
  </FORM>' . $div_end;

echo $div_end;
  }
break;

case 'history':
echo $div_title . 'История операций' . $div_end . $div_left;

$looks = mysql_result(mysql_query("SELECT COUNT(*) FROM `history_rating` WHERE `user` = '".$user['id']."'"), 0);
$n = new navigator($looks, 10, '?do=history&amp;');

if ($looks != FALSE) {
$prosmotr = mysql_query("SELECT * FROM `history_rating` WHERE `user` = '".$user['id']."'");
$i = 0;
while($a = mysql_fetch_assoc($prosmotr)) {
echo ($i ++ % 2) ? $div_tworazdel : $div_razdel;
echo us($a['who']) . ' повысил на ' . $a['proc'] . '% (' . date('d.m.y в H:i', $a['time']) . ')' . $div_end;
}
echo $n->navi();
} else {
echo 'История операций пуста.<br/>';
}

echo $div_end;
break;

case 'exchange':
echo $div_title . 'Получить кристаллы:' . $div_end . $div_left;

if (isset($_GET['ok'])) msg('Обмен произошел успешно!');

$look = ($user['forum_post'] >= 1)
        ? 'Вы можете получить до ' . (int)($user['forum_post'] / 1) . '<img src="ico/bublik_small.png" alt=""/>'
: 'У Вас слишком мало постов форума для обмена.';

if (isset($_POST['ex'])) {
$fpost = my_int($_POST['fpost']);
$balls = 1* $fpost;
if (empty($fpost)) {
err('Укажите целое число!');
} elseif ($balls > $user['forum_post']) {
    err('У Вас не достаточно постов форума!');
} else {
mysql_query("UPDATE `users` SET `forum_post` = `forum_post` - '$balls', `balls` = `balls` + '$fpost' WHERE `id` = '".$user['id']."' LIMIT 1");
header('Location: avtorating.php?do=exchange&ok');
}
}

echo $div_razdel . '
 Здесь вы можете обменять посты форума на кристаллы:.<hr/>
             Ваш Рейтинг: ' . rat($user['id']) . '%<hr/>
 У Вас есть ' . $user['balls'] . ' <img src="ico/bublik_small.png" alt=""/>
                         ' . $block . '
 Стоимость 1 пост = 100 <img src="ico/bublik_small.png" alt=""/>
                         ' . $block . '
 У Вас <b>' . $user['forum_post'] . '</b> постов форума<br/>
  ' . $block . $look . $block . '
 <FORM method="POST" action="avtorating.php?do=exchange">
 <label>Получаем бубликов:</label> <input type="text" name="fpost" size="3"/>
 <br/>
 <input type="submit" name="ex" value="Обменять"/>
 </FORM>' . $div_end;

echo $div_end;
break;

}
?>

#2
$balls = 1* $fpost;
#3
В бд таблица setting
поле price_rating
измени значение с 1 на 100

вроде
#4
VITAMIN, Это правка когда за написания поста человек будет получать 100 бублов. А мне нужно чтоб обменять можно было 1 на 100.
#5
$balls = 1* $fpost;
делаю
$balls = 10* $fpost;
прибавляет 10 бублов, но отнимает 100 постов. =(
#6
Ты хочешь Бублы на посты менять??
#7
KpuTuK, Нет! Посты--------> на ----------->бублы.
#8
Тогда замени еще это
mysql_query("UPDATE `users` SET `forum_post` = `forum_post` - '$balls', `balls` = `balls` + '$fpost' WHERE `id` = '".$user['id']."' LIMIT 1");

на это
mysql_query("UPDATE `users` SET `forum_post` = `forum_post` - '$fpost', `balls` = `balls` + '$fpost' WHERE `id` = '".$user['id']."' LIMIT 1");

Чтоб забирало только то количество постов,которое ты обменял.
#9
заменил на mysql_query("UPDATE `users` SET `forum_post` = `forum_post` - '$fpost', `balls` = `balls` + '$fpost' WHERE `id` = '".$user['id']."' LIMIT 1");
сделал так $balls = 100* $fpost;
у меня 500 постов, ввожу 100 и получаю ответ.
(У Вас не достаточно постов форума!)
#10
Замени еще
elseif ($balls > $user['forum_post'])
на
elseif ($fpost > $user['forum_post'])
#11
Ошибки пропали, но всё равно продолжает менять 1 на 1.
что так $balls = 100* $fpost;
что так $balls = 1* $fpost;
#12
Тепер це
mysql_query("UPDATE `users` SET `forum_post` = `forum_post` - '$fpost', `balls` = `balls` + '$fpost' WHERE `id` = '".$user['id']."' LIMIT 1");

Заміни на це
mysql_query("UPDATE `users` SET `forum_post` = `forum_post` - '$fpost', `balls` = `balls` + '$balls' WHERE `id` = '".$user['id']."' LIMIT 1");
#13
VITAMIN, Заработал! 1 пост стоит 100 бублов. =)
а это?
У Вас 373 постов форума
Вы можете получить до 373 бубликов.
как это поправить?
#14
Замени

$look = ($user['forum_post'] >= 1)
? 'Вы можете получить до ' . (int)($user['forum_post'] / 1) . '<img src="ico/bublik_small.png" alt=""/>'
: 'У Вас слишком мало постов форума для обмена.';

на

$look = ($user['forum_post'] >= 1)
? 'Вы можете получить до ' . (int)($user['forum_post'] * 100) . '<img src="ico/bublik_small.png" alt=""/>'
: 'У Вас слишком мало постов форума для обмена.';
#15
VITAMIN, Ура!!!! Спасибо огромное!!!!!!!!! :)
#16
warsis, warsis, с тебя плюс в анкету)..
#17
VITAMIN, Я тут сижу давно, но не знаю как плюсы ставит. =)