PHP Ausführung beenden, aber HTML dennoch anzeigen...

Hallo Gruppe,

wenn ich oben im PHP Fehlerbehandlung mache,
und dann so was habe:

[?php
if (fehler1) { array_push($fehlerarray, 'Fehler1 aufgetaucht'); exit; }
if (fehler2) { array_push($fehlerarray, 'Fehler2 aufgetaucht'); exit; }
ExecuteFunctionNurWennKeineFehler();
?]
[html]
<? foreach ($fehlerarray as $meldung) { echo $meldung .'[br]'; ?>
[/html]

Kommt jedesmal eine leere Seite. Das Stichwort 'break' statt
'exit' funktioniert nur innerhalb von Schleifen.

Wie kann ich die Ausfürhung von PHP oben beenden und gleich zum
HTML unten springen um den Fehler darzustellen in der Fehlermeldung?

Danke, Chris
christoph.soellner [ Do, 20 September 2007 17:33 ] [ ID #1825395 ]

Re: PHP Ausführung beenden, aber HTML dennoch anzeigen...

Christoph Soellner schrieb:

> if (fehler1) { array_push($fehlerarray, 'Fehler1 aufgetaucht'); exit; }
> if (fehler2) { array_push($fehlerarray, 'Fehler2 aufgetaucht'); exit; }
> ExecuteFunctionNurWennKeineFehler();

Schon mal was von elseif und else gehört?

if (fehler1) ...
elseif (fehler2) ...
else Execute...

Grundlagen der Programmierung!

Gruß. Claus
Claus Reibenstein [ Do, 20 September 2007 17:52 ] [ ID #1825396 ]

Re: PHP Ausführung beenden, aber HTML dennoch anzeigen...

Christoph Soellner schrieb:
> Hallo Gruppe,
>
> wenn ich oben im PHP Fehlerbehandlung mache,
> und dann so was habe:
>
> [?php
> if (fehler1) { array_push($fehlerarray, 'Fehler1 aufgetaucht'); exit; =
}
> if (fehler2) { array_push($fehlerarray, 'Fehler2 aufgetaucht'); exit; =
}
> ExecuteFunctionNurWennKeineFehler();
> ?]
> [html]
> <? foreach ($fehlerarray as $meldung) { echo $meldung .'[br]'; ?>
> [/html]
>
> Kommt jedesmal eine leere Seite. Das Stichwort 'break' statt
> 'exit' funktioniert nur innerhalb von Schleifen.
>
> Wie kann ich die Ausfürhung von PHP oben beenden und gleich zum
> HTML unten springen um den Fehler darzustellen in der Fehlermeldung?

$fehlerarray =3D array()

// Validierung
=2E..
=2E..
=2E..


if(count($fehlerarray) =3D=3D=3D 0)){
ExecuteFunctionNurWennKeineFehler();
} else {
// Fehlermeldungen ausgeben
foreach($fehlerarray as $fehlermsg)){
echo htmlspecialchars($fehlermsg);
}
}

Gruss
Joerg

--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Joerg Behrens [ Do, 20 September 2007 17:54 ] [ ID #1825397 ]

Re: PHP Ausführung beenden, aber HTML dennoch anzeigen

Hi,

>> if (fehler1) { array_push($fehlerarray, 'Fehler1 aufgetaucht'); exit; }
>> if (fehler2) { array_push($fehlerarray, 'Fehler2 aufgetaucht'); exit; }
>> ExecuteFunctionNurWennKeineFehler();

> Schon mal was von elseif und else gehört?
> if (fehler1) ...
> elseif (fehler2) ...
> else Execute...
Sicher. Nicht gut.

> Grundlagen der Programmierung!
Verzeih, wenn ich Dir da widerspreche:
http://www.php-faq.de/q/q-stil-waechter.html
christoph.soellner [ Do, 20 September 2007 18:06 ] [ ID #1825398 ]

Re: PHP Ausführung beenden, aber HTML dennoch anzeigen

Danke Dir auch, das ist aber nicht das, wonach ich
suche. Siehe auch http://www.php-faq.de/q/q-stil-waechter.html
Ich würde einfach gerne ein "exit" Befehl haben, der nur
den aktuellen PHP "Block" verläßt.

Alternative wäre, meinen Code in eine Function zu packen
und daraus dann return aufzurufen, aber schön ist das nicht.

Vielleicht hat ja noch jemand eine idee?

Grüße,
Chris
christoph.soellner [ Do, 20 September 2007 18:07 ] [ ID #1825399 ]

Re: PHP Ausführung beenden, aber HTML dennoch anzeigen...

Christoph Soellner schrieb:
> Vielleicht hat ja noch jemand eine idee?

Exceptions?


Gruß,
Habbo
bruening [ Do, 20 September 2007 18:14 ] [ ID #1825400 ]

Re: PHP Ausführung beenden, aber HTML dennoch anzeigen...

Christoph Soellner schrieb:
> Danke Dir auch, das ist aber nicht das, wonach ich
> suche. Siehe auch http://www.php-faq.de/q/q-stil-waechter.html
> Ich würde einfach gerne ein "exit" Befehl haben, der nur
> den aktuellen PHP "Block" verläßt.
>
> Alternative wäre, meinen Code in eine Function zu packen
> und daraus dann return aufzurufen, aber schön ist das nicht.
>
> Vielleicht hat ja noch jemand eine idee?

....und wenn man keine Exceptions benutzen will:

do {
//stuff
if ($foo == 'bar')
break;
if ($bar == 'baz')
break;
//noch irgendwas
} while (false);

echo 'Lebe noch.';

Daniel
Daniel Fett [ Do, 20 September 2007 18:23 ] [ ID #1825401 ]

Re: PHP Ausführung beenden, aber HTML dennoch anzeigen...

Christoph Soellner schrieb:

>> Schon mal was von elseif und else gehört?
>>
>> if (fehler1) ...
>> elseif (fehler2) ...
>> else Execute...
>
> Sicher. Nicht gut.
>
>> Grundlagen der Programmierung!
>
> Verzeih, wenn ich Dir da widerspreche:
> http://www.php-faq.de/q/q-stil-waechter.html

Verzeih, wenn ich wiederum Dir widerspreche: Die im Codewächter
angesprochenen Beispiele haben nichts mit meinem Vorschlag zu tun. Da
geht es um andere Schweinereien, die in der Tat nicht gut sind.

Gruß. Claus
Claus Reibenstein [ Do, 20 September 2007 19:05 ] [ ID #1825402 ]

Re: PHP Ausführung beenden, aber HTML dennoch anzeigen...

Daniel Fett schrieb:
> ...und wenn man keine Exceptions benutzen will:

Tausend mal lieber gescheite Ausnahmebehandlung als ein Sprachkonstrukt
auf diese Weise zu missbrauchen:

> do {
> //stuff
> if ($foo == 'bar')
> break;
> if ($bar == 'baz')
> break;
> //noch irgendwas
> } while (false);
>
> echo 'Lebe noch.';
>
> Daniel

if($foo == 'bar')
{
throw new Exception('$foo must not be bar');
}

if($bar == 'baz')
{
throw new Exception('$bar must not be baz');
}

echo 'Lebe noch.';

a) Generelle Ausnahmebehandlung kann in einer eigenen Exceptionklasse
ausgelagert werden.
b) Der Grund des Funktionsabbruchs kann von außerhalb nachvollzogen
werden über die Exceptionmeldung
c) Die Herbeiführung einer Ausnahme kann über den Trace nachvollzogen werden

Die üblichen Vorteile halt bei der Verwendung von Exceptions.

--
Mit freundlichen Grüßen,
Christoph Herrmann

http://dragonprojects.de/
Christoph Herrmann [ Do, 20 September 2007 19:31 ] [ ID #1825404 ]

Re: PHP Ausführung beenden, aber HTML dennoch anzeigen...

> Alternative wäre, meinen Code in eine Function zu packen
> und daraus dann return aufzurufen, aber schön ist das nicht.

Was ist daran nicht schön? Das wäre mein Vorschlag gewesen (bzw. mit
Klassen).

--
Mein Zeugs:
http://www.hadanite-marasek.de/classes.php
http://www.objektivsuche.de/
Hadanite Marasek [ Do, 20 September 2007 19:46 ] [ ID #1825406 ]

Re: PHP Ausführung beenden, aber HTML dennoch anzeigen...

Christoph Soellner schrieb:
> Hallo Gruppe,
>
> wenn ich oben im PHP Fehlerbehandlung mache,
> und dann so was habe:
>
> [?php
> if (fehler1) { array_push($fehlerarray, 'Fehler1 aufgetaucht'); exit; =
}
> if (fehler2) { array_push($fehlerarray, 'Fehler2 aufgetaucht'); exit; =
}
> ExecuteFunctionNurWennKeineFehler();
> ?]
> [html]
> <? foreach ($fehlerarray as $meldung) { echo $meldung .'[br]'; ?>
> [/html]
>
> Kommt jedesmal eine leere Seite. Das Stichwort 'break' statt
> 'exit' funktioniert nur innerhalb von Schleifen.

Das bezeichnet ja auch das Beenden einer Schleifenebene und hat mit dem
gesamten Skript nichts zu tun. Hier einige Lösungsvorschläge:

- Fehlerbehandlung in Funktion statt ans Ende, dann dort das exit. Ist
simpel, aber unflexibel.

- Diese Datei aus einer anderen aufrufen. Mit return statt exit kommt
man dann aufrufende Datei zurück. Allerdings muss dann ans Ende dieses
Skripts ein exit. Insgesamt machbar aber sehr wirr.

- Exception werfen. Die Lösung bei OOP, aber nur wenn man's mag.

- if (empty($fehlerarray)) ExecuteFunctionNurWennKeineFehler();

- http://de.php.net/register_shutdown_function kommt einer direkten
Antwort auf dein Problem am nächsten.


OLLi


--
"ack ack ack"
[Mars Attacks]
oliver.graetz [ Fr, 21 September 2007 05:01 ] [ ID #1826427 ]

Re: PHP Ausführung beenden, aber HTML dennoch anzeigen...

Claus Reibenstein wrote:
> Christoph Soellner schrieb:
>
>
>>>Schon mal was von elseif und else gehört?
>>>
>>> if (fehler1) ...
>>> elseif (fehler2) ...
>>> else Execute...
>>
>>Sicher. Nicht gut.
>>
>>
>>>Grundlagen der Programmierung!
>>
>>Verzeih, wenn ich Dir da widerspreche:
>>http://www.php-faq.de/q/q-stil-waechter.html
>
>
> Verzeih, wenn ich wiederum Dir widerspreche: Die im Codewächter
> angesprochenen Beispiele haben nichts mit meinem Vorschlag zu tun. Da
> geht es um andere Schweinereien, die in der Tat nicht gut sind.
>

Kurze Zwischenfrage: Die Gründe der Lesbarkeit kann ich durchaus
nachvollziehen.
Alles andere bedeutet zu 100% = schlechter Programmierer?

G.
guenter.baier [ Di, 25 September 2007 01:17 ] [ ID #1828994 ]

Re: PHP Ausführung beenden, aber HTML dennoch anzeigen...

Günter Baier schrieb:

> Claus Reibenstein wrote:
>
>> Christoph Soellner schrieb:
>>
>>
>>>> Schon mal was von elseif und else gehört?
>>>>
>>>> if (fehler1) ...
>>>> elseif (fehler2) ...
>>>> else Execute...
>>>
>>> Sicher. Nicht gut.
>>>
>>>> Grundlagen der Programmierung!
>>>
>>> Verzeih, wenn ich Dir da widerspreche:
>>> http://www.php-faq.de/q/q-stil-waechter.html
>>
>> Verzeih, wenn ich wiederum Dir widerspreche: Die im Codewächter
>> angesprochenen Beispiele haben nichts mit meinem Vorschlag zu tun. Da
>> geht es um andere Schweinereien, die in der Tat nicht gut sind.
>
> Kurze Zwischenfrage: Die Gründe der Lesbarkeit kann ich durchaus
> nachvollziehen.
> Alles andere bedeutet zu 100% = schlechter Programmierer?

Ich verstehe Deine Zwischenfrage nicht.

Im Codewächter ging es um so etwas wie:

if (...)
if (...)
if (...)
do_something;
else
do_something_else;
else
do_something_more;
else
do_nothing;

Mein Vorschlag mit elseif (taucht oben nirgends auf) war so etwas wie:

if (...)
do_something;
elseif (...)
do_something_else;
elseif (...)
do_something_more;
else
do_nothing;

So viel zur Lesbarkeit. Den Rest musst Du mir erklären.

Gruß. Claus
Claus Reibenstein [ Di, 25 September 2007 08:32 ] [ ID #1829000 ]
PHP » de.comp.lang.php.misc » PHP Ausführung beenden, aber HTML dennoch anzeigen...

Vorheriges Thema: langlaufende Routine "abfangen"?
Nächstes Thema: naked woman photos! webcam chat free voyer worthy seek webcam chat