Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dwie możliwości - którą używać?
michaloo
post
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 15.05.2003
Skąd: Bielsko-Biała

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


Witam
Ostatnio mając kontakt z zawodowym programistą (sa niezawodowi?) dowiedziałem się wielu ciekawych rzeczy, m. in. ze funkcja mysql_pconnect() zwraca zasób i lepiej pózniej sprawdzac czy polaczenie jest nawiazane funkcja is_resource zamiast if($polaczenie == '1'), mimo iz ten drugi sposob dzialal.
Wiec mam pytanie jak lepiej sprawdzac istnienie zmiennej
if($zmienna) czy if(isset($zmienna)) (z tego co zauwazylem dziala to podobnie).
Z manuala dowiedzialem sie ze funkcja isset do tego wlasnie sluzy (jej uzywanie mam dla mnie sens jako skrocenie kodu typu
[php:1:bef1ddf087]<?php
if($zmienna)
$druga = TRUE;
else
$druga = FALSE;

?>[/php:1:bef1ddf087])
jednak jakie rozwiazanie jest lepsze gdy mamy wykonac jakas operacje zalezna od instnienia badz nie danej zmiennej? Czy lepsze (szybsze i niezawodne) jest if($zmienna) czy if(isset($zmienna)) ?


--------------------
Warsztat: PLD | GphpEdit | PHP4
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
matys
post
Post #2





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 7.03.2004
Skąd: Szczecin|Bukowe

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


Ja tam zawsze uzywam
[php:1:c69b1fce5f]
if($zmienna)
{
.....................
}
[/php:1:c69b1fce5f]
i własnie to polecam, łatwiejsze działanie, krotszy kod, i o to chodzi;)


--------------------
"Unix is like a vigvam - no windows, no gates, Apache inside"
Warsztat: Windows XP PE | Dreamweaver | Apache 1.3.29 | PHP 4.3.4 | Araneae | MYSQL 4 | Visual Studio | Dev-C++
[b]Programowanie: llllll 40%
Go to the top of the page
+Quote Post
michaloo
post
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 15.05.2003
Skąd: Bielsko-Biała

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


tak, ja dotychczas tez to uzywalem ale biorac pod uwage co powiedzial mi tamten gosc nabralem pewnych watpliwosci czy ten sposob bedzie zawsze dzialal prawidlowo....(tak jak w przypadku przytoczonym przeze mnie w poprzednim poscie)


--------------------
Warsztat: PLD | GphpEdit | PHP4
Go to the top of the page
+Quote Post
matys
post
Post #4





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 7.03.2004
Skąd: Szczecin|Bukowe

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


Pewnie ze dziala, masz tu przyladowy skrypt, formularz, jezeli uzytkownik poda a i bedzie ta zmienna istanila zostanie wypisany odpowiedni komunikat, jesli nie zostanie wypisany inny komunikat.
Oto kod
plik php o nazwie zmienna.php:
[php:1:1fc7d74300]
<html
<head>
</head>
<body>
<?php
if($a)
echo"Zmienna Istnieje";
else
echo"Niestety...";
?>
</body>
</html>
[/php:1:1fc7d74300]
plik html o nazwie zmienna.html
[xml:1:1fc7d74300]
<html>
<head>
</head>
<body>
<form method=post action=zmienna.php>
Podaj a
<input type=text>
<br>
<input type=submit>
</form>
</body>
</html>
[/xml:1:1fc7d74300]


--------------------
"Unix is like a vigvam - no windows, no gates, Apache inside"
Warsztat: Windows XP PE | Dreamweaver | Apache 1.3.29 | PHP 4.3.4 | Araneae | MYSQL 4 | Visual Studio | Dev-C++
[b]Programowanie: llllll 40%
Go to the top of the page
+Quote Post
michaloo
post
Post #5





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 15.05.2003
Skąd: Bielsko-Biała

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


tak smile.gif o tym wiem, mialem na mysli skrajne przypadki czy ten sposob ZAWSZE bedzie dzialal prawidlowo, jednak teraz dochodze do wniosku ze moze moje pytanie bylo nietrafne i bez sensu. Wiec jezeli ktos chce mnie takimi przykladami przekonywac to niech sobie lepiej nie traci czasu bo ten system dotychczas stosowalem...


--------------------
Warsztat: PLD | GphpEdit | PHP4
Go to the top of the page
+Quote Post
matys
post
Post #6





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 7.03.2004
Skąd: Szczecin|Bukowe

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


Nie bardzo wiem o co ci chodzi??"Skrane przypadki?"-czyli?
Wg. mnie sa dwa przypadki zmienna istnieje, albo nie, a sprawdzanie przez:[php:1:d964b4527d]if($zmienna){kod.......}[/php:1:d964b4527d] zawsze będzie działało prawidłowo;)


--------------------
"Unix is like a vigvam - no windows, no gates, Apache inside"
Warsztat: Windows XP PE | Dreamweaver | Apache 1.3.29 | PHP 4.3.4 | Araneae | MYSQL 4 | Visual Studio | Dev-C++
[b]Programowanie: llllll 40%
Go to the top of the page
+Quote Post
kszychu
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


To może ja. Porównaj to:
[php:1:89ca3e12b3]<?php
$zmienna = 0;
if ($zmienna) echo "Nie istnieje";
if (isset($zmienna)) echo "Jak najbardziej istnieje";
?>[/php:1:89ca3e12b3]


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
matys
post
Post #8





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 7.03.2004
Skąd: Szczecin|Bukowe

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


Tak przykład bardzo dobry, jednak autorowi postu jak sie dowiedziałem chodzi o to czy sprawdzanie poprzez uzycie jedynie if bez isset będzie zawsze poprawne, nawet w "skrajnych przypadkach";)


