| Autor | Zpráva | ||
|---|---|---|---|
| PanNekdo Profil * |
#1 · Zasláno: 31. 8. 2013, 20:24:31
Ahoj, mám na stránce dva formuláře, jeden slouží pro vyhledávání položek a druhý pro řazení výsledků třeba podle ceny, data...
oba formuláře potřebuji odesílat metodou GET. problém je v tom, že po odeslání prvního formuláře mám v url nějaké parametry a já potřebuji aby po odeslání druhého formuláře se k parametrům prvního, přidali i ty ze druhého a ne aby se url změnila na ten druhý formulář. dá se to nějak udělat? už jsem zkoušel v druhém formuláři toto: <form action="<?= $_SERVER["REQUEST_URI"] ?>" method="GET"> ale to nepomohlo. |
||
| Tori Profil |
A musí to nutně být dva samostatné formuláře? Nedá se to sloučit do jednoho?
Pokud ne, tak ve druhém formuláři použijte skrytá pole, do kterých vložíte data z GET (z prvního formuláře). |
||
| PanNekdo Profil * |
#3 · Zasláno: 31. 8. 2013, 20:31:58
No musí to být dva formuláře...každý je na jiném místě ve stránce a struktura stránky to nedovoluje. použít skrytá pole by šlo, ale první formulář má hodně položek, takže do toho se mi moc pouštět nechce, nebyla by jiná možnost?
|
||
| Tori Profil |
PanNekdo:
Dalo by se ukládat zadání z prvního formuláře do session (např. produkt=notebook&vyrobce=Asus), a když přijdou data z druhého formuláře (např. raditPodle=cena), tak je k tomu přidat a přesměrovat na produkt=notebook&vyrobce=Asus&raditPodle=cena. Prostě aby nebyl stejný obsah dostupný pod několika různými URL.
Anebo samozřejmě JavaScriptem, změnit vlastnost window.location.search , tím dojde ke znovunačtení stránky.
|
||
| PanNekdo Profil * |
#5 · Zasláno: 31. 8. 2013, 21:01:35
přesně nerozumím tomu jak to s tou session myslíš...
|
||
| Tori Profil |
Přibližně takhle jsem to myslela:
<form><input type='text' name='vyrobce'>... další pole... <input type='submit' name='hlavniForm' value='Vyhledat'></form> <form><select name='raditPodle'>...možnosti řazení... </select><input type='submit' name='razeni' value='Seřadit'></form> <?php
session_start();
if (empty($_SESSION['zadani']))
$_SESSION['zadani'] = array();
// byl odeslaný první formulář - uložím si zadání a pokračuji vyhledáním a zobrazením produktů
if (isset($_GET['hlavniForm'])) {
$_SESSION['zadani'] = array(
'vyrobce' => $_GET['vyrobce'],
// ... další pole ...
);
// byl odeslaný druhý formulář - spojím parametry s těmi uloženými a přesměruju
} elseif (isset($_GET['razeni'])) {
list($uri, $qs) = explode('?', $_SERVER['REQUEST_URI']);
$razeni = array(
'raditPodle' => $_GET['raditPodle'],
// ... případně další parametry (počet záznamů na stránku apod.)
);
header('Location: http:/'.$uri.'?'.http_build_query(array_merge($_SESSION['zadani'], $razeni));
exit;
}
// a tady je už normální vyhledání a zobrazení produktů |
||
|
Časová prodleva: 13 let
|
|||
0