| | |
| Stránka: 1 z 1
| [ Príspevkov: 17 ] | |
Autor | Správa |
---|
Registrovaný: 04.08.06 Prihlásený: 30.12.13 Príspevky: 69 Témy: 10 | Napísal jayrro: 12.12.2007 0:52 | |
|
Mam taky mensi problem. Pri registracii potrebujem aby uzivatel zadal den mesiac a rok narodenia. Pri mesiaci to neni problem, pretoze je to 12 poloziek a navyse textove. Pri dni to este tiez neni problem, ale uz napriklad pri roku narodenia vypisovat 100krat <option>1900</option> je dost pracne a zabera znacnu cast kodu...neda sa to nejako inac spravit? napriklad oznacit len krajne body? napr.: od roku 1900 po rok 2007? ma to byt cisto iba cislo.
_________________ >» Jª¥rrº! «<
Life is too short,
don't stress every day! |
|
Registrovaný: 28.04.07 Prihlásený: 03.11.09 Príspevky: 133 Témy: 1 | Napísal imcold: 12.12.2007 7:35 | |
|
Vygeneruj položky skriptom.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
ak poznas php alebo podobny jazyk, mozes si to cez cyklus pekne vygenerovat, v najhorsom pripade cez js, ale to ti neodporucam...
Jednoduchy cyklus na vygenerovanie poloziek selectu od r. 1900 do 2007:
Kód: for($i=1900; $i<=2007; $i++) { echo '<option value="'.$i.'">'.$i.'</option>'; }
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 12.12.2007 8:55 | |
|
Alebo sprav input typu text a vstup kontroluj regulárnym výrazom (btw, aj tak to budeš musieť spraviť, lebo select ťa pred poslaním iných dát ako ty chceš neochráni).
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 04.08.06 Prihlásený: 30.12.13 Príspevky: 69 Témy: 10 | Napísal autor témy jayrro: 12.12.2007 12:49 | |
|
omg, nakoniec je to take jednoduche, stacilo len trosku zakombinovat. fakt ma to nenapadlo Dakujem stenley.
btw: p360t jak si to myslel, ze select ma pred poslanim inych dat neochrani? vsak pri selecte si uzivatel mze vybrat len to z coho mu ponuknem.
_________________ >» Jª¥rrº! «<
Life is too short,
don't stress every day! |
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 |
no to sa dosť mýliš.. všetky veci z formu sa posielajú ako get (prepíšem v url) alebo post (prepíšem v hlavičke)
Takže ak mi ty dáš možnosť vybrať čísla od 1900 do 2007 tak ja si to jednoducho pri odoslaní odchytím hlavičku a zmením to tam (prípadne ešte pred odostaním cez js injection) alebo prinajhoršiom lamer riešení si tvoju stránku uložím a option si prepíšem na svoje hodnoty
//edit:
p360t píše: Alebo sprav input typu text a vstup kontroluj regulárnym výrazom (btw, aj tak to budeš musieť spraviť, lebo select ťa pred poslaním iných dát ako ty chceš neochráni). s regulárnymi opatrne, dosť spomalujú (aj keď sa to nezdá) Raz som robil jeden pokus cez podmienky sa skript vykonal omnoho rýchlejšie ako cez regulárne. Navyše, rok nie je taká vec čo by si musel cez regulárne overovať, stačí overiť či je číslo a či je z nejakého intervalu. Nič viac netreba
|
|
Registrovaný: 04.08.06 Prihlásený: 30.12.13 Príspevky: 69 Témy: 10 | Napísal autor témy jayrro: 12.12.2007 13:38 | |
|
heh...no nad takymto odoslanim som nerozmyslal. Predpokladam ze by sa to dalo opat nejakym cyklom, len namiesto ponukania moznosti, by kontroloval rozmedzie odpovede a umiestnit ho do kodu kde zyskava odpovede z <FORM> </FORM>.
Jak by ste to spravili vy?
_________________ >» Jª¥rrº! «<
Life is too short,
don't stress every day! |
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 |
Kód: <?php ((is_numeric($_POST["rok"])) && ($_POST["rok"]<=2007) && ($_POST["rok"]>=1900)) ? $vysledok=true : $vysledok=false ?>
potom si na základe premennej vysledok určíš čo má ďalej robiť
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
is_numeric() ti zoberie napr. aj desatinne cisla
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 |
tak zaokrúhliť, ja neviem.. som v tomto lama
ale cez regulárne by som to určite nieriešil, chodíť s tankom na dážďovky sa mi zdá trochu uletené
|
|
Registrovaný: 04.08.06 Prihlásený: 30.12.13 Príspevky: 69 Témy: 10 | Napísal autor témy jayrro: 12.12.2007 14:52 | |
|
a co tak takyto kod?
stacilo by to na osetrenie neziaduceho vstupu?
Kód: <?php $spravnost = false; for ($i= 1900 ; $i <=2007 ; $i++) { if ($_POST["rok"] == $i) { $spravnost = true} } if ($spravnost == false) {echo ('<p> <b> Zadany udaj je nespravny </b> </p>')} else {$rok_nar = $_POST["rok"]} ?>
_________________ >» Jª¥rrº! «<
Life is too short,
don't stress every day! |
|
Registrovaný: 26.09.07 Prihlásený: 06.06.10 Príspevky: 53 Témy: 7 Bydlisko: Zákopčie, K... |
Sa mi zda ze to nejako komplikujete.. Co takto:
Kód: <?php $ok = ( ( intval($_POST["rok"]) <= 2007) && ( ( intval($_POST["rok"]) >=1900 ) ) ? true : false; ?>
|
|
Registrovaný: 04.08.06 Prihlásený: 30.12.13 Príspevky: 69 Témy: 10 | Napísal autor témy jayrro: 12.12.2007 17:14 | |
|
hmmm, ja to nekomplikujem...ja sa len ucim php a trosku ma aj zvadzaju skusenosti z pascalu robit to podla toho
_________________ >» Jª¥rrº! «<
Life is too short,
don't stress every day! |
|
Registrovaný: 26.09.07 Prihlásený: 06.06.10 Príspevky: 53 Témy: 7 Bydlisko: Zákopčie, K... |
No ja uz mam za sebou pascal, klasicke C, C++, Delphi, Assembler, Bash, Python, prakticky vsetky webovske jazyky, a teraz frcim na C++ pod windows a uz coskoro sa na mna tesi aj Java.. Okrem toho v praci vyvyjame informacne systemi s webovskym rozhranim v PHP a Javascripte.. Finta je v tom ze ja viem rychlo zabudat..
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 |
Ezekiell píše: No ja uz mam za sebou pascal, klasicke C, C++, Delphi, Assembler, Bash, Python, prakticky vsetky webovske jazyky, a teraz frcim na C++ pod windows a uz coskoro sa na mna tesi aj Java.. Okrem toho v praci vyvyjame informacne systemi s webovskym rozhranim v PHP a Javascripte.. Finta je v tom ze ja viem rychlo zabudat.. keď si taký frajer, mohol si to spraviť aj efektívnejšie. Ja som mu to schválne napísal trošku rozpísane aby pochopil o čo ide. Ten unárny operátor si tam vôbec nemusel dávať
Kód: <?php $ok=( ( intval($_POST["rok"]) <= 2007) && ($_POST["rok"] >=1900 ) ); ?>
výsledok podmienky vráti bool hodnotu ktorú priamo priradím, takže ten zvyšok zatým je zbytočný. V druhej časti podmienky nemusí už byť intval, je tam úplne zbytočne lebo ak to nie je číslo tak sa do tej časti podmienky nedostane lebo prvá časť už vráti false a false and true nemôže byť nikdy
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 13.12.2007 8:27 | |
|
Ten regulárny som myslel kompletne na celý dátum, ale je možné, že to je pomalšie. Na druhej strane je otázne, či má stránku, na ktorej mu veľmi pomôže každá ušetrená desatina sekundy...
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 26.09.07 Prihlásený: 06.06.10 Príspevky: 53 Témy: 7 Bydlisko: Zákopčie, K... |
No tak ked uz tak intval je funkcia ktora sa pokusi aj znak previest na cislo a nie ktore zistuje ci to je cislo cize musi byt aj na tom druhom mieste pr.:
Kód: <?php echo intval(42); // 42 echo intval(4.2); // 4 echo intval('42'); // 42 echo intval('+42'); // 42 echo intval('-42'); // -42 echo intval(042); // 34 echo intval('042'); // 42 echo intval(1e10); // 1410065408 echo intval('1e10'); // 1 echo intval(0x1A); // 26 echo intval(42000000); // 42000000 echo intval(420000000000000000000); // 0 echo intval('420000000000000000000'); // 2147483647 echo intval(42, 8); // 42 echo intval('42', 8); // 34 ?>
A nie som ziaden frajer.. Sam som pisal ze uz s tych jazykov skoro nic neviem.. Takze sa netreba rozculovat ano?
|
|
| Stránka: 1 z 1
| [ Príspevkov: 17 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|