gebruikersnaam nog niet in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kristof Hendrickx

Kristof Hendrickx

25/08/2013 13:08:04
Quote Anchor link
Hallo,
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
 
PHP hulp

PHP hulp

15/11/2024 13:36:41
 
Bart V B

Bart V B

25/08/2013 13:20:51
Quote Anchor link
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:
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
<?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..
}
?>
Gewijzigd op 25/08/2013 13:25:13 door Bart V B
 
Kristof Hendrickx

Kristof Hendrickx

25/08/2013 13:33:21
Quote Anchor link
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:
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
<?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..
}
?>


als ik het goed begrijp zou volgende code dus moeten werken?:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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";
}
Gewijzigd op 25/08/2013 13:50:44 door Kristof Hendrickx
 
Ramon van Dongen

Ramon van Dongen

25/08/2013 14:15:51
Quote Anchor link
Quote:
Dan kijk je met num_rows() of je er 1 uitkomt.

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if(mysql_num_rows($bestaatdus) > 1)

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...
 
Willem vp

Willem vp

25/08/2013 14:27:24
Quote Anchor link
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...
 
Ramon van Dongen

Ramon van Dongen

25/08/2013 14:32:00
Quote Anchor link
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...
 
Kristof Hendrickx

Kristof Hendrickx

25/08/2013 18:21:13
Quote Anchor link
Ramon van Dongen op 25/08/2013 14:15:51:
Quote:
Dan kijk je met num_rows() of je er 1 uitkomt.

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if(mysql_num_rows($bestaatdus) > 1)

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...


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?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

25/08/2013 18:50:13
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
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';
}

?>
Gewijzigd op 25/08/2013 19:12:41 door Ger van Steenderen
 
Kristof Hendrickx

Kristof Hendrickx

25/08/2013 19:43:26
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
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';
}

?>



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
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

25/08/2013 20:00:26
Quote Anchor link
De onwatjes methode:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
ALTER TABLE members
ADD UNIQUE INDEX idx_user_name (user_name)

De watjes gebruiken Workbench of PHPMyAdmin ;-)

Je code klopt overigens (als je num_rows > 0 gebruikt)
 



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.