[ 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: 1702
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: 3948
Témy: 51 | 51
Bydlisko: Bratislava
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...


_________________
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 | 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: 3948
Témy: 51 | 51
Bydlisko: Bratislava
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...


_________________
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 | 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: 1702
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: 4088
Témy: 34 | 34
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

691

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

1613

20.01.2010 15:39

kolacek

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

hdmi vystup

v Ostatné platformy

1

1526

26.12.2010 13:18

brmbo

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

optický výstup

v Zvuk

5

1368

01.11.2007 17:18

apet

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

xml vystup

v Backend

6

675

21.08.2008 16:07

MKI-Miro

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

Coaxial vystup

v Ostatné

13

1729

18.09.2011 15:27

BIO

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

double vystup

v Zvuk

3

572

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

561

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

489

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

1059

07.10.2010 22:02

Icehammer

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

Formulár - PHP výstup

v Backend

7

1022

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

954

11.06.2008 21:07

OmeGa

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

Výstup USB-c

v Notebooky a netbooky

1

335

16.09.2018 18:56

shiro

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

Žiadny výstup (OUTPUT)

v Frontend

3

741

28.09.2009 19:04

d0.0b

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

funkcie

v Backend

5

980

15.11.2007 9:57

sento

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

Schéma: Monochromatický video výstup

v Elektronika

0

608

23.01.2007 5:19

Elektronic



© 2005 - 2026 PCforum, edited by JanoF