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');
}
?>
Frank Nietbelangrijk op 14/07/2014 22:04:27

<?php
if(mysql_num_rows($query)==1) {
?>

Wat is een query en wat is een result?
Welke heb je in bovenstaande regel nodig?


Een taak die je aan de database geeft is een query.

En een result heeft iets met een record te maken maar dit snap ik niet zo duidelijk.
kijk, talking business, heel goed!

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) {
?>

Nu ga je verder met een result dat is het verschil.

[size=xsmall]Toevoeging op 15/07/2014 12:11:12:[/size]

Maar ik blijf nog bij deze errors waar ik niet snap van waar ze komen:

Warning: mysql_query() expects parameter 1 to be string, resource given in /home/u837763209/public_html/business_life.php on line 10

Warning: mysql_num_rows() expects parameter 1 to be resource, null given in /home/u837763209/public_html/business_life.php on line 14


code:

<?php
session_start();
Database connectie
?>
<?php
if(isset($_SESSION['userName'])) {
$_SESSION['userName'] = $userName;
$query = "SELECT * FROM logins WHERE userName = '$userName' AND business_life = 0";
$result = mysql_query($connectie, $query);
if($result === false) {
  echo 'een fout met '.$query .'<br>'.mysql_error($connectie);
}
if (mysql_num_rows($result)==true) {
//Pagina wanneer 0
?>
op regel 10 staan $connectie en $query verkeerd om.

dat zei ik een paar posts geleden ook al: jij gebruikt mysql_query en niet mysqli_Query zoals ik in het voorbeeld zette.

Daarbij staan de parameters net andersom

[size=xsmall]Toevoeging op 15/07/2014 12:17:47:[/size]

if (mysql_num_rows($result)==true) {

num_rows: number of rows
oftwel: aantal rijen

Dat is dus niet true, maar 0 of groter dan 0
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');
}
?>
wat voor 1 ?
In mij database staat business_life default op 0. 0 betekent nog nooit gespeeld dus een configuratiepagina geven.
1 betekent al gespeeld gegevens ophalen.
en krijg ik steeds enkel 1 op mijn scherm


Je script zet geen 1 of business_life op het scherm.

Dus waar komt die 1 op je scherm dan vandaan?
**knip**,

mysql_num_rows($result)==true

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.
if (mysql_num_rows($result)==true) {

mysql_num_rows($result) geeft een getal en geen true/false.

Reageren