Ik zou graag geld optellen met een bepaald bedrag.Normaal dacht ik dus geld=geld+"'$_POST['bedrag']'" maar dit werkt dus niet echt.Weet iemand hoe het wel moet?(Quotes?)
Ontani edit: Ook al zo goed bezig als JeXuS en ik. der staat in de titel variabele optellen in een QUERY. Daarbij telt uw ding niet eens op maar voegt het er achteraan toe...
@finduilas, als je dat is_numeric gebruikt hoeft dat inderdaad niet.
Maar er stond nergens dat je is_numeric gebruikte, dus zei ik het er maar even bij voor de zekerheid
Is het trouwens niet intressanter om een aantal functies te maken..
Ik veronderstel dat het over zo'n maffia gedoe gaat:
transactie($bedrag, $gebruiker, $actie)
Bijvoorbeeld Iets kopen
transactie(200, 1, TRANSACTIE_UIT); Iets verkopen
transactie(200, 1, TRANSACTIE_IN); Geld op de bank zetten
transactie(200, 1, TRANSACTIE_NAAR_BANK); Geld van bank naar contant
transactie(200, 1, TRANSACTIE_NAAR_CONTANT);
En voor die functie moet je dan die constanten (TRANSACTIE_IN, ...) aanmaken, een getal aan toewijzen, en binnen de functie kan je dan iets doen à la
switch($actie) {
case 1: geld weg
case 2: geld bij
...
}
edit: uit de losse pols, kan zijn dat dit een parse error geeft maar het gaat om het idee:
Dat is inderdaad handig.Had daar nog niet op gedacht.Ik zal het eens proberen .
Ik heb die functie wat aangepast.Maar nu zit ik met een probleem.Ik gebruik variabelen die er enkel zijn als je ingelogd bent.Dus zou die enkel mogen worden uitgevoerd als je ingelogd was.Maar ik las ergens iets over functies en dat je deel functies kunt maken.
Vb: function mens(){
function slaap(){}
function eten(){}
}
Zoiets zou ik ook moeten maken of is dit niet de juiste manier?
<?php
//funtie is_logged_in
function is_logged_in()
{
global $_SESSION;
if (!IsSet($_SESSION['userid']))
{
return (0);
}
return (1);
}
$username = $_SESSION['username'];
$query = mysql_query("SELECT * FROM leden WHERE username='".$username."'");
while ($arr = mysql_fetch_assoc($query)) {
define('TR_IN', 1);
define('TR_UIT', 2);
define('TR_NAAR_BANK', 3);
define('TR_NAAR_CASH', 4);
function transactie($bedrag, $username, $actie) {
$q = "UPDATE leden SET ";
switch($actie) {
case 1:
$q .= "geldcontant = geldcontant + ".$bedrag;
break;
case 2:
if($bedrag > $arr['geldcontant'])
{
echo 'Zoveel geld heb je niet';
}
else
{
$q .= "geldcontant = geldcontant - ".$bedrag;
}
break;
case 3:
if($arr['geldbank'] != '0')
{
echo'Je moet eerst al het geld van je bank nemen';
}
elseif($arr['geldcontant'] < $bedrag)
{
echo'Zoveel geld heb je niet contant';
}
else
{
$q .= "geldcontant = geldcontant - ".$bedrag.", geldbank = geldbank + ".$bedrag;
}
break;
case 4:
if($arr['geldbank'] < $bedrag)
{
echo'Zoveel geld heb je niet op je bank';
}
else
{
$q .= "geldcontant = geldcontant + ".$bedrag.", geldbank = geldbank - ".$bedrag;
}
break;
}
$q .= " WHERE id = ".$username;
mysql_query($q) or die(mysql_error());
/*
Die error haal je best weg in de live versie dan, en vervang je dan door dit:
if(mysql_query($q)) {
return true;
}
return false;
*/
}
}
?>
<?php
//define
define('TR_IN', 1);
define('TR_UIT', 2);
define('TR_NAAR_BANK', 3);
define('TR_NAAR_CASH', 4);
//functie transactie
function transactie($bedrag, $geldCo, $geldBa, $username, $actie) {
$q = "UPDATE leden SET ";
switch($actie) {
case 1:
if($bedrag > $geldBa){
echo 'Zoveel geld heb je niet op je bank';
}
else {
$q .= "geldcontant = geldcontant + ".$bedrag;
}
break;
case 2:
if($bedrag > $geldCo){
echo 'Zoveel geld heb je niet contant';
}
else {
$q .= "geldcontant = geldcontant - ".$bedrag;
}
break;
case 3:
if($geldBa != '0') {
echo'Je moet eerst al het geld van je bank nemen';
}
elseif($geldCo < $bedrag) {
echo'Zoveel geld heb je niet contant';
}
else {
$q .= "geldcontant = geldcontant - ".$bedrag.", geldbank = geldbank + ".$bedrag;
}
break;
case 4:
if($geldBa < $bedrag) {
echo'Zoveel geld heb je niet op je bank';
}
else {
$q .= "geldcontant = geldcontant + ".$bedrag.", geldbank = geldbank - ".$bedrag;
}
break;
}
$q .= " WHERE id = ".$username;
mysql_query($q) or die(mysql_error());
/*
Die error haal je best weg in de live versie dan, en vervang je dan door dit:
if(mysql_query($q)) {
return true;
}
return false;
*/
}
//funtie is_logged_in
function is_logged_in()
{
global $_SESSION;
if (!IsSet($_SESSION['userid']))
{
return (0);
}
return (1);
}
$username = $_SESSION['username'];
$query = mysql_query("SELECT * FROM leden WHERE username='".$username."'");
$arr = mysql_fetch_assoc($query);
transactie($_POST['bedrag'], $arr['geldcontant'], $arr['geldbank'], $username, TR_IN);
transactie($_POST['bedrag'], $arr['geldcontant'], $arr['geldbank'], $username, TR_UIT);
//etc...
?>
Nog even een opmerking over is_numeric gebruik voor controle: niet doen. Hiermee zijn waarden als 5e5-2 ook valid, omdat dit een getal is. Je kunt beter PHP.net: ctype_digit gebruiken, dit controleert of het alleen getallen zijn.