- Селект поле, запомняне на стойност.
12
WT форуми -> PHP MySQL ASP.NET -> Селект поле, запомняне на стойност.
Създайте нова тема Напишете отговор 
Автор Съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1561
Мнение 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();
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
deam0n
Tourist Defender

Регистриран на: 01/10/2005 6:33 pm

Support: 198
Bonus: 949
Мнения: 2939
Мнение 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;?>
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1561
Мнение 18/09/2017 4:21 pm      Отговорете с цитат


Мисля че това при мен няма да се получи, защото линковете ми са от тип controller/method/params. Един вид нямам &order=нещо.

Ето какъв ми е линка localhost/market/public/index/run/1 като цифрите са страниците.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Fakeheal
Support
Support

Регистриран на: 17/04/2010 8:37 am

Support: 340
Bonus: 678
Мнения: 2556
Мнение 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
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1561
Мнение 18/09/2017 5:53 pm      Отговорете с цитат


Предпочитам да не развалям урл-а. Някакъв друг начин няма ли?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
lam3r4370
Активен
Активен

Регистриран на: 20/08/2008 6:12 pm

Support: 131
Bonus: 244
Мнения: 3409
Мнение 18/09/2017 7:10 pm      Отговорете с цитат


Значи темите ти винаги са такива - даваме ти правилни решения, ти не искаш да ги направиш.

Затова ще ти кажа това, което искаш да чуеш - използвай сесия. Перфектното решение за този проблем е. Даже може да ползваш redis например. Така ще може да ги кешираш и да работи изключително много по-бързо това решение.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1561
Мнение 18/09/2017 7:56 pm      Отговорете с цитат


Не разбирам защо се заяждаш. Какво лошо има в това че търся по различно решение. Точно ти в друга тема ми каза да не си развалям урл-а. Вече всички теми тука се превръщат в някакви спорове и спам. Приел съм всички решения които съм могъл да направя. Може да се види в 90% от темите съм дал точка на някого.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 140
Bonus: 279
Мнения: 1307
Мнение 18/09/2017 10:21 pm      Отговорете с цитат


teroristd написа:
Предпочитам да не развалям урл-а. Някакъв друг начин няма ли?

В такъв случай не го "разваляй", а добави нужното поле след наклонената черта - controller/method/params/[order_id]
(щом идеята ти е да няма символи като "?" и "=" )
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
novakabg
Турист
Турист

Регистриран на: 13/05/2016 2:29 pm

Support: 5
Bonus: 10
Мнения: 218
Мнение 19/09/2017 10:36 am      Отговорете с цитат


На скоро ми се наложи този проблем да реша и аз лично го направих чрез cookie.
Бисквитки Smile за няколко часа, може и сесия.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1561
Мнение 19/09/2017 11:02 am      Отговорете с цитат


Би ли показал как си го направил?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
deam0n
Tourist Defender

Регистриран на: 01/10/2005 6:33 pm

Support: 198
Bonus: 949
Мнения: 2939
Мнение 19/09/2017 11:03 am      Отговорете с цитат


Винаги можеш да добавиш тази променлива като параметър в линка.

Не знам какъв framework ползваш, затова ти дадох прост пример с $_GET.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1561
Мнение 19/09/2017 11:20 am      Отговорете с цитат


deam0n написа:
Винаги можеш да добавиш тази променлива като параметър в линка.

Не знам какъв framework ползваш, затова ти дадох прост пример с $_GET.


Принципно пробвах, обаче не можах да го направя. Не знам къде греша но това което се получава е че самото поле остава селектирано, но в контролера при рефреш пост-а връща null и се изпълнява винаги дефаултовата заявка.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
12
Страница 1 от 2


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети