Hoe moet ik de selectie (MySQL) juist aanpakken?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

John De Zon

John De Zon

14/07/2014 11:49:10
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?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');
}

?>
Gewijzigd op 14/07/2014 11:49:38 door John De Zon
 
PHP hulp

PHP hulp

29/03/2024 00:19:11
 
- Ariën  -
Beheerder

- Ariën -

14/07/2014 11:58:16
Quote Anchor link
met mysqli_num_rows() controleren of er een record gevonden is.
En pas ook goede foutafhandeling toe op $query (hoewel $result een beter dekkende naam is).
 
John De Zon

John De Zon

14/07/2014 11:59:24
Quote Anchor link
Ik begrijp niet hoe ik dit in mijn code moet toepassen.
 
- Ariën  -
Beheerder

- Ariën -

14/07/2014 12:03:57
Quote Anchor link
Kijk eerst met een if-je of je $query gelukt is, en zo niet toon een foutmelding.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if($query) {
// gelukt, doe de rest...
    if(mysqli_num_rows($query)==1) {
        // een enkel item is gevonden, laat hier de HTML zien.
    } else {
        // niks gevonden.
    }

}
else {
// toon een error mysqli_error()
}
?>
 
Pipo Clown

Pipo Clown

14/07/2014 12:05:52
Quote Anchor link
Ik zou ook even het gebruik van de quotes omdraaien:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= mysql_query('SELECT * FROM logins WHERE userName="'.$userName.'" AND business_life = 0 ');
?>


Aangezien ik niet kan zien hoe je verbinding maakt is het gebruik van mysqli wat lastig mee te nemen voor mij.
Gewijzigd op 14/07/2014 12:07:11 door Pipo Clown
 
- Ariën  -
Beheerder

- Ariën -

14/07/2014 12:09:52
Quote Anchor link
En verder is de stap van MySQL naar MySQLi niet zo heel groot. Standaard gebruik ik MySQLi.
 
John De Zon

John De Zon

14/07/2014 13:05:19
Quote Anchor link
Dit is mijn resultaat dat uiteindelijk niet werkt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
include 'config/mysql.php';
$query = mysql_query('SELECT * FROM logins WHERE userName="'.$userName.'" AND business_life = 0 ');
if($query) {
echo 'Nieuwe account';
    if(mysql_num_rows($query)==1) {
        echo 'Bestaande account';
    }
else {
        echo 'Niets gevonden!';
    }

}
else {
echo 'MySQL error, contacteer [email protected]!';
}

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');
}

?>
 
Obelix Idefix

Obelix Idefix

14/07/2014 13:05:46
Quote Anchor link
**knip** op 14/07/2014 11:49:10:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?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'])) {
?>

Dus je gaat eerst een nieuwe variabele maken (overigens onnodig).
Vervolgens een query uitvoeren met mysql ipv mysqli/pdo en zonder foutafhandeling.
En daarna (!!) ga je pas kijken of de sessie wel bestaat???
Lijkt mij een verkeerde volgorde.
Gewijzigd op 03/04/2017 18:45:05 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

14/07/2014 13:24:01
Quote Anchor link
Blijkbaar was Obelix en Idefix en je even voor, en je foutafhandeling is nu wel goed.
Maar op de plek van 'Bestaande account' moet je uiteraard wel de info tonen die er dan ook getoond meot worden.

Gebruik wel mysql_fetch_assoc() om die gegevens uit de query om te zetten in een array. Eventueel met een while() als je meerdere items verwacht.
 
John De Zon

John De Zon

14/07/2014 16:38:21
Quote Anchor link
Kan je dit ook in een code zetten, leer ik meer uit dan iets onbekend.
 
- Ariën  -
Beheerder

- Ariën -

14/07/2014 16:40:30
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$sql
= "SELECT ... FROM... WHERE iets = '....'";
$result= mysqli_query($con,$sql);
if($result) {
// query gelukt, doe de rest...
    if(mysqli_num_rows($query)==1) {
    // ALS HET OM EEN ENKEL RECORD GAAT:
    // $data = mysqli_fetch_assoc($result);
    // echo $data['veldnaam'];
    // ....OF BIJ MEERDERE...........
    // while($data=mysqli_fetch_assoc($result)) {
    // echo $data['veldnaam'];
    //    }

    } else {
        // niks gevonden.
    }

}
else {
    // toon een error mysqli_error()
}
?>
 
