Optie toevoegen aan een winkel
Voor mijn studie moeten wij een interactieve website in elkaar zetten. Ik heb gekozen voor een online 'klik' spel zoals we die vroeger wel vaker zagen.
Op mijn website heb ik de mogelijkheid voor gebruikers om hun diamanten in te wisselen voor 'ingame cash'. Als ik een optie hieraan probeer toe te voegen dan werkt het niet. Een andere optie zou bijvoorbeeld zijn dat gebruikers hun diamanten in kunnen wisselen voor iets anders als geld, bijvoorbeeld kogels. Als ik dit probeer dan komt de hoeveelheid kogels terecht bij de ingame cash en vice versa. Ik zal het nader toe lichten in de code.
Hier de originele code:
if($item['geldkoffer'] == "")
{
//if isset get geldkoffer kopen
if(isset($_GET['diamanten']))
{
$id = mysqli_real_escape_string($link, $_GET['diamanten']);
// hier haalt hij alle items op uit de database, dus ook de eventuele kogels omdat hij alle ID's ophaalt
$databaseW = mysqli_query($link, "SELECT * FROM `winkel_diamanten` WHERE `id`='$id'") or die(mysqli_error($link));
$itemW = mysqli_fetch_assoc($databaseW);
if(mysqli_num_rows($databaseW) == 1)
{
if($itemW['prijs'] <= $item['diamanten'])
{
// hier geeft hij aan dat alles juist is en de gebruiker wordt upgedate in de database (+ cash en - diamanten), als ik bijvoorbeeld `zak` zou veranderen in kogels dan worden de kogels upgedate en niet de cash van de gebruiker.
echo("<p>Je hebt het product gekocht!</p>");
mysqli_query($link, "UPDATE `gebruikers` SET `zak`=`zak`+'{$itemW['hoeveelheid']}', `diamanten`=`diamanten`-'{$itemW['prijs']}' WHERE `gebruikersnaam`='{$_SESSION['gebruiker']}'") or die(mysqli_error($link));
}
else
{
echo("<p>Je hebt niet genoeg diamanten!</p>");
}
}
else
{
echo("<p>Dit product bestaat niet!</p>");
}
}
In mijn database tabel genaamd winkel_diamanten heb ik ook een row genaamd categorie. Categorie is nu aangeduid als geld, maar dat is in deze code volgens mij nog niet geïdentificeerd, is het mogelijk om dit stukje code alleen uit te voeren als de categorie "geld" is? Zodat ik makkelijk een optie toe kan voegen als het gaat om categorie "kogels".
Ik hoop jullie voldoende informatie te hebben gegeven, mocht dit niet zo zijn of mocht er iets onduidelijk zijn laat het mij gerust weten. Het liefst hoor ik een uitleg zodat ik het ook daadwerkelijk begrijp en er iets van leer.
Wat ik bijvoorbeeld heb geprobeerd is de volgende code erachter te zetten:
" if($item['kogels'] == "") {
mysqli_query($link, "UPDATE `gebruikers` SET `kogels`=`kogels`+'{$itemW['hoeveelheid']}', `diamanten`=`diamanten`-'{$itemW['prijs']}' WHERE `gebruikersnaam`='{$_SESSION['gebruiker']}'") or die(mysqli_error($link));
} "
Als ik dit probeer dan komt er inderdaad de hoeveelheid kogels bij, maar ook tegelijkertijd bij de gebruikers ingame cash. Ook als een gebruiker nu een geldkoffer zou kopen komt het aantal bij allebij (geld en kogels) terecht en dit is natuurlijk niet de bedoeling.
Bij voorbaat dank.
Joey Felling op 28/10/2015 03:15:34:
Wat ik bijvoorbeeld heb geprobeerd is de volgende code erachter te zetten:
" if($item['kogels'] == "") {
mysqli_query($link, "UPDATE `gebruikers` SET `kogels`=`kogels`+'{$itemW['hoeveelheid']}', `diamanten`=`diamanten`-'{$itemW['prijs']}' WHERE `gebruikersnaam`='{$_SESSION['gebruiker']}'") or die(mysqli_error($link));
} "
Als ik dit probeer dan komt er inderdaad de hoeveelheid kogels bij, maar ook tegelijkertijd bij de gebruikers ingame cash.
Wat ik bijvoorbeeld heb geprobeerd is de volgende code erachter te zetten:
" if($item['kogels'] == "") {
mysqli_query($link, "UPDATE `gebruikers` SET `kogels`=`kogels`+'{$itemW['hoeveelheid']}', `diamanten`=`diamanten`-'{$itemW['prijs']}' WHERE `gebruikersnaam`='{$_SESSION['gebruiker']}'") or die(mysqli_error($link));
} "
Als ik dit probeer dan komt er inderdaad de hoeveelheid kogels bij, maar ook tegelijkertijd bij de gebruikers ingame cash.
Kan het verhaal niet helemaal volgen, maar dat je bij de hierboven query twee dingen update, lijkt me logisch. Je zet ze zelf in de query: kogels en diamanten. Als je maar 1 van beide wilt updaten, zul je daarin een keuze moeten maken.
Waarom gebruik je ` in je query?
Or die is geen nette foutafhandeling.
Als ik er een mysql update aan de bovenstaande code toe voeg (kogels) dan update hij inderdaad kogels alleen komt het even aantal ook bij de gebruikers ingame cash bij, de code maakt geen onderscheid tussen wat aangegeven is in mijn database ( Tabel: winkel_diamanten : row: categorie bijvoorbeeld geld | kogels). Mijn vraag is hoe laat ik de update pas doorvoeren als in de database row: categorie, geld aangegeven staat. Met deze wetenschap kan ik makkelijk een code schrijven voor een ander item bijvoorbeeld kogels door in mijn database categorie, kogels aan te geven en in mijn php bestand aan te geven dat de update voor kogels pas in gaat wanneer er in de categorie 'kogels' wordt gevonden.
In het kort komt het erop neer dat ik graag zou willen weten of dit kan, hoe kan ik de bovenstaande code pas in werking laten gaan als in mijn database 'categorie: geld' wordt gevonden en hij anders een echo geeft dat het product niet bestaat.
Gewijzigd op 28/10/2015 16:27:57 door Joey Felling