Назад

Рандомно начисляются поинты в донейт системе

Автор: Kill Spirit: Дата: 03.10.2011

    case '=RO_Points': // =RO Points
$price_original = $item['1']['price'];
// Проверяем цену.
$end_price = $price_original*$count;
$donate_count = $donate-$end_price;
$now_count = mysql_query ("SELECT `value` FROM `global_reg_value` WHERE `str`='##evp' AND `account_id`='$account_id'");
$final_count = $now_count+$count;
if ($donate >= $end_price){
$add_item = mysql_query ("UPDATE `global_reg_value` set `value`='$final_count' WHERE `str`='##evp' AND `account_id`='$account_id'") or die(mysql_error());
$donate_down = mysql_query ("UPDATE `login` set `donate`='$donate_count' WHERE `userid`='$userid'") or die(mysql_error());
$result = $true_buy;
} else {
$result = $no_donate;
}

break;


Собстна в чём проблема:
При нажатии на кнопку "Купить" у меня до этого было допустим 10 ##evp, в количество ($count) ввёл 10, при завершении покупки у меня стало не 20, а 37 например.
Или другой случай:
Проделал тоже что и выше, но купил уже 1 поинт, у меня стало не 11, а 2.

Автор: obliged.act: Дата: 03.10.2011

Цитата Kill Spirit;35725:
    case '=RO_Points': // =RO Points
$price_original = $item['1']['price'];
// Проверяем цену.
$end_price = $price_original*$count;
$donate_count = $donate-$end_price;
$now_count = mysql_query ("SELECT `value` FROM `global_reg_value` WHERE `str`='##evp' AND `account_id`='$account_id'");
$final_count = $now_count+$count;
if ($donate >= $end_price){
$add_item = mysql_query ("UPDATE `global_reg_value` set `value`='$final_count' WHERE `str`='##evp' AND `account_id`='$account_id'") or die(mysql_error());
$donate_down = mysql_query ("UPDATE `login` set `donate`='$donate_count' WHERE `userid`='$userid'") or die(mysql_error());
$result = $true_buy;
} else {
$result = $no_donate;
}

break;


Собстна в чём проблема:
При нажатии на кнопку "Купить" у меня до этого было допустим 10 ##evp, в количество ($count) ввёл 10, при завершении покупки у меня стало не 20, а 37 например.
Или другой случай:
Проделал тоже что и выше, но купил уже 1 поинт, у меня стало не 11, а 2.


Вообще-то запросы нужно обрабатывать..
Гугли mysql_fetch_row и mysql_num_rows. Или лучше сразу PDO.

Автор: Кеник: Дата: 03.10.2011

Это только кусок кода =_=" Причем слегка модифицированный от первоначального варианта :D
Хотя мб ты и прав х) Я не особо в пхп+мускл шарю... Учусь только)

Автор: obliged.act: Дата: 03.10.2011


$result = mysql_query('SELECT `account_id` FROM `login`');
echo '
';
while ( $row = mysql_fetch_row($result) )
{
echo 'Текущий ID: ' . $row['0'];
}
echo '
';

или

$result = mysql_query('SELECT `account_id` FROM `login`');
echo '
';
while ( $row = mysql_fetch_assoc($result) )
{
echo 'Текущий ID: ' . $row['account_id'];
}
echo '
';

Простите что без табуляции.

Автор: Кеник: Дата: 03.10.2011

Ну там это должно быть, я понимаю х) Ну или что-то вроде того... ID акка же как-то получил х)

Автор: Gremlin: Дата: 03.10.2011

Цитата obliged.act;35784:

$result = mysql_query('SELECT `account_id` FROM `login`');
echo '
';
while ( $row = mysql_fetch_row($result) )
{
echo 'Текущий ID: ' . $row['0'];
}
echo '
';

или

$result = mysql_query('SELECT `account_id` FROM `login`');
echo '
';
while ( $row = mysql_fetch_assoc($result) )
{
echo 'Текущий ID: ' . $row['account_id'];
}
echo '
';

Простите что без табуляции.


$result = mysql_query('SELECT * FROM `login`');

Автор: Kill Spirit: Дата: 03.10.2011

Это 1% от всего кода отвечающий за выдачу того или иного предмета на весь аккаунт персонажа, проверка ID и прочей хрени у меня стоит.

Автор: Кеник: Дата: 03.10.2011

Погляди как у тебя #count получается.... Раз неверное значение в итоге записывается - значит $final_count считается неправильно, так? $final_count=#now_count+$count. $now_count получаем напрямую с базы, то бишь можно полагать, что оно верное - тогда остается проверить $count . Мб там у тебя отрицательное число получается ил еще чего) Ну и да, ты уверен, что ничего не напутал и скрипт неправильно записывает?) Ы

Автор: Kill Spirit: Дата: 03.10.2011

Если проделывать трюк с зачислением тцг в кафру, без now_count+count, то работает безупречно.

Автор: Кеник: Дата: 03.10.2011

Ну а что за трюк? Показывай)

Автор: Kill Spirit: Дата: 03.10.2011

case 'ololo': //-RO Coin
$price_original = $item['4']['price'];
// Проверяем цену.
$end_price = $price_original*$count;
$donate_count = $donate-$end_price;
if ($donate >= $end_price){
$add_item = mysql_query ("INSERT INTO `storage` (`id`, `account_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3`, `expire_time`) VALUES ('', '$account_id', '$item_id', '$count','0','1','0','0','0','0','0','0','0')") or die(mysql_error());
$donate_down = mysql_query ("UPDATE `login` set `donate`='$donate_count' WHERE `userid`='$userid'") or die(mysql_error());
$result = $true_buy;
} else {
$result = $no_donate;
}

break;



Раньше это было тцг

Автор: Кеник: Дата: 03.10.2011

Ну тут суть другая. Тут он добавляет строку в базу данных. А там не получится, ибо ты используешь глобальные переменные. Там надо заменять значение этой переменной.

Автор: obliged.act: Дата: 03.11.2011

Цитата Gremlin;35800:
$result = mysql_query('SELECT * FROM `login`');


Зачем вытаскивать всё? Вы так любите грузить свою MySQL базу?