--------------------
"Unix is like a vigvam - no windows, no gates, Apache inside"
Warsztat: Windows XP PE | Dreamweaver | Apache 1.3.29 | PHP 4.3.4 | Araneae | MYSQL 4 | Visual Studio | Dev-C++
[b]Programowanie: llllll 40%
Go to the top of the page
+Quote Post
kszychu
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Cytat
Tak przykład bardzo dobry, jednak autorowi postu jak sie dowiedziałem chodzi o to czy sprawdzanie poprzez uzycie jedynie if bez isset będzie zawsze poprawne, nawet w "skrajnych przypadkach";)


No to odpowiedź, o ile nie zrozumiałeś, brzmi "nie". Często zmienna może istnieć i być zerowa bądź nie mieć wartości. To jest ten skrajny przypadek.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
michaloo
post
Post #10





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 15.05.2003
Skąd: Bielsko-Biała

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


tak wlasnie o to chodzilo. Mozna wywnioskowac ze lepiej zawsze uzywac isset() i ze if($a) nie jest do konca poprawny (i skuteczny)....


--------------------
Warsztat: PLD | GphpEdit | PHP4
Go to the top of the page
+Quote Post
matys
post
Post #11





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 7.03.2004
Skąd: Szczecin|Bukowe

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


Anu...chyle głowę przed wami, nie wiedziałem o tym, choc jeśli program ma sprawdzać czy jest zmienna to raczej rzadko występuje ona z wartością równą 0, albo jest zmienna z normalna zawartością(mam tu na myśli różną od 0) albo jej niema;)(przynajmniej jest takza zwyczaj)


--------------------
"Unix is like a vigvam - no windows, no gates, Apache inside"
Warsztat: Windows XP PE | Dreamweaver | Apache 1.3.29 | PHP 4.3.4 | Araneae | MYSQL 4 | Visual Studio | Dev-C++
[b]Programowanie: llllll 40%
Go to the top of the page
+Quote Post
Dravo
post
Post #12





Grupa: Zarejestrowani
Postów: 207
Pomógł: 0
Dołączył: 7.09.2003

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


Ja dodam tylko o dobrym nawyku obcinania spacji z każdego ciągu funkcją trim(),powód:
[php:1:cdd1bcd442]<?php
$z = ' '; //sama spacja
if(isset($z))
echo 'ustawiona!';
else
echo 'nie istnieje!';
?>[/php:1:cdd1bcd442]
Wynik: ustawiona!
Radze o tym pamiętać (jak o sprawdzaniu wszelkich danych).


--------------------
Oooo, cia is on the phone... Ok, I got it. Shit I lost it.
Go to the top of the page
+Quote Post
phantom
post
Post #13





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.04.2004
Skąd: Płock

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


Przykład pierwszy:
[php:1:95b795a600]<?php

error_reporting(E_ALL);

if($zmienna) echo('Zmienna jest, a może jej nie ma?');
else echo('Może nie ma');

?>[/php:1:95b795a600]

Cytat
Notice:  Undefined variable:  zmienna in PHPDocument1 on line 5


Przykład drugi:
[php:1:95b795a600]<?php

error_reporting(E_ALL);

if(isset($zmienna)) echo('Na 100% jest');
else echo('Na 100% nie ma');

?>[/php:1:95b795a600]

Cytat
Na 100% nie ma


Chyba sami widzicie różnicę.
Choć standardowo w konfiguracji php błędy typu Notice nie są wyświetlanie, jednak istnieją.


--------------------
Env: Aurox Linux 9.2 ][ Apache 2.0.49 ][ PHP5-RC3 ][ SQLite ][ Quanta+ 3.1.4
Go to the top of the page
+Quote Post
hwao
post
Post #14


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




[manual:b584214aab]isset[/manual:b584214aab] <- sprawdza czy dana zmienna jest zdefiniowana
[manual:b584214aab]empty[/manual:b584214aab] <- sprawdza czy dana funckja ma jakos wartosc ( 0 jest uwazane za jej brak)

Jeżeli chcecie sprawdzac czy jakas zmienna istnieje albo czy ma jakos wartosc najelpiej kozystac z tych 2 funckji ktore sie zajduja powyzej poniewaz one do tego sluza i nie wywalaja bledow
Go to the top of the page
+Quote Post
cboot
post
Post #15





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 2.02.2004

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


Cytat
Ja dodam tylko o dobrym nawyku obcinania spacji z każdego ciągu funkcją trim(),powód:
[php:1:4ea96e27c0]<?php
$z = ' '; //sama spacja
if(isset($z))
echo 'ustawiona!';
else
echo 'nie istnieje!';
?>[/php:1:4ea96e27c0]
Wynik: ustawiona!
Radze o tym pamiętać (jak o sprawdzaniu wszelkich danych).

Do czego pijesz? Trim nie ma wpływu na wynik funkcji isset. Jeśli zrobisz tak, jak sugerujesz:
[php:1:4ea96e27c0]<?php
$z = ' '; //sama spacja
$z = trim($z);
if(isset($z))
echo 'ustawiona!';
else
echo 'nie istnieje!';
?>[/php:1:4ea96e27c0]
Wynik: ustawiona!
Czyli bez zmian... zapewne skojarzyło Ci się coś z empty, ale my tutaj dyskutujemy o isset :wink:


--------------------
Na warsztacie (z zamiłowania): Nowy rynek kosztowności, broni, ziół i misktur na Vallheru (MMORPG) lllllllllllll 65%
[b]Na warsztacie (komercyjnie):
Rozbudowa i adaptacja do wymagań klienta gotowego Progra
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 Aktualny czas: 21.08.2025 - 16:04