[ MPesic @ 28.11.2011. 03:08 ] @
Kako da zaobidjem emitovanje greske u ovom kodu:
Code:

<?php
$var = '';
    if (isset($var)) {
        $var = $_POST['ime'];
        echo $var;
    }
?>


A da to ne bude ovaj nacin:

Code:
<?php
    if (isset($_POST['ime'])) {
        $var = $_POST['ime'];
        echo $var;
    }
?>


Zar ne moze promenljiva da bude prazna u nekom trenutku a zatim da se proverava, i ako je prazna onda joj se dodeljuje vrednost?
[ Predrag Supurovic @ 28.11.2011. 07:16 ] @
Pa nije ti problem stanje promenljive $var nego stanje $_POST['ime'] pa tp moraš i da proveravaš, baš kako si uradio u drugom primeru.

Primeti da isset() proverava da li je promenljiva definisana a ne da li je prazna.
[ plus_minus @ 28.11.2011. 07:54 ] @
Kada se igraš sa isset funkcijom ili kada proveravaš da li je nešto uopšte setovano ili nije,
probaj 'vako..

Code (php):


if(isset($var)==false) {

      # do something..

     }

 


ili

Code (php):


if(isset($var)==true && isset($var)!='') {

      # do something ...

     }

 
[ MPesic @ 28.11.2011. 10:07 ] @
Citat:
Predrag Supurovic: Pa nije ti problem stanje promenljive $var nego stanje $_POST['ime'] pa tp moraš i da proveravaš, baš kako si uradio u drugom primeru.


A jel postoji neki drugaciji nacin da se ovo uradi, posto mi ovaj u drugom primeru ne deluje bas preterano lepo?
[ VladaSu @ 28.11.2011. 10:47 ] @
@plus_minus
Bas je svejedno da li ce napisati kao sto je napisao ili kao sto si ti napisao u ta dva primera.
Ja licno uvek pisem kao sto on pise i nemam nikakvih problema. To su samo razliciti stilovi pisanja i ni jedan kod nije bolji od drugog (sem sto je ono !='' malo bezveze).

@MPesic

Pitanje bi ti bilo na mestu da si napisao 2 razlicita koda koji rade isti posao.
Pitas kako da napises prvi kod a da ne bude kao drugi a ti kodovi rade razlicit posao pa ne mogu da skontam poetnu pitanja.

Code (php):

<?php
$var = '';
    if (isset($var)) {
        $var = $_POST['ime'];
        echo $var;
    }
?>
 


Ti imas logicku rupu u kodu:
1. Setujes $var sa nista.
2. Proveravas da li je setovan var. Pa setovan je u predhodnom redu. Nema sta da proveravas. Ovo to je prva logicka rupa.
3. Ako je setovan $var (a uvek je setovan pa nema potrebe da se proverava) onda $var-u dodalis verdnost iz $_POST['ime]; Druga logicka rupa jer ne znas da li je setovan taj $_POST.

Drugi kod ti je logicki ispravan.

Mozda zelis ovako da napises kod:
Code (php):

$var = isset($_POST['ime']) ?  $_POST['ime'] : '';
echo $var;
 

[ plus_minus @ 28.11.2011. 10:55 ] @
Citat:
VladaSu:
...
...
sem sto je ono !='' malo bezveze.

...
...


Zašto? Ako misliš da je tu trebalo da stoji !== (not identical) umesto not equal...

ali, ne razumeš ili ne kontaš poentu njegovog pitanja inače.

Ako nije to..
Zašto bezveze? Ajd' pojasni. :)

U protivnom i meni je tvoj način pisanja - bzvz, jer nije kao moj način pisanja..
Jel' to u "pitanje"? :D
[ Predrag Supurovic @ 28.11.2011. 11:12 ] @
Ma ne, samo su tvoji predlozi nepotrebne komplikacije.
[ VladaSu @ 28.11.2011. 12:24 ] @
Zato sto isset vraca bool.

Code (php):

if (isset($var)) { ...
//je isto sto i
if (true) { ...
//ili
if (false) { ...

//Da li je 0 ili 1

//onda

if (isset($var) == false) { ... // ili === ili != ili !==
//je isto sto i
if (false == false) { ...
//Kao sto vidis tu je cisto:
//Da li je 1==0 ili 0==0

//a tvoj primer
if (isset($var) != '') { ...
//je nekako slicno sa
if (isset($var) != (1-1)) { ..
//ili
if (isset($var) != (1-1+4-2-2)) { ..
 


Da li vidis nepotreban korak?
Ti poredis bool i string i pri tom se vrsi konverzija stringa u bool. Totalna bespotreba konverzija.
Sve je to (nazalost) ispravno.
Drugaciji nacin pisanja koda u smislu tvojih predloga ne resava problem niti poboljsava pisanje i preglednost koda.

U vecini jezika '' nije false vec je false false. Jednog dana i php ce tako raditi stvari.


I @MPesic ima recenicu "a da to ne bude ovaj nacin pisanja" sto znaci da mu odgovora taj nacin pisanja a tamo nema neke slicnosti sa tvojim odgovorom.

Meni su oba njegova primara po nacinu pisanja totalno ista samo sto prvi nije logicki ispravan.
Govori o ta dva koda kao da su ista samo razlicito napisana ali to su dva razlicita koda sa razlicitim funkcijama (slicnim).


A mozda je hteo ovo na osnovu ove recenice "Zar ne moze promenljiva da bude prazna u nekom trenutku a zatim da se proverava, i ako je prazna onda joj se dodeljuje vrednost?"
Sa isset se ne proverava da li je prazna promenljiva vec da li postoji.
Code (php):

$var = '';
if (empty($var) && isset($_POST['ime'])
{
    $var = $_POST['ime'];
}
echo $var;
 

[ plus_minus @ 28.11.2011. 12:54 ] @
To šta je on hteo, samo on zna, jer je u pitanju verovatno njegov primer problema (ne i sami problem i identičan kod), kako god, nagađam.

Ovo što si ispisao sada je daleko drugačije od bezveze, kada je već i (nažalost) ispravno i šljaka.





[ MPesic @ 28.11.2011. 19:35 ] @
Citat:
plus_minus: To šta je on hteo, samo on zna, jer je u pitanju verovatno njegov primer problema (ne i sami problem i identičan kod), kako god, nagađam.


Imam formular koji se nalazi na istoj stranici gde se nalazi i php kod. Zamislio sam tako da odmah na pocetku definisem promenljivu koja ce biti prazna i koja ce pokusati da uhvati sadrzaj input polja. Ukoliko promenljiva nije nista uhvatila onda ne raditi nista. Ukoliko je uhvatila onda emitovati sadrzaj te promenljive.

Ne znam koliko je vama sve ovo logicno. Inace zaboravite na prvi primer koji sam naveo, zeleo sam samo čitljivije napisati onaj drugi primer koji sam naveo:

Code (php):
<?php
    if (isset($_POST['ime'])) {
        $var = $_POST['ime'];
        echo $var;
    }
?>


Vlada Su je razumeo najbolje sta sam zeleo i to uradio uz pomoc ternarnog operatora:
Code (php):
$var = isset($_POST['ime']) ?  $_POST['ime'] : '';
echo $var;