Functie returned niet goed..
ik heb een functie die checkt of de username die in de adresbalk is meegegeven, wel bestaat in de database..
als de user bestaat moet de functie $notfound = true; geven
het lukt me niet om het werkend te krijgen..
dit is de functie:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
function user_exists() {
if (isset($_GET['user'])) {
$user = $_GET['user'];
$query = mysql_query('Select lidnummer from Registratie
WHERE nickname = "' . $user . '"');
$row = mysql_fetch_assoc($query);
if (empty($row['lidnummer'])) {
$notfound = true;
}
else{
$notfound = false;
}
return $notfound;
}
}
?>
function user_exists() {
if (isset($_GET['user'])) {
$user = $_GET['user'];
$query = mysql_query('Select lidnummer from Registratie
WHERE nickname = "' . $user . '"');
$row = mysql_fetch_assoc($query);
if (empty($row['lidnummer'])) {
$notfound = true;
}
else{
$notfound = false;
}
return $notfound;
}
}
?>
en hier roep ik de functie aan:
(de overige code is vervangen door de 2 zinnetjes, want die code is niet relevant)
Code (php)
Toevoeging op 26/06/2011 18:47:15:
ikzelf denk dat ik niet goed check of de user gevonden wordt in de database..
dus ik denk dat het hier aan ligt: if (empty($row['lidnummer'])) {
????
thnx opgelost :D!
Vergelijk het eens met deze:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
function user_exists($user) {
$query = mysql_query("Select COUNT(*) from Registratie
WHERE nickname = '" . mysql_real_escape_string($user) . "'");
return $query AND mysql_num_rows($query);
}
// gebruik met $_GET
if (isset($_GET['user']) AND user_exists($_GET['user']))
{
// user bestaat
}
// ander gebruik
$user = 'dummy';
if ( ! user_exists($user))
{
// user bestaat niet
}
?>
function user_exists($user) {
$query = mysql_query("Select COUNT(*) from Registratie
WHERE nickname = '" . mysql_real_escape_string($user) . "'");
return $query AND mysql_num_rows($query);
}
// gebruik met $_GET
if (isset($_GET['user']) AND user_exists($_GET['user']))
{
// user bestaat
}
// ander gebruik
$user = 'dummy';
if ( ! user_exists($user))
{
// user bestaat niet
}
?>
maar waaron return je $query AND mysql_num_rows($query) ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
return $query AND mysql_num_rows($query);
//doet het zelfde als
if ($query AND mysql_num_rows($query))
{
return TRUE;
}
else
{
return FALSE;
}
?>
return $query AND mysql_num_rows($query);
//doet het zelfde als
if ($query AND mysql_num_rows($query))
{
return TRUE;
}
else
{
return FALSE;
}
?>
Ik vind die eerste manier net zo duidelijk en ietsjes mooier.
Gewijzigd op 26/06/2011 21:26:08 door Dos Moonen
dan geeft hij elke keer aan dat de gebruikers niet bestaan...
Jason van der Zeeuw op 26/06/2011 21:27:03:
het werkt niet bij mij...
dan geeft hij elke keer aan dat de gebruikers niet bestaan...
dan geeft hij elke keer aan dat de gebruikers niet bestaan...
Hmm, dat ruikt naar een fout in je query. Want als ik de functie lees zou hij altijd true moeten geven. COUNT geeft immers een resultaat terug, dus mysql_num_rows is altijd 1. Ook als COUNT 0 heeft geteld.
Probeer deze eens, met een beetje geluk krijg je dan te zien wat er mis gaat.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function user_exists($nickname)
{
$query = sprintf("SELECT COUNT(*) FROM Registratie WHERE nickname = '%s'",
mysql_real_escape_string($nickname));
$result = mysql_query($query);
if (!$result)
trigger_error("Error in user_exists: " . mysql_error(), E_USER_ERROR);
return mysql_result($result, 0);
}
?>
function user_exists($nickname)
{
$query = sprintf("SELECT COUNT(*) FROM Registratie WHERE nickname = '%s'",
mysql_real_escape_string($nickname));
$result = mysql_query($query);
if (!$result)
trigger_error("Error in user_exists: " . mysql_error(), E_USER_ERROR);
return mysql_result($result, 0);
}
?>