gebruikersnaam nog niet in database
Ik zou een controle willen instellen dat de ingegeven gebruikersnaam via een formulier ingegeven niet al voorkomt in de database, hoe kan ik deze controle verwezenlijken?
Indien de gebruikersnaam er wel al instaat moet ik een foutmelding op het scherm zetten.
Gewijzigd op 25/08/2013 13:08:16 door Kristof Hendrickx
Je voert een query uit op de gebruikersnaam.
Dan kijk je met num_rows() of je er 1 uitkomt.
zo ja, een foutmelding zo niet doorgaan met inserten.
in pseudo code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$sql = "SELECT username
FROM
users
WHERE
username = '".mysql_real_escape_string($_POST['username'])."'";
$result = mysql_query($sql);
if(mysql_num_rows($result) >0)
{
echo 'gebruikersnaam bestaat al';
}
else
{
// inserten gegevens..
}
?>
$sql = "SELECT username
FROM
users
WHERE
username = '".mysql_real_escape_string($_POST['username'])."'";
$result = mysql_query($sql);
if(mysql_num_rows($result) >0)
{
echo 'gebruikersnaam bestaat al';
}
else
{
// inserten gegevens..
}
?>
Gewijzigd op 25/08/2013 13:25:13 door Bart V B
Bart V B op 25/08/2013 13:20:51:
Dat is vrij eenvoudig.
Je voert een query uit op de gebruikersnaam.
Dan kijk je met num_rows() of je er 1 uitkomt.
zo ja, een foutmelding zo niet doorgaan met inserten.
in pseudo code:
Je voert een query uit op de gebruikersnaam.
Dan kijk je met num_rows() of je er 1 uitkomt.
zo ja, een foutmelding zo niet doorgaan met inserten.
in pseudo code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$sql = "SELECT username
FROM
users
WHERE
username = '".mysql_real_escape_string($_POST['username'])."'";
$result = mysql_query($sql);
if(mysql_num_rows($result) >0)
{
echo 'gebruikersnaam bestaat al';
}
else
{
// inserten gegevens..
}
?>
$sql = "SELECT username
FROM
users
WHERE
username = '".mysql_real_escape_string($_POST['username'])."'";
$result = mysql_query($sql);
if(mysql_num_rows($result) >0)
{
echo 'gebruikersnaam bestaat al';
}
else
{
// inserten gegevens..
}
?>
als ik het goed begrijp zou volgende code dus moeten werken?:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
$bestaatal = "SELECT Username FROM users WHERE Username = 'mysql_real_escape_string($gebruikersnaam)'";
$bestaatdus = mysql_query($bestaatal) or die (mysql_error());
if(mysql_num_rows($bestaatdus) > 1)
{
echo "ERROR";
}
$bestaatdus = mysql_query($bestaatal) or die (mysql_error());
if(mysql_num_rows($bestaatdus) > 1)
{
echo "ERROR";
}
Gewijzigd op 25/08/2013 13:50:44 door Kristof Hendrickx
Quote:
Dan kijk je met num_rows() of je er 1 uitkomt.
Ik zou meer dan 0 doen ipv == 1 of > 1... als er namelijk om onverklaarbare redenen toch al 2x een bepaalde gebruikersnaam in staat, wil je nog steeds dat er geen extra bij komt...
Ramon van Dongen op 25/08/2013 14:15:51:
als er namelijk om onverklaarbare redenen toch al 2x een bepaalde gebruikersnaam in staat
Dat is een kwestie van een unique index definiëren op het veld Username...
Quote:
Dat is een kwestie van een unique index definiëren op het veld Username..
Dan hoef je het toch ook niet met num_rows te doen, maar kun je als het goed is niet eens een nieuw record invoegen met dezelfde gebruikersnaam maar hoort de database een fout terug te geven...
Ramon van Dongen op 25/08/2013 14:15:51:
als het > 1 staat gaat hij dit toch ook als fout geven als dit er meerdere zijn?
als hij er 2* in staat word de num rows toch 2?
Ik denk dat het > 0 moet zijn omdat er anders 2 keer dezelfde is toegestaan?
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
if ($mysqli->query("INSERT INTO members (user_name, enhetresje) VALUES ('" .
$mysqli->real_escape_string($_POST['username']) . ", 'enhetrestje'") === false) {
if (strpos('DUPLICATE',strtoupper($mysqli->error)) !== false) {
echo 'Gebruikersnaam bestaat al!';
}
else {
echo 'Gebruiker toegevoegd';
}
?>
if ($mysqli->query("INSERT INTO members (user_name, enhetresje) VALUES ('" .
$mysqli->real_escape_string($_POST['username']) . ", 'enhetrestje'") === false) {
if (strpos('DUPLICATE',strtoupper($mysqli->error)) !== false) {
echo 'Gebruikersnaam bestaat al!';
}
else {
echo 'Gebruiker toegevoegd';
}
?>
Gewijzigd op 25/08/2013 19:12:41 door Ger van Steenderen
Ger van Steenderen op 25/08/2013 18:50:13:
Zoals Willem al aangaf kan je met een unique constraint op username al voorkomen dat die dubbel ingevoerd wordt. Je kan dan gewoon een insert uitvoeren, en dan kijken of dat lukt:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
if ($mysqli->query("INSERT INTO members (user_name, enhetresje) VALUES ('" .
$mysqli->real_escape_string($_POST['username']) . ", 'enhetrestje'") === false) {
if (strpos('DUPLICATE',strtoupper($mysqli->error)) !== false) {
echo 'Gebruikersnaam bestaat al!';
}
else {
echo 'Gebruiker toegevoegd';
}
?>
if ($mysqli->query("INSERT INTO members (user_name, enhetresje) VALUES ('" .
$mysqli->real_escape_string($_POST['username']) . ", 'enhetrestje'") === false) {
if (strpos('DUPLICATE',strtoupper($mysqli->error)) !== false) {
echo 'Gebruikersnaam bestaat al!';
}
else {
echo 'Gebruiker toegevoegd';
}
?>
Allemaal goed en wel, maar ondertussen was de vraag of mijn script klopt ;)
Daarbij ken ik ook niet de instelling in mysql waardoor enkel een unieke gebruikersnaam erin kan
Gewijzigd op 25/08/2013 19:45:29 door Kristof Hendrickx
De watjes gebruiken Workbench of PHPMyAdmin ;-)
Je code klopt overigens (als je num_rows > 0 gebruikt)