IF statement beëindigen
Beste
Is het mogelijk om een if-statement te beëindigen?
Dit is een voorbeeld van mijn code:
Is het mogelijk om een if-statement te beëindigen?
Dit is een voorbeeld van mijn code:
elseif ?
Nee, ik leg het even beter uit.
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.
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.
Alt je enigsinds de tijd had genomen dan was je vanzelf hier op uitgekomen:
http://www.php.net/break
http://www.php.net/break
Maar ik had dat al gelezen maar daar staat dat alleen bij for, while en switch kan gebruikt worden?
De juiste volgorde en logica aanhouden.
$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?
}
$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().
Bedankt allemaal maar jullie snappen het niet echt geloof ik?
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
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
Dat gaat niet. Dat zal je met de if() structuur zelf moeten creëren. Logica is het trefwoord.
Toevoeging op 09/11/2010 21:43:29:
Toevoeging op 09/11/2010 21:43:29:
En is er een andere manier ofzo? BV met een switch had ik ook geprobeerd maar dat gaat ook niet echt denk ik toch?
Toch bedankt!
Toch bedankt!
Een switch kan je spontaan verlaten met een break.
Toevoeging op 09/11/2010 21:49:02:
Geef anders even het stukje 'echte' code, kunnen we even meedenken.
Toevoeging op 09/11/2010 21:49:02:
Geef anders even het stukje 'echte' code, kunnen we even meedenken.
Uhm, als ik een break doe in een switch. Gaat hij dan helemaal uit de switch? Of is dat gewoon om het einde van een case aan te geven?
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().
Bekijk even mijn vorige post, daar zie je de echte code. Maar ik denk dat die nogal verwarrend lijkt.
Maar als ik doe met een switch:
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?
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 echo��n 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 echo��n 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.
Even om te laten weten!!!
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.
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:




