Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 16 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.09
Prihlásený: 28.05.11
Príspevky: 179
Témy: 41
Príspevok NapísalOffline : 11.09.2010 21:58

Ahojte mam problem :D Neviem ako by som dostal vystup z funkcie.Vzdy som potreboval len return true a return false.

Je to funkcia pre odoslanie mailu pomocou phpmailer a potrebujem v pripade zlyhania dostat chyby do premennej aby som s nimi mohol pracovat dalej.

tu je zjednoduseny kod funkcie
Kód:
error_reporting(E_ALL);

$mail = new PHPMailer(true);

$mail->IsSMTP();

try {

TU MAM VSETKO POTREBNE (NEBUDEM TO ZBYTOCNE VYPISOVAT)

$mail->Send();
echo "Message Sent OK</p>\n";
return true;
} catch (phpmailerException $e) {
  echo $e->errorMessage();
  return false;
} catch (Exception $e) {
  echo $e->getMessage();
  return false;

  }


Funkcia vrati true alebo false pri zlihani (to potrebujem) ale potrebujem aby pri vratini false vratilo aj chyby a aby som s nimi mohol aj dalej pracovat :-)

Viete mi s tym niekto poradit?

Dakujem


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 11.09.2010 22:33

Tá funkcia môže vrátiť chybu. Ak teda nastala chyba, vráti sa ten text, inak sa vráti false (a ty budeš mať potom test if (poslatEmail() !== false ...).
Prípadne môžeš predať ako parameter premennú do ktorej sa má uložiť tá chybová hláška, alebo vyvoláš výnimku (možno je aj viac možností).


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.09
Prihlásený: 28.05.11
Príspevky: 179
Témy: 41
Príspevok Napísal autor témyOffline : 11.09.2010 22:45

nejako som nepochopil :-)

Ta funkcia vrati ten text ale ja potrebujem aby vratila premennu v ktorej bude ten text a aby som potom mohol pouzit ten text mimo funkcie.

