IF statement beëindigen
Is het mogelijk om een if-statement te beëindigen?
Dit is een voorbeeld van mijn code:
elseif ?
if(strlen($_POST['username']) == 0) $error[] = 'Geen gebruikersnaam ingevult.';
if(count($error) == 0)
{
$query1 = mysql_query("SELECT * FROM users WHERE username = $_POST['username']");
if(mysql_num_rows($query1) == 0) $error[] = 'Gebruiker bestaad niet!';
}
if(count($error) > 0) echo $error;
Dit is het ongeveer. Ik weet dat de code niet echt helemaal klopt omdat dit gewoon snel een voorbeeld is. Dus waar die $error = 'gebruker bestaad niet' staat moet hij die if stoppen. Dus die hoofd-if van count($error) == 0. Dus dat hij dan meteen naar de volgende if gaat die de errors echoëd.
Maar ik had dat al gelezen maar daar staat dat alleen bij for, while en switch kan gebruikt worden?
$error = 0;
if(hier wat dat niet uitmaakt and !$result)
{
$error = 1;
Hier wil ik maken dat de hoofd-if stopt.
Dus dat hij verder gaat onder de hoofd-if, hoe doe ik dat?
}
Moet dan het hele script stoppen? Of allen het if gedeelte?
Noppes Homeland op 09/11/2010 21:11:40:
Alt je enigsinds de tijd had genomen dan was je vanzelf hier op uitgekomen:
http://www.php.net/break
http://www.php.net/break
Een break werkt niet bij een if().
Ik zal het nog eens proberen uit te leggen.
Dus de hoofd if moet stoppen. Laat ik het eens uitleggen met uitvoeren1.
if(uitvoeren1 == 0)
{
blabla.... wat code hier die dan uitvoeren1 op 0 of 1 zal gaan zetten (true of false)
if(uitvoeren1 == 1) stop de if(uitvoeren1 == 0).... Deze if dus, dus niet de hele pagina stoppen ofzo, maar die hoofd if die kijkt of uitvoeren1 op 0 staat, snap je? Want uitvoeren1 is nu op 1 gezet he
Toevoeging op 09/11/2010 21:43:29:
Toch bedankt!
Toevoeging op 09/11/2010 21:49:02:
Geef anders even het stukje 'echte' code, kunnen we even meedenken.
Code (php)
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
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
if(empty($userName))
{
$error[] = 'Username is empty';
}
if(empty($userPassword))
{
$error[] = 'Password is empty';
}
if(count($error) == 0)
{
// Find if userName and userPassword are correct
$query1 = mysql_query("SELECT * FROM users WHERE username = '".mysql_real_escape_string($userName)."' AND userpassword = '".mysql_real_escape_string(md5(sha1($userPassword)))."'");
// Check if the user exists in the database
if(mysql_num_rows($query1) == 0) { $error[] = 'Wrong username or password'; }
else $row1 = mysql_fetch_assoc($query1);
code gaat hier verder als er geen $error opgegeven is. Als er wel een error opgegeven is dan moet hij naar de volgende if die je hieronder ziet.
}
if(count($error) > 0)
{
echo '<p>'.implode('<br />', $error).'</p>';
}
{
$error[] = 'Username is empty';
}
if(empty($userPassword))
{
$error[] = 'Password is empty';
}
if(count($error) == 0)
{
// Find if userName and userPassword are correct
$query1 = mysql_query("SELECT * FROM users WHERE username = '".mysql_real_escape_string($userName)."' AND userpassword = '".mysql_real_escape_string(md5(sha1($userPassword)))."'");
// Check if the user exists in the database
if(mysql_num_rows($query1) == 0) { $error[] = 'Wrong username or password'; }
else $row1 = mysql_fetch_assoc($query1);
code gaat hier verder als er geen $error opgegeven is. Als er wel een error opgegeven is dan moet hij naar de volgende if die je hieronder ziet.
}
if(count($error) > 0)
{
echo '<p>'.implode('<br />', $error).'</p>';
}
Gewijzigd op 09/11/2010 21:53:37 door Ruben Portier
Dan verlaat ie de switch().
Maar als ik doe met een switch:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
switch(count($error))
{
if blabla = 0 { $error[] = 'fout!';
if(count($error) > 0) break;
hier gaat de code verder als er geen fout was
}
if(count($error) > 0)
{
hier dus de fouten echon als ik het goed begrijp?.....
}
{
if blabla = 0 { $error[] = 'fout!';
if(count($error) > 0) break;
hier gaat de code verder als er geen fout was
}
if(count($error) > 0)
{
hier dus de fouten echon als ik het goed begrijp?.....
}
Zal het zo werken? Dus als ik doe break dat hij naar volgende code gaat?
Toevoeging op 09/11/2010 21:58:09:
Ik zit zo te denken....
Kan ik niet beter doen
while(count($error) == 0)
Dan kan ik toch ook break doen enzo? Want als ik dan error op 1 doe en break doe dan gaat hij toch gwn weer naar het begin van die while zeker? of is break echt naar het volgende statement?
ik zou het toch met de ifjes doen. Omschrijf je probleem even wat duidelijker. Volgens mij zit je logica nog niet goed.
Het werkt gwn met een while.
Ik doen dan break; bij een fout en dan gaat alles netjes!!!
Bedankt allemaal voor de hulp!
Toevoeging op 09/11/2010 22:16:44:
Hier ben ik weer...
Ik zit met een 'raar' probleem.
Als alles klopt moet hij met een meta refresh weer naar de index pagina. Maar heel de site loopt vast omdat hij blijft inloggen. Dit omdat die while blijft lopen omdat de error dan 0 is he... Iemand een idee hoe ik dit fix?
Toevoeging op 09/11/2010 22:23:05:
NVM, eht werkt al door bij de while $succeed toe te voegen. Als die true is werkt de while niet.
Code (php)
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
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
<?php
if(empty($userName))
{ #1
$error[] = 'Username is empty';
}
if(empty($userPassword))
{ #2
$error[] = 'Password is empty';
}
if(count($error) == 0)
{ #3
// Find if userName and userPassword are correct
$query1 = mysql_query("SELECT * FROM users WHERE username = '".mysql_real_escape_string($userName)."' AND userpassword = '".mysql_real_escape_string(md5(sha1($userPassword)))."'");
// Check if the user exists in the database
if(mysql_num_rows($query1) == 0) { #4
$error[] = 'Wrong username or password';
}
else ($row1 = mysql_fetch_assoc($query1)) { #5
#code gaat hier verder als er geen $error opgegeven is. Als er wel een error opgegeven is dan moet hij naar de volgende if die je hieronder ziet.
}
}
if(count($error) > 0)
{ #6
echo '<p>'.implode('<br />', $error).'</p>';
}
?>
if(empty($userName))
{ #1
$error[] = 'Username is empty';
}
if(empty($userPassword))
{ #2
$error[] = 'Password is empty';
}
if(count($error) == 0)
{ #3
// Find if userName and userPassword are correct
$query1 = mysql_query("SELECT * FROM users WHERE username = '".mysql_real_escape_string($userName)."' AND userpassword = '".mysql_real_escape_string(md5(sha1($userPassword)))."'");
// Check if the user exists in the database
if(mysql_num_rows($query1) == 0) { #4
$error[] = 'Wrong username or password';
}
else ($row1 = mysql_fetch_assoc($query1)) { #5
#code gaat hier verder als er geen $error opgegeven is. Als er wel een error opgegeven is dan moet hij naar de volgende if die je hieronder ziet.
}
}
if(count($error) > 0)
{ #6
echo '<p>'.implode('<br />', $error).'</p>';
}
?>
Zoals je hierboven kunt zien, heb ik de ifjes genummert (met een #nummer)
Bij if 1, 2 en 4 kunnen $error gezet worden.
Stel er is geen error. Dan gaan we dus if#3 binnen (als er wel een error was, dan gingen we deze namelijk niet binnen). Het is dus zeker dat er vóór aanvang van if#4 GEEN error is.
Als blijkt if#4 een error geeft, dan zal hij niet naar #5 gaan (en andersom).
Dus je kunt #5 vullen met alles wat je NIET aan #4 wilt meegeven. Dus de verwerking van het formulier o.i.d.
Dit is alles.
Trouwens. de functie empty is sneller dan de count-functie: