Voor een spel dat ik aan het maken ben, probeer ik een banksysteem te maken.
De bedoeling is dat de gebruiker het bedrag wat op zijn bank staat en wat hij "contant" heeft, kan aanpassen.
Maar niet boven een bepaald bedrag.

<?php
    session_start(); ?>
	<?php
if(isset($_GET['id']))
{ 
  $id = intval($_GET['id']);
  // getting info from db
}
?>
<?php
if(isset($_GET['club']))
{ 
  $club = $_GET['club'];
  // getting info from db
}
$maxbudget = "500.000";
?>
<?php
//=============Configuring Server and Database=======
$host        =    'localhost';
$user        =    'root';
$password    =    '';
$database    =    'voetbal';

$conn        =    mysqli_connect($host,$user,$password, $database) or die('Server Information is not Correct');

//===============End Server Configuration============
//=============Starting Registration Script==========
$budget    =    mysqli_real_escape_string($conn, $_POST['budget']);
$bank    =    mysqli_real_escape_string($conn, $_POST['bank']);
if ($budget > $maxbudget){
if(isset($_POST['update']))
{
$sql = "UPDATE clubs SET budget ='$budget', bankbudget ='$bank' WHERE id='$id'";

       if ($conn->query($sql) === TRUE) {
    echo "Je financiën zijn gewijzigd! <a href='index.php?id=$id&&club=$club'>Klik hier om terug te gaan naar de homepagina</a>";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
}}
else if ($bank > $maxbudget){
if(isset($_POST['update']))
{
$sql = "UPDATE clubs SET budget ='$budget', bankbudget ='$bank' WHERE id='$id'";

       if ($conn->query($sql) === TRUE) {
    echo "Je financiën zijn gewijzigd! <a href='index.php?id=$id&&club=$club'>Klik hier om terug te gaan naar de homepagina</a>";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

}}
else {
	echo "Het ingevulde bedrag is te hoog!";
}?>


$maxbudget is dat maximale budget. Maar nu wil ik door middel van die if en else if dat dus regelen.
Maar als ik in het form vakje van het bedrag wat ik op bank wil hebben bijv 600.000 invul, geeft hij aan dat het bedrag te hoog is, maar dat doet hij ook bij 450.000. Terwijl dat niet te hoog is (aangezien de max 500.000 is).

HOe kan dit?
Daarbij, deze queries tezamen zouden mogelijk als één ondeelbare actie (een zogenaamde transactie) uitgevoerd moeten worden waarbij het effect van alle bewerkingen in zijn geheel, of in zijn geheel niet worden uitgevoerd. Je wilt niet dat een reeks van queries onverhoopt ergens halverwege spaak loopt en dat er vervolgens een speler ineens voor twee clubs uitkomt :).

Daarbij is het ook verstandig dat je database echt relationeel is opgezet waarbij tabellen onderling verbanden hebben middels (foreign) keys.

Om dit alles mogelijk te maken is het zaak dat dit soort tabellen van het type InnoDB zijn.

Maar misschien is het inderdaad handiger als je eerst wat meer ervaring opdoet.

Reageren