Autor Zpráva
Mufna
Profil
Zdravím Vás. Mám trochu problém s předáním parametru v URL (odkazu) do jiné stránky (s formulářem). Jedná se mi o předání řetězce s názvem produktu - může být složený z písmen a čísel, včetně mezer - takže např. "produkt 0123". Chtěl bych to vyřešit nějak elegantně, zároveň potřebuji ponechat ve formuláři pouze <form action="/poptavkovy-formular/"> .

Kód odkazu, ve kterém bych potřeboval předávat ten parametr, mám zatím takto:
<?php
echo '<li><a href="/poptavkovy-formular/?'.$nazev[$i].'">poptat</a></li>';
?>

Nevím, jestli tenhle kód je v pořádku, a kromě toho některé prohlížeče mi pak vypíší URL:

/poptavkovy-formular/?produkt%200123

Potřebuju pak udělat to, že ten parametr na následující stránce (s formulářem) nejprve "vytáhnu" z URL, následně ho uložím do proměnné $nazev a její hodnotu pak vypíšu jako value="$nazev" v inputu typu "hidden".

Jak mám to předávání parametru v mém konkrétním případě vyřešit ?
Alphard
Profil
urlencode();
Mufna
Profil
Alphard

Díky. Koukám, ta funkce z mezery udělá znak "+"
Alphard
Profil
Teď jsem si vzpomněl, že vhodnější funkce by asi byla rawurlencode(), ta, pokud si vzpomínám, udělá z mezery %20.
Mufna
Profil
Ok, díky. Prosím ještě, zda bych mohl dostat radu ohledně toho, jak z URL nejprve vytáhnout ten parametr a následně ho hned zase "odmazat". Zatím jsem si sestavil tohle (jen logicky), z programátorského hlediska to takhle nejde, tak se omlouvám.
$url = $_SERVER['REQUEST_URI'];
if ($url == "/poptavkovy-formular/?$str") {
    $product_name = $str;
    $url = "/poptavkovy-formular/";
}
Alphard
Profil
Hmm, teď mě nenapadá žádné pěkné řešení. Asi bych zkusil smazat nechtěný prvek z GET pole (unset) a pak znovu sestavit adresu. Ale třeba někdo poradí lépe.

Obvykle tohle není potřeba, aplikace na začátku zpracuje požadavek (tj. validuje data), provede nějakou akci (něco využije a zapomene, něco vytáhne z db apod.) a na závěr přesměruje, nebo vygeneruje html stránku z odkazy (přesně ví, co potřebuje a kde to vzít). Takže je to opačný postup, nemaže se určitý prvek, ale určité prvky se generují, aspoň u mě.
Majkl578
Profil
Ono se s tím polem ($_GET) špatně pracuje, když jde o klíč a ne o hodnotu s klíčem.
Pokud lze zaručeně říct, že je tam jedna hodnota, pak lze použít current(array_keys($_GET)), ale řešení je to opravdu nepěkné. Dále by možná šla použít funkce parse_str().

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:

0