Autor Zpráva
esemeska
Profil
mam problem...kdyz pracuji s promennou napr. $a
...jdu na stranku a potrebuju podminkou napsat, aby kdyz $a nebude definovana, tak se neco stane....můj apache mi ale porad pise, ze $a neni definovana...jak mam napsat, aby kdyz $a neni dana, tak se za ni dosadi treba 0
Peca
Profil
if (!isset($a)) $a=0;
esemeska
Profil
diky..hele ja to dal na ic a tam mi to nic takoveho nedelalo...jak se to da nastavit u me doma?
Peca
Profil
Je to nastavování warningů v php.ini.
error_reporting = E_ALL & ~E_NOTICE
Pilda
Profil
// if (!isset($a)) $a=0;

Zajímalo by mě jestli je nějaký praktický rozdíl mezi těmito zápisy, popřípadě který z nich je nejlepší používat pro inicializace proměnných. Chápu, že pokud se bude jednat třeba o čísla, tak je asi vhodnější $a=0, než třeba $a="", ale co použít, když třeba zjišťuju, jestli byl odeslán formulář?


if (!isset($a)) $a=0;
if (!isset($a)) $a=false;
if (!isset($a)) $a=null;
if (!isset($a)) $a="";
Anonymní
Profil *
ty výrazy co jsi napsal se sobě nerovnají, tak bacha na to.
ale co použít, když třeba zjišťuju, jestli byl odeslán formulář?
třeba
$post=true
to je jen na tobě, každá má svůj jedinečný styl "programování"
Pavel Prochazka.zde.cz
Profil *
to Pilda:
v php je to skoro jedno ale pokud pouzijes treba cecko tak na to dojedes.
Protoze:

if (!isset($a)) $a=0;
//Jedna se o ciselnou promennou

if (!isset($a)) $a=false;
//jedna se o booleovu promennou.

if (!isset($a)) $a=null;
//toto je promena pro objekt. Zde zadny objekt

if (!isset($a)) $a="";
//Promena string, retezec je prazdny....
tiso
Profil
Pilda
A dôvod prečo definuješ tú premennú podmienečne? Odkiaľ sa berie?
Pilda
Profil
tiso:
protože mi debugger jinak vyhodil hlášku, že neni inicializovaná a když jsem si o tom hledal informace na netu a tady na fóru, tak všude se píše, že se to kvůli bezpečnosti musí takhle definovat.

Sám nechápu jak by se to dalo zneuží zrovna v mém případu, ale pokud je to tak správnější, tak mě těch pár řádků navíc nezabije.

Konkrétně mám stránku jedna která předává proměnnou (číslo příspěvku) druhé stránce a ta pak podle tý proměnný smaže příspěvek v tabulce (jednoduše řečeno).

Původně jsem tam měl:
$radek = $_GET["smazat"];

a vyhazovalo to undefined index a tak jsem to změnil na:

if (isset($_GET["smazat"])) $radek = $_GET["smazat"]; else $radek = "";

a už to nevyhazuje. Vim, že to nevadí průběhu skriptu, ale mám rád validitu. Je to zbytečný, nebo to jde zapsat líp? Někdo by to asi zapsal pomocí ternálního operátoru, ale někde jsem četl, že je až 1000X pomalejší, než If a tak se mu radši vyhýbám.
Pavel Prochazka.zde.cz
Profil *
to Pilda:
pokud je ta promena z predchozi stranky tak je ji potreba VZDY testovat zda existuje...
Ja predavam vsechny parametry pres url na druhou stranku a nejprve otestuji zda uzivatel ma na tuto akci prava (aby si namohl napsat nejake parametry a ty odeslat) a potom dle parametru provedu patricnou funkci.....
Pilda
Profil
Pavel Prochazka.zde.cz:
no ale já pak zatim měl if, kterej testoval jestli existuje promměná a když neexistuje, tak se neprovedli příkazy v něm, měl jsem tam:

$radek = $_GET["smazat"];
if($radek!=false){ // nebo isset($_GET["smazat"])
//příkazy, další podmínky
}

Tzn, pokud proměnná neexistuje, tak se neprovede ten if. A pokud by chtěl někdo změnit třeba hodotu proměné řádek, tak to změní stejně, tudiž nechápu, proč ten muj první zápis neni stejný, jako ten druhý. Když bude chtít někdo podstrčit třeba jinou hodbotu, tak jí podstrčí i tak, ne?
tiso
Profil
Pilda
Podľa mňa premennú $radek ani nepotrebuješ(záleží čo vlastne robíš), takže radšej takto:
if(isset($_GET["smazat"])){
...
}

Čo sa ternárneho oprátoru týka tak si treba uvedomiť kedy sa prejavuje jeho pomalšie vykonávanie: v cykloch pri "dlhých" premenných (čiastočne pri splnení jednej z týchto dvoch podmienok)... Treba čítať poriadne...
Pilda
Profil
tiso
Ale jom ale o to v tomhle názorným příkladu nejde. Ta proměná řádek obsahuje totiž hodnotu řádku kterej se má smazat, takže tim deklaruju číslo řádku.
tiso
Profil
A o čo ide?
if(isset($_GET["smazat"])){ 

if(!mysql_query("DELETE from tabulka WHERE id=".$_GET["smazat"])){
//osetrenie chyby
}
}
Toto téma je uzamčeno. Odpověď nelze zaslat.