[ 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 | 41
NapísalOffline : 11.09.2010 21:58 | vystup z funkcie

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: 1719
Témy: 0 | 0
NapísalOffline : 11.09.2010 22:33 | vystup z funkcie

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 | 41
Napísal autor témyOffline : 11.09.2010 22:45 | vystup z funkcie

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: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 11.09.2010 23:21 | vystup z funkcie

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...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
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 | 41
Napísal autor témyOffline : 11.09.2010 23:32 | vystup z funkcie

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: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 11.09.2010 23:37 | vystup z funkcie

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...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
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 | 2
NapísalOffline : 11.09.2010 23:37 | vystup z funkcie

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 | 41
Napísal autor témyOffline : 11.09.2010 23:45 | vystup z funkcie

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 | 2
NapísalOffline : 11.09.2010 23:55 | vystup z funkcie

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 | 41
Napísal autor témyOffline : 12.09.2010 9:39 | vystup z funkcie

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 | 2
NapísalOffline : 12.09.2010 10:15 | vystup z funkcie

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 | 41
Napísal autor témyOffline : 12.09.2010 11:46 | vystup z funkcie

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: 1719
Témy: 0 | 0
NapísalOffline : 12.09.2010 12:35 | vystup z funkcie

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 | 41
Napísal autor témyOffline : 12.09.2010 18:11 | vystup z funkcie

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: 4110
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 12.09.2010 18:31 | vystup z funkcie

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 | 41
Napísal autor témyOffline : 13.09.2010 19:56 | vystup z funkcie

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 :)


 [ Príspevkov: 16 ] 


vystup z funkcie



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

288

29.06.2011 19:20

rhonin37

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

1137

20.01.2010 15:39

kolacek

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

hdmi vystup

v nVidia čipové sady

1

1000

26.12.2010 13:18

brmbo

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

optický výstup

v Zvuk

5

923

01.11.2007 17:18

apet

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

xml vystup

v PHP, ASP

6

393

21.08.2008 16:07

MKI-Miro

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

Coaxial vystup

v Ostatné

13

1092

18.09.2011 15:27

BIO

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

double vystup

v Zvuk

3

264

21.01.2010 14:29

Tech

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

Mŕtvy výstup

v Audio programy

2

286

08.05.2010 22:12

Victorious_

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

audio vystup problem

v Audio programy

2

130

15.02.2015 18:08

dixi

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

Nejde VGA výstup

v Ostatné grafické karty

3

728

07.10.2010 22:02

Icehammer

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

Formulár - PHP výstup

v PHP, ASP

7

611

04.10.2007 13:04

imcold

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

nefungujuci dvi vystup

v nVidia grafické karty

14

459

11.06.2008 21:07

OmeGa

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

Žiadny výstup (OUTPUT)

v JavaScript, VBScript, Ajax

3

440

28.09.2009 19:04

d0.0b

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

funkcie

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

5

638

15.11.2007 9:57

sento

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

audio vystup na case

v Zvuk

1

357

14.12.2007 13:07

KocuR

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

kabel na vystup audia

v Zvuk

2

141

03.11.2013 10:01

KocuR



© 2005 - 2017 PCforum, edited by JanoF