Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyjatki i dość nietypowy problem
dzesi
post 24.12.2007, 15:19:49
Post #1





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 3.05.2006

Ostrzeżenie: (0%)
-----


Witam mam problem aktualnie pisze aplikacje w php i mam dziwny problem tzn np
  1. <?php
  2. class exception
  3. {
  4.  
  5. private $login;
  6. private $haslo;
  7. private $haslo2;
  8.  
  9.  
  10. public function __construct()
  11. {  
  12.  
  13. // Odbieranie danych z formularza
  14. $this->login=$_POST['login'];
  15. $this->haslo=$_POST['haslo'];
  16. $this->haslo2=$_POST['haslo2'];
  17.  
  18. }
  19. public function walidacja_danych()
  20. {
  21. if(empty($this->login))
  22. {
  23. throw new Exception("Blad nie podales loginu ");
  24.  
  25. }
  26. if(empty($this->haslo))
  27. {
  28. throw new Exception(" Nie podales hasla");
  29. }
  30. }
  31.  
  32. public function polaczenie()
  33. {
  34. try{
  35. $db=new PDO('mysql:hoat=localhost;dbname=test','root','root');
  36. echo "Polaczenie udalo sie";
  37. }
  38. catch(PDOException $e)
  39. {
  40. echo " Nie można polaczy sie z baza" .$e->getMessage();
  41.  
  42.  
  43. }
  44. }
  45.  
  46.  
  47.  
  48. }
  49.  
  50. $starting = new exception();
  51. try {
  52. $starting->walidacja_danych();
  53. }
  54. catch (Exception $e)
  55. {
  56. echo $e->getMessage();
  57. }
  58.  
  59. $starting->polaczenie();
  60.  
  61.  
  62. ?>

przy np nie wpisaniu danych do formularza powinny pokazać sie dwa komunikaty nie podałeś loginu i nie podałeś hasła ale tu tylko pokazuje sie nie podałeś loginu tak jak by drugi wyjątek nie został w ogóle wywołany ?.Wiec moje pytanie co jest nie tal lub co robie zle ?.Dziękuje za odpowiedz smile.gif
Go to the top of the page
+Quote Post
webdice
post 24.12.2007, 15:25:18
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Można powiedzieć ze throw" title="Zobacz w manualu PHP" target="_manual działa jak exit" title="Zobacz w manualu PHP" target="_manual.
Go to the top of the page
+Quote Post
dzesi
post 24.12.2007, 15:51:17
Post #3





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 3.05.2006

Ostrzeżenie: (0%)
-----


A to tego nie wiedziałem czy jest jakis inny sposób zeby to obejsc ? bo uzywać ifów to meczące jest:)
Go to the top of the page
+Quote Post
webdice
post 24.12.2007, 15:53:18
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Raczej tego nie obejdziesz, przynajmniej nie spotkałem się z czymś takim.

EDIT: możesz zrobić to w taki sposób.

  1. <?php
  2. if (empty ($this->login))
  3. {
  4. $errors[] = 'Nie podałeś loginu.';
  5. }
  6. ?>


Następnie stworzyć własną klasę obsługi błędów, przekazywać tablicę błędów, a następnie w pętli wyświetlać wszystkie błędy.

Ten post edytował webdicepl 24.12.2007, 15:57:22
Go to the top of the page
+Quote Post
Boski
post 24.12.2007, 15:58:51
Post #5





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 22.12.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. <?php
  2. [
  3.  public function walidacja_danych()
  4. {
  5. if(empty($this->login) || empty($this->haslo) )
  6.  { 
  7. throw new Exception("Blad nie podales loginu lub hasla ");
  8. }
  9.  
  10. }
  11. ?>


biggrin.gif

lub
  1. <?php
  2. [
  3.  public function walidacja_danych()
  4. {
  5. if(empty($this->login) || empty($this->haslo) )
  6. { 
  7.  
  8.  if(empty($this->login) && empty($this->haslo) )
  9.  {
  10. throw new Exception("Blad nie podales loginu lub hasła ");
  11. }
  12. if(empty($this->login) )
  13.  {
  14. throw new Exception("Blad nie podales loginu lub hasła ");
  15. }
  16. if(empty($this->haslo) )
  17.  {
  18. throw new Exception("Blad nie podales loginu lub hasła ");
  19. }
  20. }
  21.  
  22. }
  23. ?>
Go to the top of the page
+Quote Post
dzesi
post 24.12.2007, 16:11:58
Post #6





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 3.05.2006

Ostrzeżenie: (0%)
-----


Cytat(Boski @ 24.12.2007, 15:58:51 ) *
  1. <?php
  2. [
  3.  public function walidacja_danych()
  4. {
  5. if(empty($this->login) || empty($this->haslo) )
  6.  { 
  7. throw new Exception("Blad nie podales loginu lub hasla ");
  8. }
  9.  
  10. }
  11. ?>


biggrin.gif

lub
  1. <?php
  2. [
  3.  public function walidacja_danych()
  4. {
  5. if(empty($this->login) || empty($this->haslo) )
  6. { 
  7.  
  8.  if(empty($this->login) && empty($this->haslo) )
  9.  {
  10. throw new Exception("Blad nie podales loginu lub hasła ");
  11. }
  12. if(empty($this->login) )
  13.  {
  14. throw new Exception("Blad nie podales loginu lub hasła ");
  15. }
  16. if(empty($this->haslo) )
  17.  {
  18. throw new Exception("Blad nie podales loginu lub hasła ");
  19. }
  20. }
  21.  
  22. }
  23. ?>

tak naprawdę to to samo rozwiązanie jest smile.gif , jedynie pozostaje na ifach albo napisać jakaś klasę exception ale na to zbytnio nie mam czasu.Dziękuje chłopaki ale to mi i tak nic nie dało
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 22:48