Sziasztok!
Kicsit rég volt már mikor utoljára php-ztam, akkor sem ilyen mélységben, mint most kellene és hát az az igazság, hogy gondjaim vannak.
Kezdem a legelsővel:
Adott egy form, különféle mezőkkel. Van itt egy radio group, ahol mondjuk a user beállítja a nemét (F/N). Ezt mondjuk nevezem userNeme változónak. Namost, van olyan lehetőség, hogy a formot nem tölti ki teljesen a felhasználó, hanem a későbbiekben visszatérhet és szerkeszthet ezt-azt. A gondom az, hogy a form beküldésekor, mikor ellenőrzöm, hogy megadta-e a nemét, akkor a $_POST['userNeme'] isset értéke hamis, merthát nem töltötte ki. Viszont szeretném azt megoldani, hogy ha nem ad választ, akkor egy default üres sztringet tároljon le adatbázisban.
A user táblában mondjuk a "sex" mező char(1) típusú.
A kód, amivel próbálkozok:
(isset($_POST['userNeme'])) ? $userNeme = $_POST['userNeme'] : $userNeme = "";
Erre a PHP teletolja az error.log-ot, undefined index 'userNeme' üzenetekkel...
Google-oztam, próbáltam az
(isset($_POST['userNeme']) && $_POST['userNeme']) ? $userNeme = $_POST['userNeme'] : $userNeme = "";
alakot is, de ugyanaz.
Kérdezném, hogy ez egy 5.2.5-ös windows alatt futtatott php-ban hogyan oldható meg?
Köszönöm előre is a segítséget!
---
A fenti példa a valóstól elvonatkoztatott, nem valami random() társkereső oldalt fejleszte(né)k...
- 1217 megtekintés
Hozzászólások
én ezt úgy szoktam, hogy
if (array_key_exists("userNeme", $_POST)) {
// ...
}
Persze lehet trinaryval (?:) is hasonlóképpen.
- A hozzászóláshoz be kell jelentkezni
Nem akarom elkiabálni, mert kb. 1500 sort kell még átírnom, de úgy tűnik, hogy ez lesz az
$valtozo = (array_key_exists('valtozo', $_POST)) ? $_POST['valtozo'] : '';
formában írva.
Köszönöm! ;)
--
A gyors gondolat többet ér, mint a gyors mozdulat.
- A hozzászóláshoz be kell jelentkezni
Regularis kifejezesek? =)
- A hozzászóláshoz be kell jelentkezni
Az is lesz "éééé.hh.nn" formátumú input ellenőrzésre :)
--
A gyors gondolat többet ér, mint a gyors mozdulat.
- A hozzászóláshoz be kell jelentkezni
Próbáld így.
$userNeme = (isset($_POST['userNeme']) ? $_POST['userNeme'] : '');
- A hozzászóláshoz be kell jelentkezni
Ezt igy szoktam:
$ertekek=array_merge(array("egyiknev"=>"egyikertek","masiknev"=>"masikertek"),$_GET,$_POST);
var_dump($ertekek);
Az array_merge oldala.
A tomb asszociativan indexelt elemeit osszerakja egy tombbe, es a kesobb irt tombok felulirjak a korabbiakat utkozes eseten. Szoval ha "egyiknev" nem szerepel sem a $_GET sem a $_POST valtozoban, akkor marad "egyikertek", ha $_GET-ben szerepel, akkor felveszi annak az erteket, ha $_POST-ban szerepel, akkor azet. Ha mindenutt szerepel, akkor is a $_POST-ban szereplo erteket kapja $ertekek["egyiknev"]. Mindig definialt lesz ezaltal. (persze lehet neki NULL, TRUE, FALSE, meg hasonlo erteket is adni default-nak, ha ez szukseges)
A szamokkal indexelt tombelemeket atszamozza, de ez a funkcioja itt nem erdekes (persze esszel kell hasznalni emiatt, de $_GET es $_POST eseten ez nem gond).
Ha nem tombben kered az eredmenyt, akkor hasznalhatsz extract-ot, de mindenkepp csak kotelezo prefix hasznalataval, kulonben sulyos biztonsagi kockazat! (EXTR_PREFIX_ALL)
----
Sooner or later you had to talk, even if it was only because you'd run out of things to throw. - Pratchett
honlap készítés
- A hozzászóláshoz be kell jelentkezni
function getenv($type, $key){
$type=strtoupper("_$type");
return isset($$type[$key])?$$type[$key]:NULL;
}
A fenti kód jó mindenféle $_ tömbre (GET, POST, COOKIE, FILE, ENV stb).
- A hozzászóláshoz be kell jelentkezni
Én nemes egyszerűséggel így csinálnám:
(@isset($_POST['userNeme'])) ? $userNeme = $_POST['userNeme'] : $userNeme = "";
Szóval az isset fv. elé egy @ jel. Mert amúgy teljesen jó a kód, csak ha egy tömbben nem létezik az adott kulcs, az egy notice-t (vagy warningot?) generál. A @ ezt megakadályozza.
- A hozzászóláshoz be kell jelentkezni
A ?: nem arra való, ahogyan az isset sem.
$userNeme = isset($_POST['userNeme']) ? $_POST['userNeme'] : "";
Ez a helyes használat, és így sem dob semmiféle notice-t.
- A hozzászóláshoz be kell jelentkezni
igazad van, azt egyáltalán nem figyeltem, hogy a ? után van az értékadás, az a helyes és szép, ahogy te írtad :)
- A hozzászóláshoz be kell jelentkezni
Sziasztok!
Eljött az idő, a rendszer tesztelésre átadva és rögvest az első db query-nél a hibaüzenet: failed. :P
Sajnos fejlesztésnél elkövettem azt a hibát, hogy 2005-ös sqlexpresst használtam, a megrendelő viszont még 2000-est használhat.
Namost hála Microsoftnak, a BIT típusú mezők értéke a 2000-es 0/1-ről 2005-re False/True-ra változott... Így persze, hogy failed.
Szeretném kérdezni, hogy php-ban van-e lehetőség arra, hogy lekérdezzem a háttérben szolgáló sql szerver verzióját? Természetesen mindenféle 3rd party alkalmazás (FreeTDS, ODBC, ADODB, stb.) használata nélkül?
--
A gyors gondolat többet ér, mint a gyors mozdulat.
- A hozzászóláshoz be kell jelentkezni
http://support.microsoft.com/kb/321185
_______________________________________________________
UBUNTU 8.04 Rock's!
Type cat /vmlinuz > /dev/audio to hear the Voice of God.
- A hozzászóláshoz be kell jelentkezni
Nagyon szépen köszönöm! Tökéletes lesz! ;)
--
A gyors gondolat többet ér, mint a gyors mozdulat.
- A hozzászóláshoz be kell jelentkezni