2015-01-16 3 views
0

У меня есть код моего действия POST, но он очень длинный, с двумя разными действиями, если у пользователя есть карта, которую можно купить за деньги из хранилища, и если у пользователя нет карта обновить код что-то вроде этого:Два _POST на одной кнопке отправки

if (isset($_POST['shop'])) { 
if (security($_POST['ccard']) == 1) { 
$umoney = $urow['bank'] + $urow['money']; 
    } else { 
$umoney = $urow['money']; 
} 
mysql_query(set the total upgrade values in another table) 
mysql_query(give the user upgrade values in another table) 
} 
    if (security($_POST['ccard']) == 1) { 
    $upuser = mysql_query("UPDATE `users` SET bank=bank-'$sumtotc' WHERE id='$urow[id]'"); 
    } else { 
$upat2 = mysql_query("UPDATE `users` SET money=money-'$sumtotc' WHERE id='$urow[id]'"); 
} 

, но если я это сделать, если пользователь купить что-то, что значение больше чем банк, он будет со знаком минус значение в банке, я пытался с этим:

if ($urow['bank'] < 0) { 
$upmon = mysql_query("UPDATE `users` SET money=money-'$urow[bank]' WHERE id='$urow[id]'"); 
$upban = mysql_query("UPDATE `users` SET bank=0 WHERE id='$urow[id]'"); 
} 

Есть ли другой способ улучшить функционирование карты? и стоимость банка не должна быть отрицательной?

+0

** ПРЕДУПРЕЖДЕНИЕ **: Это чудовищно небезопасно, поскольку эти параметры не являются [должным образом спасся] (Http: // bobby-tables.com/php). Вы должны ** НИКОГДА не ставить данные '$ _POST' непосредственно в запрос: он создает гигантскую ошибку [SQL injection bug] (http://bobby-tables.com/). 'mysql_query' - устаревший интерфейс и не должен использоваться, он удаляется из PHP. Современная замена, такая как [PDO, не трудно учиться] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/). Руководство, подобное [PHP The Right Way] (http://www.phptherightway.com/), объясняет лучшие практики. – tadman

ответ

0

Вы можете использовать IF заявление, как:

$upuser = mysql_query("UPDATE `users` 
SET bank = 
    CASE 
     WHEN bank-'$sumtotc' <= 0 
      THEN 0 
     WHEN bank-'$sumtotc' >= 1 
      THEN bank-'$sumtotc' 
    END 
money = 
    CASE 
     WHEN bank-'$sumtotc' <= 0 
      THEN money-'$urow[bank]' 
     WHEN bank-'$sumtotc' >= 1 
      THEN money-'$sumtotc' 
    END 

WHERE id='$urow[id]'"); 

http://dev.mysql.com/doc/refman/5.0/en/if.html

+0

спасибо, sql работает нормально, если стоимость обновления больше, чем стоимость банка, это будет 0, но деньги пользователя одинаковы, то, что я хочу сделать, это банк + деньги, если стоимость обновления 10 000, а пользовательский банк - 6000, а деньги пользователя - 5000, а после обновления у пользователя должно быть 1 000. – d0z3

+0

Я обновил свой ответ –

+0

спасибо, но «money-bank - '$ sumtotc» сначала банк - $ sumtotc, чем деньги - $ sumtotc, потому что банк равен 0 после первого заявления if, мне требуется стоимость от bouth money и bank, если вы понимаете, что я хочу вам сказать – d0z3

Смежные вопросы