Autor Zpráva
PanNekdo
Profil *
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 *
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 *
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ů
- Ale je to poměrně nešikovný způsob a čím dál tím míň se mi líbí. Asi bych spíš použila skrytá pole v 2.formuláři nebo JS.

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: