Autor | Zpráva | ||
---|---|---|---|
Monkeys Profil * |
#1 · Zasláno: 16. 7. 2012, 21:20:31
Dobry vecer
potreboval by som radu ako docielit nasledovne: mam par inputov v administracii ktore odosielam cez GET ale v adrese chcem aby pri nevyplnenom inpute bolo napisane napr. &uzivatel=NULL alebo &uzivatel=0 (to je jedno) teraz mi to pise &uzivatel=&vypis=10 ... stav=objednavky&var_symbol=vypis=10 ... vdaka M. |
||
Sir Tom Profil |
#2 · Zasláno: 16. 7. 2012, 21:24:59
Monkeys:
Také dobrý večer, adresu URL můžeš vytvořit na úrovni JavaScriptu ještě před odesláním inputu. Javascript projde všechny inputy a těm, který jsou prázdné vloží hodnotu 0 (nebo null), ale k čemu to? Nestačí při zpracování vytvořit podmínku empty($_GET["var_symbol"]) , která vrací TRUE, když je $_GET["var_symbol"] nedefinováno, prázdné, nullové, nulové?
|
||
Monkeys Profil * |
#3 · Zasláno: 16. 7. 2012, 22:09:13
Sir Tom:
druhe riesenie napadlo aj mna ale ako to vyriesit ked mam form nadstaveny na method="get" a pri odoslani posle vsetky hodnoty inputov do url. M. |
||
Keeehi Profil |
Monkeys:
„ako to vyriesit“ Přesně jako Sir Tom. Jinak pozor na: // http://example.com/script.php?foo=null $_GET["foo"] != null |
||
Monkeys Profil * |
#5 · Zasláno: 17. 7. 2012, 08:55:33
Keeehi:
Napisal som to neak takto ale stale to nieje to co chcem. if(isset($_GET['zobraz'])){ $var_symbol = $_GET['var_symbol']; if(empty($var_symbol)){ $var_symbol = TRUE; } } Viem ze pri formularoch typu GET sa nemusi davat tlacitku name ale ako inac zistim ze som to odoslal aby som mohol spracovat formular? |
||
Joker Profil |
#6 · Zasláno: 17. 7. 2012, 09:16:07
Monkeys:
„chcem aby pri nevyplnenom inpute bolo napisane napr. &uzivatel=NULL alebo &uzivatel=0“ Nahraďte tenhle požadavek použitím funkce empty při zpracování formuláře. Ukázkový příklad: // $uzivatel bude 0 pokud nebylo nic předáno, nebo předaná hodnota převedená na číslo $uzivatel = empty($_GET["uzivatel"]) ? 0 : intval($_GET["uzivatel"]); Skript zpracovávající formulář stejně nemůže spoléhat na to, že v tom políčku bude konkrétní hodnota. U hodnot předaných od uživatele vždycky skript musí předpokládat, že tam může být cokoliv. |
||
Monkeys Profil * |
#7 · Zasláno: 17. 7. 2012, 10:03:58
Joker:
vdaka nieco taketo som pred chvilou vykuzlil aj ja ale stale tu hodnotu neviem dat do URL. V podstate hodnota (value="") toho inputu sa posiela do adresy url, jednoducho ked vrazim ten kod do value tak sa logicky v inpute objavi ta hodnota co sa mi zda divne. Ja nevim co robim zle ale takato blbost a stravim pritom 5 hodin. ked si to vypisem cez echo tak to krasne funguje ale do url to jednoducho nedostanem neviem ako. M. |
||
Joker Profil |
#8 · Zasláno: 17. 7. 2012, 10:15:05
Monkeys:
„V podstate hodnota (value="") toho inputu sa posiela do adresy url, jednoducho ked vrazim ten kod do value tak sa logicky v inpute objavi ta hodnota co sa mi zda divne.“ Ano, takhle to funguje. Jak říkám, prostě tu hodnotu do inputu nedávejte. Používejte ji jen interně, pokud je input prázdný. |
||
Monkeys Profil * |
#9 · Zasláno: 17. 7. 2012, 14:10:27
Skusam to vseliako ale nejde mi to:
Skusal som takto, ale do inputu sa zapise 0. <input name="var_symbol" class="ob" type="text" value="<?php echo !empty($_GET['var_symbol']) ? $_GET['var_symbol'] : '0';?>"/> Dalej odoslanim a testovanim celeho formularu to sice funguje ale nikdy sa hodnota nedostane do url. if(isset($_GET['posli'])){ if(empty($_GET['var_symbol'])){ echo 'prazdne (0)'; }else{ echo 'napisane'; } } Joker: Neviem co myslite tym „Používejte ji jen interně“ Da sa to vobec ? :) M. |
||
Ugo Profil |
#10 · Zasláno: 17. 7. 2012, 14:45:58
bylo řečeno na začátku ..
1. javascript 2. neřešit to taky se přiklánim k bodu 2, čemu to vadí že chybí v URL val=0 ? idyž if($_GET['val'] == '') $_GET['val'] = 0; je funkčně totéž a z hlediska estetiky nejsou get parametry hezké vůbec, tak co :) |
||
Kubo2 Profil |
#11 · Zasláno: 17. 7. 2012, 14:50:57
Monkeys:
Prostě to $_POST-om pošli na php skript, ktorý ti prehodnotí $_POST premenné, ak je premenná prázdna, nastaví jej hodnotu NULL. Takhle: // takto deklaruješ všetky premenné $premenna = $_POST['premenna']; // dáš ich jednu po druhej do podmienky If(isset($premenna == "")) { $premenna = NULL; } // potom ich predáš adrese // tento skript bude bez výstupu header("Location: /iny_skript.php?premenna=".$premenna."&premenna2=".$premenna2); // atd. a mas z toho URL akú si chcel |
||
Keeehi Profil |
#12 · Zasláno: 17. 7. 2012, 14:57:55
Kubo2:
1) to je pěkná prasárna 2) máš v tom chyby 3) pokud v proměnné bude NULL, rozhodně se ti při zřetězení nepřetypuje na string "null" ale na string "" 4) i kdyby jsi do adresy dostal string "null", tak jak jsem psal v [#4], tak v tom dalším scriptu $_GET["premenna"] != null
|
||
panther Profil |
#13 · Zasláno: 17. 7. 2012, 15:01:55
Kubo2:
poslat data na server, pozmenit GETove promenne a presmerovat. To nemyslis vazne, ze ne? |
||
Joker Profil |
#14 · Zasláno: 17. 7. 2012, 15:28:50
Monkeys:
> Neviem co myslite tym > „Používejte ji jen interně“ > > > Da sa to vobec ? :) Jistě, příklad: $uzivatel = empty($_GET["uzivatel"]) ? 0 : intval($_GET["uzivatel"]); // něco udělám a teď chci vypsat: echo '<input type="text" name="uzivatel" value="' . htmlspecialchars($_GET["uzivatel"]) . '">'; $uzivatel = empty($_GET["uzivatel"]) ? 0 : intval($_GET["uzivatel"]); // něco udělám a teď chci vypsat: $uzivVal = ($uzivatel == 0) ? "" : $uzivatel; echo '<input type="text" name="uzivatel" value="' . $uzivVal . '">'; |
||
Kubo2 Profil |
#15 · Zasláno: 17. 7. 2012, 16:31:45
Keeehi:
„1) to je pěkná prasárna“ Prasárna? Mně se to nezdá tak zlé. „2) máš v tom chyby“ Kde mám chyby? Mrknul jsem se na to ještě jednou a nic jsem nenašel. panther: „To nemyslis vazne, ze ne?“ Ale jo, myslím to vážne! Já to to tak dělám, akorát že $_GET proměnné přesměrujem na jiný soubor - no vlastně dělám to trochu jinak: Prehodnotím $_GET parametre poslané na súbor, a podle toho sa rozhodněm, kam presmerujem, či presmerujem a co udělám ak nepřesměrujem. Vytvoril jsem takovú malú schému: ![]() |
||
Joker Profil |
Kubo2:
„Prasárna? Mně se to nezdá tak zlé.“ To je smutné. Ale to shrnutí, až na to, že to je nesmyslně v obrázku, je fajn. Doufám, že i podprůměrně inteligentní čtenář v něm vidí, že to přesměrování je úplně zbytečné. |
||
Keeehi Profil |
$premenna = $_POST['premenna']; // pokud se nepošle v postu premenna, generuje to error Notice: undefined index If(isset($premenna == "")) { // toto genruje error vždycky Parse error: syntax error, unexpected T_IS_EQUAL - správně by bylo if( empty($premenna) ) { $premenna = NULL; } header("Location: /iny_skript.php?premenna=".$premenna."&premenna2=".$premenna2); iny_skript.php?premenna=& místo iny_skript.php?premenna=null& což Monkeys chtěl, aby tam bylo, i když to je blbost jak už jsme si dříve vysvětlili.
|
||
Kubo2 Profil |
#18 · Zasláno: 17. 7. 2012, 18:41:02
Joker:
„To je smutné.“ No dobře, zkusím to udělat nějak jinak. Keeehi: Ako sa líši isset(); a empty();? |
||
jenikkozak Profil |
#19 · Zasláno: 17. 7. 2012, 18:52:26
Kubo2:
„Ako sa líši isset(); a empty();?“ Ve čtyřech písmenech. Na podrobnosti se podívej do manuálu. Stačí kliknout na oba podtržené příkazy v některém příkladu na této stránce. |
||
Monkeys Profil * |
#20 · Zasláno: 17. 7. 2012, 21:54:45
uz to kaslem nemozem to rozbehat.
Napisal som to podla prikladu Jokera $var_symbol = empty($_GET["var_symbol"]) ? 0 : intval($_GET["var_symbol"]); if($var_symbol == 0){ echo '<input type="text" class="ob" name="var_symbol" value="' . htmlspecialchars($_GET["var_symbol"]) . '">'; } ale stale je to prazdne ked si vypisem print_r vypise to Array ( [stav] => Všetky objednávky [var_symbol] => [uzivatel] => [vypis] => 10 ) M. |
||
Keeehi Profil |
#21 · Zasláno: 17. 7. 2012, 22:44:00
$var_symbol = empty($_GET["var_symbol"]) ? 0 : intval($_GET["var_symbol"]); echo '<input type="text" class="ob" name="var_symbol" value="' . htmlspecialchars($var_symbol) . '">'; |
||
Monkeys Profil * |
#22 · Zasláno: 17. 7. 2012, 23:15:06
Keeehi:
to som skusal ale do inputu to vypise 0 takze to je zle. M. |
||
LaMMa Profil |
#23 · Zasláno: 17. 7. 2012, 23:22:56
Monkeys:
A co by si v tom inpute chcel? |
||
Monkeys Profil * |
#24 · Zasláno: 17. 7. 2012, 23:56:17
LaMMa:
Ak je prazdny tak nic ale abyadresa url mala napr. &uzivatel=0, alebo &uzivatel=null. ale uz to necham tak bude to bez definicie fungovat to funguje len som to chcel trosku zdokonalit. Bezny uzivatel si to ani nevsimne. :) M. |
||
Keeehi Profil |
#25 · Zasláno: 18. 7. 2012, 00:11:40
Monkeys:
Aby to bylo v adrese, musel by jsi buď přesměrovávat, což je fuj, nebo těsně před odesláním doplnit pomocí javascriptu. Není to žádné zdokonalení, je to zbytečnost. Jak vidíš, jsou s tím jen zbytečné problémy. |
||
Sir Tom Profil |
Monkeys:
„Bezny uzivatel si to ani nevsimne. :)“ No, běžný uživatel si toho nevšimne. Jestli chceš, aby si toho nevšiml i profi uživatel, tak místo $_GET použij $_POST. „ale uz to necham tak bude to bez definicie fungovat to funguje len som to chcel trosku zdokonalit.“ Však jo, přes ten Javascript. Takto: <script> var url = "souborKamSeOdeslu.php?"; if(document.formular.input1.value==""){ url = url + "jmenoInputu=0&"; }else{ url = url + "jmenoInputu" + document.formular.input1.value + "&"; } //Tyto podmínky udělej pro každý formulářový prvek. V každé podmínce se do url přidá další parametr. Jestliže je form. prvek prázdný, tak se přidá nula. //Je to ale šílená pitomost a zbytečnost. (Vyhledej si něco na google.cz a pak se podívej na url - taky tam jsou tvary typu param1=¶m2= a nikdo to neřeší...). location.assign(url); </script> |
||
LaMMa Profil |
#27 · Zasláno: 18. 7. 2012, 08:14:09
Nechapem co na tom chcete riesit JS. Vsak ked sa posle formular GETom, vsetky parametre z neho budu aj v adrese, takze staci skryty input s tym co tam ma byt.
|
||
Ugo Profil |
LaMMa:
tohle není pravda ani řešení 1. jestliže není zaškrtlý checkbox nebo radio - neodešle se 2. jestliže dáš hidden input se stejným názvem, jak pak pozná kdy chceš odeslat jeden a kdy druhý? - odešle se ten poslední jediné skutečně funkční řešení (princip) totiž nabídl Kubo2. Vzhledem k tomu co to je za řešení tak je z toho ještě více patrné že se to řešit nemá :) |
||
LaMMa Profil |
Jejda, tak to je samozrejme, predpokladam, ze uz nejaku zakladnu znalost prace s formularom ma. Vsak ak hadam nebude pomenovavat 10 inputov rovnako, alebo posielat nieco co tam chce nezasktrnutym checkboxom.
Ale je fakt, ze v tomto pripade to riesit je zbytocnost. |
||
Chamurappi Profil |
#30 · Zasláno: 18. 7. 2012, 09:40:08
Reaguji na Monkeyse:
„ale abyadresa url mala napr. &uzivatel=0, alebo &uzivatel=null“ Řešíš zcela nesmyslný problém. A už docela dlouho, na to, jaká je to ptákovina. Nauč se pracovat s proměnnými. Adresa slouží k předání vstupů, ne k uskladnění všeho, s čím chceš pracovat, ve formátu, který se ti hodí. Reaguji na Uga: „jestliže dáš hidden input se stejným názvem, jak pak pozná kdy chceš odeslat jeden a kdy druhý? - odešle se ten poslední“ Není pravda, odešlou se všechny. |
||
Téma pokračuje na další straně.
|
0