2013-03-13 60 views
0

我正在尝试为学校项目创建一个虚构的自动取款机,但我被卡在某物上。
一切工作正常,但我可以从我的帐户比我有更多的钱。

例如:
我有1300欧元的数据库和我输入1400欧元我的系统愉快地更新我的余额从1300到-100。

而这正是我不想发生的事情。我的代码的权利没有看起来像这样:
如何以SQL/PHP中的INT的形式从数据库检索数据?

if ((/* i have no clue what comes here */ -$bedrag)>0) // This should become something like: IF "value from database" > "amount" (bedrag=amount btw) 
       { 
       echo "Het pinnen is gelukt!"; 
       $pinnen= "UPDATE rekeningen SET Saldo= Saldo - '$bedrag' WHERE Rekeningnr ='$nummer'"; 
       mysql_query($pinnen); 
       } 
+1

所以你的问题是如何避免负数?应该发生什么 - 如果操作完全被拒绝,或者数量设置为0? – 2013-03-13 20:46:35

+0

你有没有工作的查询,或者你真的在问如何从数据库查询值?如果是后者,我只能推荐你使用RTFM:http://www.php.net/manual/en/set.mysqlinfo.php,http://dev.mysql.com/doc/refman/5.6/en /select.html – Adrian 2013-03-13 20:47:47

回答

0

我想你想添加,不会减去你的UPDATE量:

UPDATE rekeningen SET Saldo= Saldo + '$bedrag' WHERE Rekeningnr ='$nummer' 
           ^

然后,您可以使用提款负值。

0

你应该处理这个应用程序端。在页面加载时查询所需信息,并将值保存在sessionStorage中:

window.onload = function() { 
    sessionStorage.saldoval = "<?php $return['Saldo'] ?>"; 
} 

然后在提交前用Javascript验证它。

var saldo = document.getElementById('SaldoInput'); 

if(saldo.value > sessionStorage.saldoval){ 
    // do something to tell the user they're naughty 
    return false; 
} 

您不应该依赖数据库来执行这种验证。

+0

认真吗?你建议在JavaScript中验证金融交易(甚至是假的)? JavaScript验证是为了提供更好的用户体验,而不是真正的验证。 – 2013-03-14 03:55:38

+0

这不是**真实**验证,这是简单的预防步骤。避免不必要的拨打这样的数据库是很好的做法。但公平地说,使用数据属性可能不是最好的想法,sessionStorage会好得多。 – PlantTheIdea 2013-03-14 17:40:04

+0

避免不必要的数据库调用是件好事。这不是对数据库的不必要的调用。如果页面加载之间的余额变化会怎样?或者用户有多个会话? – 2013-03-15 01:54:25

0

假设你有一个变量,比方说,$current_balance,存放帐户余额的操作之前,你可以去这样的:

if ($bedrag > $current_balance) { 
echo "You don't have enough money, sir!"; 
} 
else { 
echo "Het pinnen is gelukt!"; 
$pinnen= "UPDATE rekeningen SET Saldo= Saldo - '$bedrag' WHERE Rekeningnr ='$nummer'"; 
mysql_query($pinnen); 
} 

此外,它会设置一个好主意检查表中Saldo字段的约束以避免负值。只是说。

相关问题