« 1 2 »
Autor Zpráva
Monkeys
Profil *
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 ...
ako dat textovemu inputu value"0" bez toho aby sa objavil v policku?

vdaka
M.
Sir Tom
Profil
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 *
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 *
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
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 *
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
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 *
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
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
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
V tom ďaľšom skripte, len daš podmienku či sa $_GET premenna rovná NULL a podľa toho sa rozhodneš .
Keeehi
Profil
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
Kubo2:
poslat data na server, pozmenit GETove promenne a presmerovat. To nemyslis vazne, ze ne?
Joker
Profil
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"]) . '">';
Druhá možnost je převést nulu zase na prázdnou hodnotu:
$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
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);  
A nakonec ve výsledku je stejně 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
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
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 *
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
$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 *
Keeehi:

to som skusal ale do inputu to vypise 0 takze to je zle.

M.
LaMMa
Profil
Monkeys:
A co by si v tom inpute chcel?
Monkeys
Profil *
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
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&amp;";
}else{
 url = url + "jmenoInputu" + document.formular.input1.value + "&amp;";
}

//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=&param2= a nikdo to neřeší...).

location.assign(url);
</script>
LaMMa
Profil
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
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.
« 1 2 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: