ander code ipv exit welk de volgende div's nog wel laad?
Ik ben vandaag een beetje de foutafhandeling van mij site aan het verbeteren, dus ik wilde exit gaan gebruiken ipv weet ik niet hoeveel else'jes dus toen kwam ik erineens achter dat mijn footer die onder de content staat niet meer werd geladen. Dit komt natuurlijk door exit, omdat er na deze code geen code meer wordt uitgevoerd, maar is er misschien een andere code welk dan wel volgende div's gaat uitvoeren, of is er echter maar 1 manier om mijn footer te laten zien en dat is door allemaal if else'jes te gebruiken in de code in mijn content?
groetjes,
Dennis
Alleen maar if/else jes
Ok jammer. Toch bedankt :)
Dennis schreef op 01.07.2008 10:22:
Goedendag,
Ik ben vandaag een beetje de foutafhandeling van mij site aan het verbeteren, dus ik wilde exit gaan gebruiken
Ik ben vandaag een beetje de foutafhandeling van mij site aan het verbeteren, dus ik wilde exit gaan gebruiken
Je hebt nu ontdekt dat die exit helemaal geen goede manier is. De beste manier is om eerst alle business logica af te handelen. Maak bijvoorbeeld twee arrays aan in het begin van je script:
Als er iets fout gaat stop je een melding in je $errs array. Als je een andere melding wilt weergeven, gebruik je $msgs. Op een handige plek in je content doe je dan:
Code (php)
Met de messages array doe je het net zo. Op deze manier kun je ook heel handig actie ondernemen wanneer er iets fout is gegaan. Bijvoorbeeld bij een upload kan van alles fout gaan. Je checkt dan eenvoudig met empty of de array $errs leeg is. Zo ja, dan is alles goed gegaan.
Edit: check mijn upload voorbeeldscript. Daar gaat de foutafhandeling op die manier.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Wat Jan zegt kan in principe ook prima, dat is een mooie oplossing. Ik zou alleen die array wat anders maken:
Door een paar bepaalde types te gebruiken kan je zien of het een error of warning is en dergelijke. (die hebben een bepaalde error_code die je goed kan gebruiken)
Je kan dan controleren of een bepaalde error_code voorkomt in die array, zo ja dan is er echt wat fout gegaan, zo nee dan kunnen er wel waarschuwingen zijn. -> Deze zet ik altijd in 1 array, en daarmee ga ik verder.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Maar mij leek exit handig omdat je dan niet in de war raakt met de accolades die nog moeten worden geplaatst. en ander krijg je aan het eind van de php pagina zoveel accolade sluiten --> }
Ik probeer mijn code zo simpel mogelijk te houden ben net begonnen, en anders snap ik mijn eigen code later niet meer...
Gewijzigd op 01/01/1970 01:00:00 door Dennis
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
function show_topic($topic) {
$sql_response = mysql_query("SELECT * FROM Posts WHERE topic_id = " . intval($topic));
...
if(mysql_num_rows($sql_response) == 0) {
echo 'Geen topics gevonden';
return;
}
while($post = mysql_fetch_assoc($sql_response)) {
echo '<div id="post-' . $post->id . '">';
echo '<p>' . htmlentities($post->content) . '</p>';
echo '</div>';
}
}
?>
<html>
<body>
<h2>Mijn Forum</h2>
<?php echo show_topic(50621); ?>
</body>
</html>
function show_topic($topic) {
$sql_response = mysql_query("SELECT * FROM Posts WHERE topic_id = " . intval($topic));
...
if(mysql_num_rows($sql_response) == 0) {
echo 'Geen topics gevonden';
return;
}
while($post = mysql_fetch_assoc($sql_response)) {
echo '<div id="post-' . $post->id . '">';
echo '<p>' . htmlentities($post->content) . '</p>';
echo '</div>';
}
}
?>
<html>
<body>
<h2>Mijn Forum</h2>
<?php echo show_topic(50621); ?>
</body>
</html>
Op die manier kan je die eindeloos geneste if-lussen vermeiden. Want als er iets vervelend is om te lezen... Dit werkt ook met 'include'. Voorbeeldje:
show_topic.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$sql_response = mysql_query("SELECT * FROM Posts WHERE topic_id = " . intval($topic));
...
if(mysql_num_rows($sql_response) == 0) {
echo 'Geen topics gevonden';
return;
}
while($post = mysql_fetch_assoc($sql_response)) {
echo '<div id="post-' . $post->id . '">';
echo '<p>' . htmlentities($post->content) . '</p>';
echo '</div>';
}
?>
$sql_response = mysql_query("SELECT * FROM Posts WHERE topic_id = " . intval($topic));
...
if(mysql_num_rows($sql_response) == 0) {
echo 'Geen topics gevonden';
return;
}
while($post = mysql_fetch_assoc($sql_response)) {
echo '<div id="post-' . $post->id . '">';
echo '<p>' . htmlentities($post->content) . '</p>';
echo '</div>';
}
?>
en je andere bestand:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
De include stopt met uitvoeren wanneer hij een 'return' tegenkomt. Het werkt hier als een soort van exit, maar dan alleen voor dat ene bestand.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
Ok dan dat is misschien ook wel handig.