Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> operator warunkowy, if
suchy1
post 3.06.2006, 19:08:21
Post #1





Grupa: Zarejestrowani
Postów: 246
Pomógł: 8
Dołączył: 2.04.2006
Skąd: Gliwice

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


Witam robie taki maly system do zarzadzania hotelem(bardzo skromny tongue.gif ) mam problem z "IF" jak wybiore jedna z opcji(formularz html) to pojawiaja mi sie bledy typu " Notice: Undefined index: wynajmowanie in
...." zeby blad sie nie wyswietlal to uzywam "error_reporting(E_ALL ^ E_NOTICE);" ale wydaje mi sie ze poprostu mam zlego IF.


  1. <?php
  2. error_reporting(E_ALL ^ E_NOTICE); 
  3.  
  4. if(($_GET['wynajmowanie']) == true)
  5. {
  6. include("wy.php");
  7. }
  8. if(($_GET['zwracanie']) == true)
  9. {
  10. print ("Brak modułu.");
  11. }
  12. if(($_GET['rezerwacja']) == true)
  13. {
  14. print ("Brak modułu.");
  15. }
  16. if(($_GET['zestawienia']) == true)
  17. {
  18. include("p4.php");
  19. }
  20. ?>


Jezeli moze ktos na to zerknac to bede wdzieczny smile.gif
Go to the top of the page
+Quote Post
-Gość-
post 3.06.2006, 19:12:50
Post #2





Goście







Wszedzie zmien na :
  1. <?php
  2. if( isset($_GET['wynajmowanie']) && $_GET['wynajmowanie']== true)
  3. ?>
Go to the top of the page
+Quote Post
siemakuba
post 3.06.2006, 19:18:06
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


ify masz prawie OK. Błąd E_NOTICE pojawia ci się, bo próbujesz sprawdzać wartość niezdefiniowanej zmiennej. (kiedy masz np. wynajmowanie, wiadomo ze nie masz zwracanie). Co możesz na to poradzić:
zamiast:
  1. <?php
  2. if(($_GET['wynajmowanie']) == true)
  3. ?>
daj
  1. <?php
  2. if(isset($_GET['wynajmowanie']) && $_GET['wynajmowanie'] == true)
  3. ?>
. chociaż, jaka wartosc przyjmuja te parametry? tylko loginczą? istnieją lub nie? moze lepiej oprzec to na konstrukcji switch" title="Zobacz w manualu php" target="_manual?
  1. <?php
  2. $act = isset($_GET['act']) ? $_GET['act'] : null;
  3.  
  4. switch ($act)
  5. {
  6. default:
  7. print ("Brak modułu.");
  8. break;
  9. case 'wynajmowanie':
  10. include('wy.php');
  11. break;
  12. // itd.
  13. }
  14. ?>

pozdr.

edit:
aha, no i odwolanie wtedt zamiast plik.php?wynajmowanie=1 dajesz plik.php?act=wynajmowanie

Ten post edytował siemakuba 3.06.2006, 19:19:10
Go to the top of the page
+Quote Post
suchy1
post 3.06.2006, 19:26:00
Post #4





Grupa: Zarejestrowani
Postów: 246
Pomógł: 8
Dołączył: 2.04.2006
Skąd: Gliwice

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


dzieki wielkie,dziala ! Pozdrawiam
Go to the top of the page
+Quote Post
Fipaj
post 3.06.2006, 20:19:47
Post #5





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 19.01.2005
Skąd: Warszawa

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


Przepraszam, tak bardziej z ciekawości zagadam, jakby co to mnie poprawicie: isset" title="Zobacz w manualu php" target="_manual wyklucza ten notice...?


--------------------
Go to the top of the page
+Quote Post
siemakuba
post 3.06.2006, 20:24:08
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


@Fipaj: przy takim sprawdzaniu jak powyżej, owszem. Warunek && zwraca false jeżeli którykolwiek ze składników będzie miał wartość false. Wieć jeżeli isset() zwróci false, to wydaje mi się, że dalej nie jest sprawdzane wogóle - odpada więc E_NOTICE o niezdefiniowanej zmiennej.