Takze napr by to bolo
Kód:
catch (phpmailerException $e) {$test = $e->errorMessage();
  echo $test;
  return false;
} catch (Exception $e) { $test2 =  $e->getMessage();
  echo $test2
  return false;


Ale ked mimo funkcie zavolam $test alebo $test2 tak tam nie je to co potrebujem :(

Viem to spravit cez define ale to nechcem. A ked to vratim napr return $test neviem to dalej pouzit :(


Offline

Správca fóra
Správca fóra
vystup z funkcie

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 11.09.2010 23:21

potrebujes vratit sucasne false aj popis chyby, ci ako? to je imho zbytocne, lebo ak funkcia nevrati true, tak nieco urcite zlyhalo...
Kód:
$returnValue = funkcia();

a mozes dalej pracovat s premennou $returnValue...







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.09
Prihlásený: 28.05.11
Príspevky: 179
Témy: 41
Príspevok Napísal autor témyOffline : 11.09.2010 23:32

Takze funkcia moze vratit len jednu hodnotu?


Offline

Správca fóra
Správca fóra
vystup z funkcie

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 11.09.2010 23:37

viac samostatnych hodnot urcite nie, ale napriklad pole hodnot uz ano... pripadne to mozes spravit aj tak, ze si definujes nejaku globalnu premennu, do ktorej budes ukladat popis vzniknutej chyby. V tom pripade uz moze funkcia vracat false a aj sa dostanes k textu chyby...







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 11.09.2010 23:37

preco si nenechas exception a nepracujes snou ? exceptions su prave na taketo pouzitie :)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.09
Prihlásený: 28.05.11
Príspevky: 179
Témy: 41
Príspevok Napísal autor témyOffline : 11.09.2010 23:45

nerozumiem :oops: Ako mozem exceptions zobrazit mimo funkcie? :oops:


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 11.09.2010 23:55

no bud to spravis tak ze exception neosetris v prvej funkcii a ona sa prenesie do druhej alebo po osetreni v prvej funkcii si ju opatovne vyvolas.
http://php.net/manual/en/language.exceptions.php


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.09
Prihlásený: 28.05.11
Príspevky: 179
Témy: 41
Príspevok Napísal autor témyOffline : 12.09.2010 9:39

Ako myslis ze exception neosetrim? Ze neosetrim vynimku?A tym opatovnym vyvolanim myslis opatovne vyvolanie funkcie? :oops:


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 12.09.2010 10:15

obalenie volania funkcie fo bloku try...catch sposobi odchytenie vynimky. v priklade je funkcia f2 ktorej som zakomentoval odchytenie vynimky
phpmailerException a jej osetrenie som posunul do nadradenej funkcie f1
Kód:
function f1() {
  try { 
    if (f2()) {
      ...
    }
  } catch (phpmailerException $e) {
    echo $e->errorMessage();
  }

}

function f2{
  $mail = new PHPMailer(true);
  $mail->IsSMTP();
  //try {
    TU MAM VSETKO POTREBNE (NEBUDEM TO ZBYTOCNE VYPISOVAT)
    $mail->Send();
    echo "Message Sent OK</p>\n";
    return true;
  //} catch (phpmailerException $e) {
  //  echo $e->errorMessage();
  // return false;
  //} catch (Exception $e) {
  //  echo $e->getMessage();
   // return false;
  //} 
}

ak si chces vyvolat vlastnu vynimku tak studuj tu http://www.w3schools.com/php/php_exception.asp


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.09
Prihlásený: 28.05.11
Príspevky: 179
Témy: 41
Príspevok Napísal autor témyOffline : 12.09.2010 11:46

JA uz som z toho mimo :D

Este si to skusim nastudovat a uvidim...

Zatial som to spravil takto :


Kód:
function send ($mesage) {
error_reporting(E_ALL);

$mail = new PHPMailer(true);

$mail->IsSMTP();

try {

TU MAM VSETKO POTREBNE (NEBUDEM TO ZBYTOCNE VYPISOVAT)

$mail->Send();

} catch (phpmailerException $e) {
  return $e->errorMessage();

} catch (Exception $e) {
  return $e->getMessage();

}
  }}


a potom to zobrazim takto:

Kód:
$test = send($mesage);
if (sizeof($test)> 0) echo $test;  else echo "OK";
 


S premennou
Kód:
$test
potom mozem dalej pracovat :oops:


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 12.09.2010 12:35

Môžeš vyskúšať aj niečo takéto:
Kód:
function send($message)
{
        try {
                $mail->Send();
        } catch (phpmailerException $e) {
                return Array(false, $e->errorMessage());
        } catch (Exception $e) {
                return Array(false, $e->getMessage());
        }
        return Array(true, "");
}

list($ok, $err) = send("sprava");
if ($ok) {
        echo "Vsetko prebehlo v poriadku\n";
} else {
        echo "Nastala chyba: " . $err . "\n";
}


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.09
Prihlásený: 28.05.11
Príspevky: 179
Témy: 41
Príspevok Napísal autor témyOffline : 12.09.2010 18:11

Ak sa smiem spytat na co je tam toto
Kód:
list($ok, $err)


To ok ma byt pre return true a err ma byt pre tie chyby?Lebo ak hej tak to tak nefunguje :oops:


Offline

Čestný člen
Čestný člen
vystup z funkcie

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 12.09.2010 18:31

Nie. Ak pouzijes chronov kod a $mail->Send() nevyhodi vynimku, v $ok bude true a v $err bude prazdny retazec. Ak kod prejde do catch bloku, v $ok bude false a v $err znenie chyby. Pozri si nieco o list(), bude ti to jasnejsie.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.09
Prihlásený: 28.05.11
Príspevky: 179
Témy: 41
Príspevok Napísal autor témyOffline : 13.09.2010 19:56

Aha, ja som mal na miesto
Kód:
return Array(true, "");
iba
Kód:
return true;

preto mi to nefungovalo :D Dik idem to vyskusat :)


Odpovedať na tému [ Príspevkov: 16 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. vystup na sluchadla Výstup pro sluchátka (1xS/PDIF)

v Notebooky a netbooky

1

581

29.06.2011 19:20

rhonin37 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ext USB zvukovka 5.1 vystup a SPDIF vstup/vystup

v Zvuk

5

1475

20.01.2010 15:39

kolacek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Mŕtvy výstup

v Audio programy

2

475

08.05.2010 22:12

Victorious_ Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. hdmi vystup

v nVidia čipové sady

1

1405

26.12.2010 13:18

brmbo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. optický výstup

v Zvuk

5

1241

01.11.2007 17:18

apet Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. xml vystup

v PHP, ASP

6

578

21.08.2008 16:07

MKI-Miro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Coaxial vystup

v Ostatné

13

1553

18.09.2011 15:27

BIO Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. double vystup

v Zvuk

3

485

21.01.2010 14:29

Tech Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Výstup USB-c

v Notebooky a netbooky

1

251

16.09.2018 18:56

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. audio vystup problem

v Audio programy

2

361

15.02.2015 18:08

dixi Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Nejde VGA výstup

v Ostatné grafické karty

3

955

07.10.2010 22:02

Icehammer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Formulár - PHP výstup

v PHP, ASP

7

943

04.10.2007 13:04

imcold Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. nefungujuci dvi vystup

v nVidia grafické karty

14

826

11.06.2008 21:07

OmeGa Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Žiadny výstup (OUTPUT)

v JavaScript, VBScript, Ajax

3

620

28.09.2009 19:04

d0.0b Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. funkcie

v Assembler, C, C++, Pascal, Java

5

863

15.11.2007 9:57

sento Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ipod 6G + Av výstup

v Mobilné zariadenia

3

400

02.06.2008 23:45

aaggii Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra