|
Автор |
Съобщение |
Редовен
Регистриран на: 18/02/2010 1:50 pm
Support:
Bonus: 174
Мнения: 1644
|
18/09/2017 3:17 pm
Селект поле, запомняне на стойност.
|
|
|
Здравейте, на началната страница имам селект поле с три опции за подреждане на резултата. В зависимост от това коя опция е избрана правя различна заявка към базата. До тук всичко работи, проблема е че имам странициране и когато се избере например втора страница браузъра се рефрешва и губя стойността която е била избрана. Какво може да се направи? Нещо към сесия ме върти, но не мога да измисля как трябва да стане. Ето какво имам. View PHP code: <form name="myform" method="post">
<select id="select" name="select" onchange="submitform();"> <option disabled selected value> ---</option> <option value="order_date">Дата на публикуване</option> <option value="order_price_low">Цена (възходящ ред)</option> <option value="order_price_high">Цена (низходящ ред)</option> </select>
</form>
Controller PHP code: //Равносилно на $_POST['select']; $select = $this->_normalize->post('select');
if ($select == null) { $this->_model->defaultOrder(); } elseif ($select == 'order_date') { $this->_model->dateOrder(); } elseif ($select == 'order_price_low') { $this->_model->priceLowOrder(); } elseif ($select == 'order_price_high') { $this->_model->priceHighOrder(); }
$this->layout();
|
|
Върнете се в началото |
|
|
Tourist Defender
Регистриран на: 01/10/2005 6:33 pm
Support:
Bonus: 951
Мнения: 2952
|
18/09/2017 3:58 pm
|
|
|
Най-лесно ще стане ако предаваш избрания резултат чрез GET. |
| <?php $selectedOrder = 'default';
if($_GET['order']) $selectedOrder = $_GET['order']; ?>
| | |
Така ще можеш да си селектваш избраната стойност. |
| <option <?=($selectedOrder == 'order_date') ? 'selected'; > value="order_date">Дата на публикуване</option> | | |
Съотвено трябва да оправиш и линковете към другите страници. |
| <a href="file.php?page=2&order=<?=$selectedOrder;?> | | |
|
|
Върнете се в началото |
|
|
Редовен
Регистриран на: 18/02/2010 1:50 pm
Support:
Bonus: 174
Мнения: 1644
|
18/09/2017 4:21 pm
|
|
|
Мисля че това при мен няма да се получи, защото линковете ми са от тип controller/method/params. Един вид нямам &order=нещо.
Ето какъв ми е линка localhost/market/public/index/run/1 като цифрите са страниците.
|
|
Върнете се в началото |
|
|
Support
Регистриран на: 17/04/2010 8:37 am
Support:
Bonus: 692
Мнения: 2612
|
18/09/2017 5:02 pm
|
|
|
teroristd написа: | Мисля че това при мен няма да се получи, защото линковете ми са от тип controller/method/params. Един вид нямам &order=нещо.
Ето какъв ми е линка localhost/market/public/index/run/1 като цифрите са страниците. |
Ти пак може да си подаваш параметри през GET, url-a ще е:
|
| localhost/market/public/index/run/2?parameter=value | | |
|
|
Върнете се в началото |
|
|
Редовен
Регистриран на: 18/02/2010 1:50 pm
Support:
Bonus: 174
Мнения: 1644
|
18/09/2017 5:53 pm
|
|
|
Предпочитам да не развалям урл-а. Някакъв друг начин няма ли?
|
|
Върнете се в началото |
|
|
Активен
Регистриран на: 20/08/2008 6:12 pm
Support:
Bonus: 244
Мнения: 3417
|
18/09/2017 7:10 pm
|
|
|
Значи темите ти винаги са такива - даваме ти правилни решения, ти не искаш да ги направиш.
Затова ще ти кажа това, което искаш да чуеш - използвай сесия. Перфектното решение за този проблем е. Даже може да ползваш redis например. Така ще може да ги кешираш и да работи изключително много по-бързо това решение.
|
|
Върнете се в началото |
|
|
Редовен
Регистриран на: 18/02/2010 1:50 pm
Support:
Bonus: 174
Мнения: 1644
|
18/09/2017 7:56 pm
|
|
|
Не разбирам защо се заяждаш. Какво лошо има в това че търся по различно решение. Точно ти в друга тема ми каза да не си развалям урл-а. Вече всички теми тука се превръщат в някакви спорове и спам. Приел съм всички решения които съм могъл да направя. Може да се види в 90% от темите съм дал точка на някого.
|
|
Върнете се в началото |
|
|
Активен
Регистриран на: 11/06/2012 8:07 pm
Support:
Bonus: 293
Мнения: 1377
|
18/09/2017 10:21 pm
|
|
|
teroristd написа: | Предпочитам да не развалям урл-а. Някакъв друг начин няма ли? |
В такъв случай не го "разваляй", а добави нужното поле след наклонената черта - controller/method/params/[order_id] (щом идеята ти е да няма символи като "?" и "=" ) |
|
Върнете се в началото |
|
|
Турист
Регистриран на: 13/05/2016 2:29 pm
Support:
Bonus: 10
Мнения: 281
|
19/09/2017 10:36 am
|
|
|
На скоро ми се наложи този проблем да реша и аз лично го направих чрез cookie. Бисквитки  за няколко часа, може и сесия. |
|
Върнете се в началото |
|
|
Редовен
Регистриран на: 18/02/2010 1:50 pm
Support:
Bonus: 174
Мнения: 1644
|
19/09/2017 11:02 am
|
|
|
Би ли показал как си го направил?
|
|
Върнете се в началото |
|
|
Tourist Defender
Регистриран на: 01/10/2005 6:33 pm
Support:
Bonus: 951
Мнения: 2952
|
19/09/2017 11:03 am
|
|
|
Винаги можеш да добавиш тази променлива като параметър в линка.
Не знам какъв framework ползваш, затова ти дадох прост пример с $_GET.
|
|
Върнете се в началото |
|
|
Редовен
Регистриран на: 18/02/2010 1:50 pm
Support:
Bonus: 174
Мнения: 1644
|
19/09/2017 11:20 am
|
|
|
deam0n написа: | Винаги можеш да добавиш тази променлива като параметър в линка.
Не знам какъв framework ползваш, затова ти дадох прост пример с $_GET. |
Принципно пробвах, обаче не можах да го направя. Не знам къде греша но това което се получава е че самото поле остава селектирано, но в контролера при рефреш пост-а връща null и се изпълнява винаги дефаултовата заявка. |
|
Върнете се в началото |
|
|
|