Probleem met geld updaten en ophalen.
Ik ben een spel aan het maken en ik wil graag geld kunnen opslaan in de datebase wanneer je uitlogt, en wanneer je inlogt dat je het dan ophaalt.
Dit lukt echter nog niet.
Dit zijn de codes:
De verbinding met de database is al gelukt. Dus daar ligt het niet aan.
Het ophalen:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$query = "SELECT Cashgeld, Bankgeld FROM Accounts WHERE Gebruikersnaam = $gebruikersnaam";
$resultaat = mysql_query($query);
while ($row = mysql_fetch_array($resultaat))
{
$_SESSION['cashgeld'] = $row["Cashgeld"];
$_SESSION['bankgeld'] = $row["Bankgeld"];
}
$resultaat = mysql_query($query);
while ($row = mysql_fetch_array($resultaat))
{
$_SESSION['cashgeld'] = $row["Cashgeld"];
$_SESSION['bankgeld'] = $row["Bankgeld"];
}
Het opslaan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
$_SESSION['cashgeld'] = $cashgeld;
$_SESSION['gebruikersnaam'] = $gebruikersnaam;
$_SESSION['bankgeld'] = $bankgeld;
$sql = "UPDATE Accounts SET Cashgeld = \"$cashgeld\" WHERE Gebruikersnaam = \"$gebruikersnaam\"";
$resultaat = mysql_query($sql) or die (mysql_error());
$verbreken = mysql_close($sql);
$sql2 = "UPDATE Accounts SET Bankgeld = \"$bankgeld\" WHERE Gebruikersnaam = \"$gebruikersnaam\"";
$resultaat = mysql_query($sql2) or die (mysql_error());
$verbreken = mysql_close($sql2);
$_SESSION['gebruikersnaam'] = $gebruikersnaam;
$_SESSION['bankgeld'] = $bankgeld;
$sql = "UPDATE Accounts SET Cashgeld = \"$cashgeld\" WHERE Gebruikersnaam = \"$gebruikersnaam\"";
$resultaat = mysql_query($sql) or die (mysql_error());
$verbreken = mysql_close($sql);
$sql2 = "UPDATE Accounts SET Bankgeld = \"$bankgeld\" WHERE Gebruikersnaam = \"$gebruikersnaam\"";
$resultaat = mysql_query($sql2) or die (mysql_error());
$verbreken = mysql_close($sql2);
Bedankt alvast voor de antwoorden!
Mvg,
Stan Peters
Gewijzigd op 29/01/2014 14:39:26 door Stan Peters
Je mist de quotes om de waarde van gebruikersnaam in je select query, aannemende dat gebruikersnaam een string is uiteraard.
Code (php)
1
2
3
4
2
3
4
<?php
$sql = "UPDATE Accounts SET Cashgeld = ".$_SESSION['cashgeld']." WHERE Gebruikersnaam = '".$_SESSION['gebruikersnaam']."'";
// etc...
?>
$sql = "UPDATE Accounts SET Cashgeld = ".$_SESSION['cashgeld']." WHERE Gebruikersnaam = '".$_SESSION['gebruikersnaam']."'";
// etc...
?>
Gewoon in het vervolg netjes single-quote gebruiken voor (voor)waardes uit WHERE en SET omdat het een string is, en natuurlijk de variabelen in PHP buiten quotes laten. Ook het kopieëren van variabelen wat op lijn 1 t/m 3 gebeurt is onnodig, en kan alleen maar verwarrender werken en veiligheidsrisico's meebrengen tijdens het programmeren.
Lees ook eens: http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/, want die() is nergens voor nodig. Als iets mislukt hoor je dat gewoon goed af te vangen in plaats van het script te laten sterven.
Verder raad ik ook aan om naar PDO of MySQLi te kijken, omdat de functiebibiliotheek van Mysql_*() ten einde zal komen in nieuwe versies van PHP. Ikzelf geef het geen twee jaar meer voordat de hostings het uit gaan schakelen.
Gewijzigd op 29/01/2014 14:45:34 door - Ariën -
mysql functies omzetten naar mysqli functies of kijken naar PDO.
Daarnaast gebruik je geen die() maar een goede foutafhandeling.
Je script is ook zo lek als een mandje. Inloggen als 'drop table Accounts resulteert in het wissen van je database. Gebruik hiervoor mysql(i)_real_escape_string() voor.
edit: aar was me weer eens voor :(
Je gebruikt mysql functies die 'deprecated' zijn en worden uitgefaseerd. Je kunt je Daarnaast gebruik je geen die() maar een goede foutafhandeling.
Je script is ook zo lek als een mandje. Inloggen als 'drop table Accounts resulteert in het wissen van je database. Gebruik hiervoor mysql(i)_real_escape_string() voor.
edit: aar was me weer eens voor :(
Gewijzigd op 29/01/2014 14:48:10 door Michael -
vraag: wat gebeurt er als iemand niet uitlogt, maar gewoon wegklikt van de site, of zijn pc uitzet?
Ivo P op 29/01/2014 15:33:42:
vraag: wat gebeurt er als iemand niet uitlogt, maar gewoon wegklikt van de site, of zijn pc uitzet?
Dan krijg je geen geld voor het uitloggen.
Wat als men een batch maakt die elke 10 seconden in en uit logt?
Ik heb precies gedaan wat Aaf zei, en het uitloggen werkt nu.
Alleen werkt het inloggen en het ophalen van de sessions nog niet.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$query = "SELECT Cashgeld, Bankgeld FROM Accounts WHERE Gebruikersnaam = $gebruikersnaam";
$resultaat = mysql_query($query);
while ($row = mysql_fetch_array($resultaat))
{
$_SESSION['cashgeld'] = $row["Cashgeld"];
$_SESSION['bankgeld'] = $row["Bankgeld"];
}
$resultaat = mysql_query($query);
while ($row = mysql_fetch_array($resultaat))
{
$_SESSION['cashgeld'] = $row["Cashgeld"];
$_SESSION['bankgeld'] = $row["Bankgeld"];
}
Weet iemand hier iets op?
Naar een batch zal ik later kijken! Maar bedankt voor de tip!
Mvg,
Stan Peters
Erwin H op 29/01/2014 14:40:39:
Quotes....
Je mist de quotes om de waarde van gebruikersnaam in je select query, aannemende dat gebruikersnaam een string is uiteraard.
Je mist de quotes om de waarde van gebruikersnaam in je select query, aannemende dat gebruikersnaam een string is uiteraard.
Altijd leuk als mensen je opmerkingen niets eens lezen....
Waarom doe je het geld niet direct veranderen in de database en live ophalen? In een sessie zit het niet veilig.