Ik ben bezig met een kraak de kluis script te maken in mijn spel maar ik ken OOP nog niet zo heel erg goed.
Ik wil nu een query doen dus als iemand de code heeft geraden dat er 1.000.000 naar zen bank gaat, maar dat lukt niet vlotjes.
Kan iemand me helpen ?
dit is de class
PHP
<?php
class Kraak
{
protected $db;
//De constructor
public function __construct()
{
$this->db = new PDO(); // heb dit even weggehaald.
$query = "SELECT `0` FROM `kluis`";
$num = $this->db->query($query)->rowCount();
//Kijken of er al een code is aangemaakt die geraden moet worden, zoniet aanmaken.
if (!$num) {
$this->_CreateCode();
}
}
//De boel afbreken, connectie afsluiten.
public function __destruct()
{
$this->db = null;
}
//Laatste 5 geraden code's.
public function getLaatste5()
{
$query = "SELECT `0`,`1`,`2`,`3`,`4`,`5` FROM kluis WHERE code='0' ORDER BY date DESC";
$dbres = $this->db->query($query);
if ($dbres) {
$return = null;
while ($list = $dbres->fetch(PDO::FETCH_ASSOC)) {
$return .= $this->_ColourCode($list);
$return .= "<br />";
}
}
return $return;
}
//Controleren of de code juist is.
public function CheckCode($code)
{
$query = "SELECT code FROM kluis WHERE code='0'";
$num = $this->db->query($query)->rowCount();
$check = $this->_CheckCode($code);
//De code is geraden, tabel leegmaken, nieuwe code aanmaken.
if (array_sum($check) == 12) {
$query = "TRUNCATE table kluis";
$this->db->exec($query);
$this->_CreateCode();
return true;
}
//Er is een verkeerde code opgegeven.
elseif (array_sum($check) == -1) {
return false;
}
//De code is juist opgegeven maar komt niet helemaal overeen met de code in de database.
else {
if ($num < 5) {
$query = "INSERT INTO kluis VALUES (:code0, :code1, :code2, :code3, :code4, :code5, '0', NOW())";
$this->_PrepareQuery($query, $code);
} else {
$query = "UPDATE kluis SET `0`=:code0, `1`=:code1, `2`=:code2, `3`=:code3, `4`=:code4, `5`=:code5, date=NOW() WHERE code='0' ORDER BY date LIMIT 1";
$this->_PrepareQuery($query, $code);
}
$return = $this->_ColourCode($code);
return $return;
}
}
//Controleren of de code wel alfabetisch/numeriek is. Vergelijking met de code in de database.
protected function _CheckCode($code)
{
if (!ctype_alpha($code[0]) || !ctype_alpha($code[1]) || !ctype_alpha($code[2]) || !ctype_alpha($code[3]) || !ctype_digit($code[4]) || !ctype_digit($code[5])) {
return array(-1);
}
$query = "SELECT `0`,`1`,`2`,`3`,`4`,`5` FROM kluis WHERE code='1' ORDER BY date DESC";
$list = $this->db->query($query)->fetch(PDO::FETCH_ASSOC);
foreach ($code as $key => $value) {
if (strtoupper($value) == strtoupper($list[$key])) {
$return[$key] = 2;
} elseif (in_array(strtoupper($value), $list)) {
$return[$key] = 1;
} else {
$return[$key] = 0;
}
}
return $return;
}
//Als er nog geen code is aangemaakt wordt deze hier aangemaakt.
protected function _CreateCode()
{
$letters = range('A', 'Z');
$code[0] = $letters[rand(0, 25)];
$code[1] = $letters[rand(0, 25)];
$code[2] = $letters[rand(0, 25)];
$code[3] = $letters[rand(0, 25)];
$code[4] = rand(0, 9);
$code[5] = rand(0, 9);
$query = "INSERT INTO kluis VALUES (:code0, :code1, :code2, :code3, :code4, :code5, '1', NOW())";
$this->_PrepareQuery($query, $code);
}
//De code de kleur geven naargelang de vergelijking met de code in de database.
protected function _ColourCode($code)
{
$check = $this->_CheckCode($code);
$return = null;
foreach ($check as $key => $value) {
switch ($value) {
case 2:
$return .= "<span style=\"color: green;\">" . $code[$key] . "</span>";
break;
case 1:
$return .= "<span style=\"color: orange;\">" . $code[$key] . "</span>";
break;
default:
$return .= "<span style=\"color: red;\">" . $code[$key] . "</span>";
}
}
return $return;
}
protected function _PrepareQuery($query, $code)
{
$stmt = $this->db->prepare($query);
$nr = 0;
while ($nr <= 5) {
$stmt->bindParam(":code" . $nr, $code[$nr]);
$nr++;
}
$stmt->execute();
}
}
?>
Toon Meer
En dat is wat er moet gebeuren :