aha, to tak po mojemu, nie mogę tego poprzeć żadnym słowem pisanym niestety.
pozdr.
Go to the top of the page
+Quote Post
nospor
post 3.06.2006, 21:06:11
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
aha, to tak po mojemu, nie mogę tego poprzeć żadnym słowem pisanym niestety.
No to masz slowo pisane:
"Zgadza się" - nospor winksmiley.jpg
aczkolwiek tamtego ifa mozna zamienic na takiego:
  1. <?php
  2. if(!empty($_GET['wynajmowanie']))
  3. ?>

empty nie wywala noticow gdy nie ma indexu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
-Gość-
post 4.06.2006, 19:34:20
Post #8





Goście







@nospor - w jakich sytuacjach polecasz uzywac isset a w jakich empty ?
Go to the top of the page
+Quote Post
siemakuba
post 4.06.2006, 19:57:48
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


no to ja odpowiem, a co! :)
Cytat
@nospor - w jakich sytuacjach polecasz uzywac isset a w jakich empty ?
jest to pytanie natury filozoficznej, i jako takie ma jedyną słuszną odpowiedź :) manual :)
isset" title="Zobacz w manualu php" target="_manual - empty" title="Zobacz w manualu php" target="_manual

isset - sprawdza czy zmienna została zdefiniowana, czy to przez jawne jej zdeklarowanie
  1. <?php
  2. $zmienna = 'wartosc';
  3. ?>
czy przez np. poczatkowe okreslenie typu a potem nadanie wartosci
  1. <?php
  2. $tablica = array();
  3. $tablica[] = 'wartosc';
  4. ?>


empty - sprawdza czy zmienna ma wartosc null lub inna odpowiadającą logicznemu false (pusta zmienna typu string, 0, false, zdeklarowana zmienna klasy ale bez przypisanej wartosci, pusta tablica). empty zwroci tez true dla niezdefiniowanej zmiennej.

wiedzac to - wiadomo kiedy uzyc jakiego sprawdzania - zalezy co chcesz sprawdzic :)
pozdr.
Go to the top of the page
+Quote Post
-Gość-
post 4.06.2006, 21:11:59
Post #10





Goście







Bardziej chodzilo mi o to, ze w jakich sytuacjach, np podczas uzuwania formularza etc. Wy (=bardziej dowiadczeni programisci smile.gif uzywacie empty, a kiedy isset. Bo ja prawie zawsze uzywam isset, i nigdy mnie nie zawiodlo, ale wolalbym zaczac stosowac tak jak ktos bardziej obeznany w temacie, a nie wedlug mojego widzimisie.
Go to the top of the page
+Quote Post
siemakuba
post 4.06.2006, 22:12:17
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


hmm. ja używam empty kiedy chcę wiedzieć czy zmienna została zdefiniowana i ma wartość inną niż logiczne false. Kiedy chcę wiedzieć tylko czy zmienna została zdefiniowana używam isset. W sumie, tak na dobrą sprawę to można tych konstrukcji w wielu przypadkach używać zamiennie bo efekt będzie dokładnie taki sam.

Tzeba tylko pamiętaj o tej drobnej różnicy ich działania o której pisałem wyżej. Załóżmy, że chcesz sprawdzić czy isntnieje parametr GET o nazwie "wanda".
załóżmy też 5 przykładowych zapytań i wyniki dla sprawdzania obecności paramtetru wanda:
  1. <?php
  2. // 1 - index.php
  3. isset($_GET['wanda']); // false
  4. empty($_GET['wanda']); // true
  5.  
  6. // 2 - index.php?wanda=banda
  7. isset($_GET['wanda']); // true
  8. empty($_GET['wanda']); // false
  9.  
  10. // 3 - index.php?wanda=1
  11. isset($_GET['wanda']); // true
  12. empty($_GET['wanda']); // false
  13.  
  14. // 4 - index.php?wanda=0
  15. isset($_GET['wanda']); // true
  16. empty($_GET['wanda']); // true
  17.  
  18. // 5 - index.php?wanda=
  19. isset($_GET['wanda']); // true
  20. empty($_GET['wanda']); // true
  21. ?>

tak mniej więcej to wygląda. Używać trzeba tak, aby działało według twojego zamierzenia:) Wydaje mi się, że nie ma też żadnej różnicy w szybkości działania. Jeżeli jest - to raczej niezauważalna.

pozdr.
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: 26.06.2025 - 19:51