Check of naam in SQL staat
Ik ben bezig met een login systeem, en ik wil nu kijken of de naam in SQL staat.
Stel je voor, er staat in de database een gebruikersnaam 'Pietje'. Nu wil ik in een invoerveldje checken of Pietje bestaat. Bestaat Pietje, dan gaat hij door, bestaat hij niet, zet hij een fout in de array $error.
Ik heb dus een tabel, met een aantal rijen. Pietje staat met een aantal andere dingen in een rij. Het veld waar Pietje instaat heet 'gebruikersnaam'.
Goed, ik zet eerst alles in $line:
Dus nu kan ik een echo $line['gebruikersnaam'] doen. Ik check op deze manier:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
elseif ($_POST['gebruikersnaam'] != $line['gebruikersnaam']) {
$error[gebruikersnaam] = 'De gebruikersnaam bestaat niet.';
}
?>
elseif ($_POST['gebruikersnaam'] != $line['gebruikersnaam']) {
$error[gebruikersnaam] = 'De gebruikersnaam bestaat niet.';
}
?>
Alleen als ik nu in het invoerveld Pietje invoer, dan zegt hij nog steeds dat hij niet bestaat. Weet iemand hoe dit komt?
Alvast bedankt! :)
Gewijzigd op 01/01/1970 01:00:00 door Willem-Jan
In dat geval kan je doen:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
$sql = mysql_query("SELECT gebruikersnaam FROM tabel WHERE gebruikersnaam = '".$_POST['gebruikersnaam']."'");
if(mysql_num_rows($sql) >= 1)
{
// bestaat
}else{
// bestaat niet
}
?>
$sql = mysql_query("SELECT gebruikersnaam FROM tabel WHERE gebruikersnaam = '".$_POST['gebruikersnaam']."'");
if(mysql_num_rows($sql) >= 1)
{
// bestaat
}else{
// bestaat niet
}
?>
Voor tabel moet je natuurlijk even je eigen tabel invullen, en de $_POST moet natuurlijk de naam van het veld hebben waar je de gebruikersnaam invult. :)
Djemo schreef op 25.05.2007 20:50:
Submit je nadat je de naam hebt ingevuld?
In dat geval kan je doen:
Voor tabel moet je natuurlijk even je eigen tabel invullen, en de $_POST moet natuurlijk de naam van het veld hebben waar je de gebruikersnaam invult. :)
In dat geval kan je doen:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
$sql = mysql_query("SELECT gebruikersnaam FROM tabel WHERE gebruikersnaam = '".$_POST['gebruikersnaam']."'");
if(mysql_num_rows($sql) >= 1)
{
// bestaat
}else{
// bestaat niet
}
?>
$sql = mysql_query("SELECT gebruikersnaam FROM tabel WHERE gebruikersnaam = '".$_POST['gebruikersnaam']."'");
if(mysql_num_rows($sql) >= 1)
{
// bestaat
}else{
// bestaat niet
}
?>
Voor tabel moet je natuurlijk even je eigen tabel invullen, en de $_POST moet natuurlijk de naam van het veld hebben waar je de gebruikersnaam invult. :)
Soper bedankt, dit werkt perfect!
Ik creër $line nog steeds zo:
Maar als ik nu dit doe:
Code (php)
Dan werkt dat helemaal niet. Voer ik het goede wachtwoord in, blijft hij 'em verkeerd vinden. Wat doe ik verkeerd?
Staat $line['wachtwoord'] ook als sha1 in de DB? Beide variabelen moeten namelijk dezelfde waarde bevatten, en dus ook de zelfde sha1 key.
Raymond schreef op 25.05.2007 22:41:
Staat $line['wachtwoord'] ook als sha1 in de DB? Beide variabelen moeten namelijk dezelfde waarde bevatten, en dus ook de zelfde sha1 key.
Dat klopt, maar ik merk nu dat $line gewoon leeg is. Ik weet niet waardoor het komt, maar kan iemand iets zien wat verkeerd is aan deze code:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$query = "SELECT * FROM ledensysteem WHERE gebruikersnaam = '".$_POST['gebruikersnaam']."'";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
?>
$query = "SELECT * FROM ledensysteem WHERE gebruikersnaam = '".$_POST['gebruikersnaam']."'";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
?>