Pipo Clown

Pipo Clown

14/07/2014 17:17:43
Quote Anchor link
**knip** op 14/07/2014 16:38:21:
Kan je dit ook in een code zetten, leer ik meer uit dan iets onbekend.


Ik ben eigenlijk van mening dat, wanneer je aan de hand van een aanwijzing, zelf iets uitzoekt, je daar meer van op steekt dan wanneer je alles voorgekauwd krijgt.

Wanneer alles voorgekauwd wordt leer je zelf niet nadenken, leer jezelf niet(s) ontwikkelen en zul je altijd afhankelijk blijven van anderen.
Gewijzigd op 03/04/2017 18:45:44 door - Ariën -
 
John De Zon

John De Zon

14/07/2014 17:44:35
Quote Anchor link
Dit is mijn code nu hij geeft nog steeds ook als de business_life entry in de database op 1 zet krijg ik nog steeds niets gevonden!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
include 'config/mysql.php';
$query = "SELECT * FROM logins WHERE userName = '$username' AND business_life = 0";
$result= mysql_query($query);
if($result) {
?>

<!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
    if(mysql_num_rows($query)==1) {
        echo '
    // ALS HET OM EEN ENKEL RECORD GAAT:
    // $data = mysqli_fetch_assoc($result);
    
    // ....OF BIJ MEERDERE...........
    // while($data=mysqli_fetch_assoc($result)) {
    
    //    }'
;
    }
else {
        echo 'Niks gevonden';
    }

}
else {
    echo 'Error contacteer de server administrator!';
}

?>


Voor de duidelijkheid het gaat hier om als ik in de database business_life naar 1 aanpas een scherm moet krijgen waar je al geregistreerd bent en je geen configuratie moet doornemen en als het 0 is moet je het configuratiescherm krijgen.
 
- SanThe -

- SanThe -

14/07/2014 18:55:45
Quote Anchor link
De echo op regel 32 wordt niet afgesloten.
Beetje rommelig daar.

Waar is de foutafhandeling?

if(mysql_num_rows($query)==1) {
In $query staat tekst.
Gewijzigd op 14/07/2014 18:57:41 door - SanThe -
 
- Ariën  -
Beheerder

- Ariën -

14/07/2014 20:19:56
Quote Anchor link
Euh..... PHP-commentaar echo'en? Hoezo?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

14/07/2014 22:04:27
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    if(mysql_num_rows($query)==1) {
?>


Wat is een query en wat is een result?
Welke heb je in bovenstaande regel nodig?
Gewijzigd op 14/07/2014 22:04:45 door Frank Nietbelangrijk
 
John De Zon

John De Zon

15/07/2014 08:43:47
Quote Anchor link
Ik wil gewoon kijken of de business_life bij username op 0 staat indien ja pagina voorschotelen indien nee pagina voorschotelen.
 
- Ariën  -
Beheerder

- Ariën -

15/07/2014 09:31:23
Quote Anchor link
Je moet mysql_num_rows wel de variabele van je mysql_query geven, en niet de string met je SQL-opdracht.
 
Ivo P

Ivo P

15/07/2014 09:32:21
Quote Anchor link
bestaat $username wel?
 
John De Zon

John De Zon

15/07/2014 11:05:48
Quote Anchor link
Ik heb nu ondertussen zelf een code ontwikkeld die deze foutmelding geeft:

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

Hier de code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
include 'config/mysql.php';
if(isset($_SESSION['userName'])) {
$query = "SELECT * FROM logins WHERE userName = '$username' AND business_life = 0";
if (mysql_num_rows($query)==true) {
//Pagina wanneer 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 {
//Pagina wanneer 1
?>


<?php    
}
}
else {
    header('Location: index.php');
}

?>


**knip**
Gewijzigd op 03/04/2017 18:47:37 door - Ariën -
 
Ivo P

Ivo P

15/07/2014 11:14:49
Quote Anchor link
je voert de query niet uit.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$result
= mysqli_query($connectie, $query);
if($result === false) {
  echo 'een fout met '.$query .'<br>'.mysqli_error($connectie);
}

?>


Toevoeging op 15/07/2014 11:15:41:

dit tussen regel 4 en 5

en dan verder heb je $result nodig bij de functies als mysqli_num_row() en de fetch functies

Toevoeging op 15/07/2014 11:16:20:

zoals trouwens hierboven al een paar keer gezegd
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.