Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z zatrzymywaniem skryptu
Forum PHP.pl > Forum > Gotowe rozwiązania
Ive
mam problem z zatrzymywaniem skryptu w razie błędu poprzez wywołanie die() no wiec srawa wygląda tak. w config.inc.php zapiosałem sobie funkcje down() która jest odpowiedzialna za wyświetlenie menu i reszty strony po wczytaniu textu. no to w razie błędu wywołuje to za pomocą:[php:1:4411a7b292]<?php
if($jakis_tam_blad) die("tresc komunikatu".down());
?>[/php:1:4411a7b292]
no i teraz zachodzi mi pewna dziwna sprawa
ponieważ najpierw jest wywoływana funkcja down() a dopiero potem idzie komunikat. co może być tego przyczyną? bardzo proszę o szybką odpowiedź!
pozdrawiam, Ive
Bags_Bunny
funkcja down() musialaby zwracac (return) a nie wypisywac (echo/print) mozesz zrobic:
[php:1:536da4e265]<?php
if($jakis_tam_blad) {
echo 'tresc komunikatu';
down();
exit;
}
?>[/php:1:536da4e265]
Ive
heh ale korzystając z twojego sposobu to musiałbym przerabiać każdy die w kodzi a jest tego na prawde dużo :/ a funkcja down() nie zwrqaca mi echo ani print tylko:
[php:1:bec89eed20]<?php
function down() {
global $smarty;

$smarty->display("lay/po_tresc.inc.htm");
$smarty->display("lay/navigation.inc.htm");
$smarty->display("lay/rightmenu.inc.htm");
$smarty->display("lay/down.inc.htm");

ob_end_flush();

}
?>[/php:1:bec89eed20]
[tak duzo plików wczytuje bo musze jeszcze dorobić dynamiczne menu - to tak jakby się ktoś dziwił ;] ]
FiDO
Wiec zdefiniuj swoja funkcje die():
[php:1:47ab4c876f]<?php

function koniec($str)
{
echo $str;
down();
}

?>[/php:1:47ab4c876f]
i zamien wszystkie wywolania die() na koniec() - w wieksosci edytorow bedzie to trywialne i szybkie.
Bags_Bunny
sprobuj tak:
[php:1:24f640e370]<?php
function down() {
global $smarty;
ob_start();
$smarty->display("lay/po_tresc.inc.htm");
$smarty->display("lay/navigation.inc.htm");
$smarty->display("lay/rightmenu.inc.htm");
$smarty->display("lay/down.inc.htm");
$content = ob_get_contens();
ob_end_clean();
ob_end_flush();
return $content;
}
?>[/php:1:24f640e370]
tylko nie wiem czy sie moj bufor z twoim nie pogryzie winksmiley.jpg
scanner
Używając Smarty, można skorzystać z innej metody:[php:1:d6aa17cb43]<?php
function down()
{
global $smarty;

$content = $smarty->fetch("lay/po_tresc.inc.htm");
$content = $smarty->fetch("lay/navigation.inc.htm");
$content = $smarty->fetch("lay/rightmenu.inc.htm");
$content = $smarty->fetch("lay/down.inc.htm");

return $content;
}
?>[/php:1:d6aa17cb43]
FiDO
Jak juz to:
[php:1:f3621265fb]<?php
function down()
{
global $smarty;

$content = $smarty->fetch("lay/po_tresc.inc.htm");
$content .= $smarty->fetch("lay/navigation.inc.htm");
$content .= $smarty->fetch("lay/rightmenu.inc.htm");
$content .= $smarty->fetch("lay/down.inc.htm");

return $content;
}
?>[/php:1:f3621265fb]
winksmiley.jpg
Ive
dzięki! działa tylko nie wiem czemu na tym $smarty->fetch nie działa ale zmieniłem na display i jest ok ;]

[EDIT]
heh... zapędziłem się :/ nadal na pierwszym miejscu jest wywoływane $smarty a dopiero potem komunikat :/
FiDO
Jak chcesz zeby smmarty bylo pozniej to musi byc fetch, co Ci z nim nie dziala ?
Ive
Dobra jest! ;] już zrobiłem to wykorzystując metodę FiDO z funkcją koniec ;] już jest poprawnie zwrazany błąd biggrin.gif a $smarty->fetch nic mi nie zwracał wogóle :/ po prostu kończyła się strona i tyle :/ ale problem rozwiązany jest i tak ;] Dziękuje wszystkim ;]
FiDO
Dosc dziwne, ze fetch Ci nic nie zwracal, skoro metoda display wewnatrz Smarty odwoluje sie wlasnie do fetch...
Ive
hm... w smartach jest na poziomie very basic więc raczej o tym z tobą nie pogadam ale tak właśnie było biggrin.gif

[EDIT]
kod brałem z waszych postów [nic w nim nie zmieniałem]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.