Controleren of iets in de database voorkomt
Ik ben bezig met een discover systeem voor een text based spel. Mensen moeten wapens discoveren voordat ze in de winkel erbij komen.
Ik heb het zo bedacht:
Alle wapens staan in de tabel `wapens`, waarbij ik het zogenaamde veld `area` een waarde '3' geef voor wapens die discovered kunnen worden.
In de tabel `gebruikers` heb ik een veld toegevoegt met als type TEXT en naam `discovered-items` .
Ik heb dit stukje script om de wapens die discovered worden in het veld te plaatsen:
$newlist = $gegeven[wapen];
$newlist = preg_replace("/,$data[discovered-items],/i",'',$newlist);
$newlist .= ",$data[discovered-items]";
mysql_query("UPDATE `gebruikers` SET `discovered-items`='$newlist' WHERE `login` = $data[login]");
Echter nu is mijn probleem hierzo $gegeven[wapen] . Welk stukje script heb ik nu nodig om zeg maar te controleren of een wapen uit de tabel `wapens` al discovered is bij een persoon? Want dit veld zit namelijk in de tabel `gebruikers` genaamd `discovered-items`
Ik wil dus een lijst uit de database halen met wapens die discovered kunnen worden maar die nog niet in het veld `discovered-items` staan.
Hoe doe ik dit? Hier loop ik dus vast. Ik wil dit zodat ik later een Random wapen uit die lijst kan halen en die dan dus uiteindelijk discovered word voor de gebruiker.
Ik hoop dat ik een beetje duidelijk ben en dat julie me verder kunnen helpen.
Gr Michel
titel aangepast[/modedit]
Gewijzigd op 19/11/2011 14:05:47 door Bas IJzelendoorn
Pas aub even de titel in je topic aan. (Bijna) Iedereen die een topic opent heeft hulp nodig. Maak er iets passend van.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
$dbres = mysql_query("SELECT `id` FROM `wapens` WHERE `item` NOT IN (SELECT `itemnaam` from `discovered-items` WHERE `login`='$data[login]') AND `area`='3' AND `itemrank` <= '$data[rank]'");
$num = mysql_num_rows($dbres);
$randwapen = rand(0,$num);
$dbres = mysql_query("SELECT `item` FROM `wapens` WHERE `item` NOT IN (SELECT `itemnaam` from `discovered-items` WHERE `login`='$data[login]') AND `area`='3' AND `itemrank` <= '$data[rank]' ORDER BY `id` DESC LIMIT $randwapen,1") or die("ERROR!2");
$geworden = mysql_fetch_assoc($dbres);
echo $geworden[item];
?>
$dbres = mysql_query("SELECT `id` FROM `wapens` WHERE `item` NOT IN (SELECT `itemnaam` from `discovered-items` WHERE `login`='$data[login]') AND `area`='3' AND `itemrank` <= '$data[rank]'");
$num = mysql_num_rows($dbres);
$randwapen = rand(0,$num);
$dbres = mysql_query("SELECT `item` FROM `wapens` WHERE `item` NOT IN (SELECT `itemnaam` from `discovered-items` WHERE `login`='$data[login]') AND `area`='3' AND `itemrank` <= '$data[rank]' ORDER BY `id` DESC LIMIT $randwapen,1") or die("ERROR!2");
$geworden = mysql_fetch_assoc($dbres);
echo $geworden[item];
?>
Maar nu zit ik met het volgende; als ik dit dus uitvoer, geeft hij me soms geen naam van een wapen. dan is de output gewoon "" , terwijl er wel results zijn. Hoe komt dit en hoe kan ik dit oplossen?
Hoop dat julie me kunne helpen. Gr Michel
Toevoeging op 21/11/2011 15:01:03:
Opgelost
was het probleem. heb ervan gemaakt
Topic kan gesloten worden
Gr michel