Door
John De Zon
op 14-07-2014 11:49
gewijzigd op 14-07-2014 11:49
5.748 views
Hallo iedereen,
Ik ben bezig met mijn browsergame en ik loop compleet vast bij het opzetten van de eerste keer dat iemand het speelt.
Het is de bedoeling dat als de user business_life 0 in de database heeft staan. Hij nog nooit gespeeld heeft dan moet de onderstaande html pagina gegeven worden maar ik gebruik MySQL! Ik heb al een query toegevoegd maar dan loop ik vast! Hopelijk kan iemand mijn hiermee helpen.
<?php
include 'config/mysql.php';
$userName = $_SESSION['userName'];
$query = mysql_query("SELECT * FROM `logins` WHERE `userName`='$userName' AND `business_life`='0'");
if(isset($_SESSION['userName'])) {
?>
<!DOCTYPE html>
<html>
<head>
<title>TeamCrafted: Business Life</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="http://www.teamgame.tk/css/game.css">
</head>
<body>
<?php include_once("header.php"); ?>
<div class="content">
<div>
<h2>Welkom <?php echo $_SESSION['userName'];?>,</h2>
<p>op BUSINESS LIFE!</p>
<p>We hebben vernomen dat dit de eerste keer is dat je dit spel speelt.</p>
<p>Je kan starten als je wilt door op de startknop te klikken.</p>
<form href="install_business_life.php">
<button type="submit" class="button_kort" >Start</button>
</form>
</div>
</div>
</body>
</html>
<?php
} else {
header('Location: index.php');
}
?>
Inderdaad is de query een opdracht die je geeft aan de database. Als deze opdracht verwerkt is door de database-engine dan geeft deze een resultaat (engels: result) terug.
Bij een SELECT opdracht is dat een resultaat die bestaat uit NUL of meer records. Maar het kan ook FALSE teruggeven indien je query niet klopt.
Nadat je dus met mysql_query() een result hebt verkregen ga je verder werken met de result en niet meer met de query die immers alleen de opdracht formuleerde.
dus krijg je dit: (zoek het verschil)
<?php
if(mysql_num_rows($result)==1) {
?>
Nog enkele vragen.
Waarom moest ik $connectie en $query omdraaien?
En nu is dit mijn code en krijg ik steeds enkel 1 op mijn scherm zelfs als ik het verander in de database:
<?php
include 'config/mysql.php';
$connectie = mysql_connect('localhost', 'root', 'password') or die('Could not conect to MySQL.');
mysql_select_db('login') or die('Could not connect to MySQL database.');
?>
<?php
if(isset($_SESSION['userName'])) {
$_SESSION['userName'] = $userName;
$query = "SELECT * FROM logins WHERE userName = '$userName' AND business_life = 0";
$result = mysql_query($query, $connectie);
if($result === false) {
echo 'een fout met '.$query .'<br>'.mysql_error($connectie);
}
if (mysql_num_rows($result)==true) {
echo '0';
?>
<!DOCTYPE html>
<html>
<head>
<title>TeamGame: Business Life</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="http://www.teamgame.tk/css/game.css">
</head>
<body>
<?php include_once("header.php"); ?>
<div class="content">
<div>
<h2>Welkom <?php echo $_SESSION['userName'];?>,</h2>
<p>op BUSINESS LIFE!</p>
<p>We hebben vernomen dat dit de eerste keer is dat je dit spel speelt.</p>
<p>Je kan starten als je wilt door op de startknop te klikken.</p>
<form href="install_business_life.php">
<button type="submit" class="button_kort" >Start</button>
</form>
</div>
</div>
</body>
</html>
<?php
} else {
echo '1';
?>
<?php
}
} else {
header('Location: index.php');
}
?>
In mij database staat business_life default op 0. 0 betekent nog nooit gespeeld dus een configuratiepagina geven.
1 betekent al gespeeld gegevens ophalen.
Dit slaat ook weer nergens op. Kijk eens op http://php.net/manual/en/function.mysql-num-rows.php en lees dan eens onder het kopje Return Values. Daar leer je wat de functie mysql_num_rows() mogelijk terug kan geven. En dat is dus niet zomaar true of false.
**knip** op 15/07/2014 13:38:56
Nog enkele vragen.
Waarom moest ik $connectie en $query omdraaien?
De volgorde van de parameters die je meegeeft aan de functie is ook heel belangrijk. Ook hiervoor ga je gewoon naar php.net en lees je welke parameters je moet meegeven en in welke volgorde. Redelijk vaak zijn de laatste parameters optioneel. die staan dan tussen blokhaken.