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

Регистриран на: 25/12/2012 12:03 pm

Support: 122
Bonus: 244
Мнения: 758
Мнение 19/09/2017 11:48 am      Отговорете с цитат


Според мен най-лесно и тарикатско е да сложиш едно скрито поле в формата за сортиране като не искаш да закачаш параметри към url-а, което е малко тъпо, но ето как БИ могло да стане .


Даже ако някой ден ти се наложи да правиш страница за търсене и искаш и там да сложиш тоя селект за подреждане, може да добавиш и още една проверка, която да ти добавя още едно поле и разбира се така може да ги екстрактнеш в отделен файл, за да няма излишни копирания, но ти си знаеш ;д
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>

<input type="hidden" name="page" value="<?php echo (isset($page) ? $page : '1');?>">

<?php if(isset($q)): ?> <input type="hidden" name="q" value="<?php echo $q;?>"> <?php endif; ?>

</form>


Пробвай

Idea Question
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
deam0n
Tourist Defender

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

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


Когато отидеш на нова страница най-вероятно ти го показва null заради този ред:

 $select = $this->_normalize->post('select');


В случая трябва да провериш дали има зададен параметър за сортиране от линка и да използваш него като $select.
 
$select = $this->_normalize->post('select');

if(isset($parametar_ot_linka))
   $select = $parametar_ot_linka;
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
teroristd
Редовен
Редовен

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

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


Ще пробвам и по двата начина. @joTunkiq не можах да схвана каква ти е идеята за скритото поле. Би ли обяснил по-подробно.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
topchokt
Редовен
Редовен

Регистриран на: 14/11/2008 7:48 am

Support: 21
Bonus: 37
Мнения: 2125
Мнение 19/09/2017 9:50 pm      Отговорете с цитат


Лично за мен най-правилният вариант е с промяна на линка - тоест да си взимаш опцията от $_GET.

Другият вариант са бисквитките/сесиите, ама трябва постоянно да следиш какво имаш в тях и при избор от потребителя да ги променяш.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
deam0n
Tourist Defender

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

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


И какво става ако потребителят си изключи бизквитките ? Smile
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
joTunkiq
Активен
Активен

Регистриран на: 25/12/2012 12:03 pm

Support: 122
Bonus: 244
Мнения: 758
Мнение 20/09/2017 10:46 am      Отговорете с цитат


teroristd написа:
Ще пробвам и по двата начина. @joTunkiq не можах да схвана каква ти е идеята за скритото поле. Би ли обяснил по-подробно.


Виж сега, до колкото разбирам имаш странициране на някаква страница. Имаш и НЯКАКВА форма за сортиране, но като сортираш не ти помни страницита, и не искаш да предаваш през ГЕТ номера на страницата.

Та, моето решение е да включиш в тази форма скрити полета, за да влязат като ПОСТ. И ти дадох пример с твоята форма за сортиране.

Идеята е тя като се постне да има вътре скрито поле, което да му подадеш $page променливата от гет, пост или от където ти идва и като пратиш формата директно да се предава.

Като ти дадох пример и ако имаш тръсене в тази страница - трябва да пердадеш и ключовата дума - може да стане по същия начин Smile


Question

EIDT: Това е от страна на падащото меню.

А за линковете на страницирането имам също решение. тъй като не знам каква система ползваш или нещо такова, но в PHP има една много яка функция за билдване на урл "http_build_query"

Пример:

PHP code:
<a href="http://moqsait.com/<?php echo http_build_query([
"page" => 1,
"sort" => $_POST['sort']
]); ?>">1</a>

<a href="http://moqsait.com/<?php echo http_build_query([
"page" => $page+1,
"sort" => $_POST['sort']
]); ?>">следваща</a>


ЕДИТ 2:

Дал си пример как ти изглежда url-а
Цитат:
Ето какъв ми е линка localhost/market/public/index/run/1 като цифрите са страниците.


Вероятно ползваш htaccess, най-вериятно това е проблема, че не сработват get променливите. А може би ползваш CI ? Може би ако поставиш още един параметър на метода $page или $sort, който да не е задължителен :

Пример:
PHP code:

class Index
{

function run($id, $page=1, $sortBy='title')
{
# code...
}
}


Но ако може да ни светнеш точно с какво работиш и htaccess ако ползваш да го покажеш, може той да не е наред нещо .? Idea Question
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
teroristd
Редовен
Редовен

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

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


Благодаря за отговорите. В крайна сметка единственият начин по който успях да го направя е като направих формата гет. Сега имам pretty links ugly query Very Happy ама карай да върви, по важното е че работи.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Fakeheal
Support
Support

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

Support: 340
Bonus: 678
Мнения: 2556
Мнение 21/09/2017 12:45 pm      Отговорете с цитат


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


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