[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка после редирект
zvezda_t
Здравствуйте, уважаемые программисты!

Я привыкла использовать постоянно сессии, но понимаю что это не правильно.

Научите меня пожалуйста, как иначе можно запоминать установленные пользователем значения?

Мне нужно, чтобы после нажатия на кнопку Создать, не сбрасывалась выбранная пользователем дата.

if(!empty($_POST['create']))
{
//запись в БД
_redirect($url);
exit;
}

if(isset($_POST['day_gr']))
{ $_SESSION['grday'] =NULL;//обнуляем переменные
$_SESSION['grday'] =$_POST['day_gr'];//регистрирую переменные сеанса
}
if(isset($_POST['month_gr']))
{ $_SESSION['grmonth'] =NULL;//обнуляем переменные
$_SESSION['grmonth'] =$_POST['month_gr'];//регистрирую переменные сеанса
}
if(isset($_POST['year_gr']) )
{ $_SESSION['gryear'] =NULL;//обнуляем переменные
$_SESSION['gryear'] =$_POST['year_gr'];//регистрирую переменные сеанса
}
//определяем значения по котором необходимо проводить сортировку(по дате)---------------------------------
if(empty($_SESSION['grday']) || empty($_SESSION['grmonth']) || empty($_SESSION['gryear']))
{
//начальная дата сортировки
list($ses_year,$ses_month,$ses_day)=array(YEAR_CUR,MONTH_CUR,DAY_CUR);
}

print "
<form name='sorting' id='sorting' method='POST'>
Установите число:<select name='day_gr' style='width:53px;' onChange=
\"document.sorting.submit();\">\r\n";
for($i=1;$i<=31;$i++)
{
$tedr[$i]="";
if($ses_day==$i){$tedr[$i]="selected";}else{$tedr[$i]="";}
print " <option value='".$i."' ".$tedr[$i].">".$i."</option>";
}
print "
</select>
...
</form>"
;


print "
<form name='create_doc' method='POST'>
<input type='text' />
<input type='text' />
...
<input type='submit' name='create' value='Создать'>
</form>
"
;




Спустя 25 минут, 9 секунд (16.05.2011 - 12:15) Basili4 написал(а):
У меня только вопрос зачем
$_SESSION['grday']   =NULL;//обнуляем переменные
$_SESSION['grday'] =$_POST['day_gr'];//регистрирую переменные сеанса


ИМХО

$_SESSION['grday'] =isset($_POST['day_gr'])?$_POST['day_gr']:NULL;

и не будет никаких сообщений о том что переменная не существует.

Спустя 1 час, 1 минута, 7 секунд (16.05.2011 - 13:16) Gradus написал(а):
в адресной строке можно передавать

Спустя 1 минута, 18 секунд (16.05.2011 - 13:17) zvezda_t написал(а):
Basili4
а если совсем без сессий?

Спустя 14 минут, 52 секунды (16.05.2011 - 13:32) Krevedko написал(а):
если нет редиректа, она и не сбросится, а будет храниться в массиве $_POST

Спустя 1 час, 23 минуты, 3 секунды (16.05.2011 - 14:55) zvezda_t написал(а):
Krevedko
так редирект нужен smile.gif

Спустя 11 минут, 9 секунд (16.05.2011 - 15:06) Basili4 написал(а):
Если без сессий то смотри вариаты 1. Куки 2. Файлы 3. БД
Это 3 места где можно сохранить инфу при редиректе. ИМХО сессия самое подходящее место чтоб сохранить дату.

Спустя (16.05.2011 - 15:06) Gradus написал(а):
ну текст не передаёте, можно остановиться на адресной строке, т.е. делать редирект на такую страницу, http://domen.ru/?grday=21&grmonth=3&gryear=2011

Спустя 55 минут, 50 секунд (16.05.2011 - 16:02) Krevedko написал(а):
но это имхо бредово )

Спустя 28 минут, 23 секунды (16.05.2011 - 16:31) Gradus написал(а):
Krevedko, что страшно "засорять" строку ?)

Спустя 1 час, 5 минут, 25 секунд (16.05.2011 - 17:36) Krevedko написал(а):
причем тут страшно ? ты сам не видишь как это тупо смотрится ? )

Спустя 8 минут, 19 секунд (16.05.2011 - 17:44) Gradus написал(а):
Krevedko, ну как-то на фоне записывать в файл переменные не очень глупо smile.gif

Спустя 1 минута, 53 секунды (16.05.2011 - 17:46) Krevedko написал(а):
если дата пишется в бд и после этого происходит редирект, то ее и надо брать из бд, чтобы показать, что изменения произошли. все очевидно, Ватсон

Спустя 6 минут, 13 секунд (16.05.2011 - 17:52) Gradus написал(а):
Krevedko, зачем хранить то, что не нужно хранить smile.gif
Юзеру как-то побарабану что у него &var=true&var1=..., а с точки зрения оптимизации лучше так чем в бд заносить или в файле хранить smile.gif даже если это кажется тупо smile.gif

Спустя 6 минут, 50 секунд (16.05.2011 - 17:59) Krevedko написал(а):
Цитата (Gradus @ 16.05.2011 - 14:52)
Krevedko, зачем хранить то, что не нужно хранить :) Юзеру как-то побарабану что у него &var=true&var1=..., а с точки зрения оптимизации лучше так чем в бд заносить или в файле хранить :) даже если это кажется тупо :)

просто насколько я понял

if(!empty($_POST['create']))
{
//запись в БД
_redirect($url);
exit;

хранить все-таки надо :unsure:
типа вместо коммента будет запись в базу...или зачем тогда хранить эти данные, поясните логику скрипта.

Спустя 2 минуты, 23 секунды (16.05.2011 - 18:02) Gradus написал(а):
Krevedko,Дата записывается в бд после заполения второй формы т.е. сначало должны пройти первую форму, а после выполнения первой записывается в сессию.
Тут вообще можно применить

foreach($_POST as $k=>$v){
echo '<input type="hidden" name="'.$k.'" value="'.$v.'">';
}

Спустя 7 минут, 3 секунды (16.05.2011 - 18:09) Krevedko написал(а):
тем более в сессию надо. после проверки на правильность ввода.
а то нелогично получится...юзер навводит в адресной строке пурги, его кинет после второй формы опять на первую после проверки.
я вообще использую гет массивы только для ссылок. для форм только пост.
особенно после освоение кодигнайтера. там гет массивов вообще нет как таковых из-за ЧПУ (если только включать специально, но этого никто не делает)

Спустя 10 минут, 37 секунд (16.05.2011 - 18:19) Gradus написал(а):
Цитата
юзер навводит в адресной строке пурги

Сам полез сам себе хуже сделал, явно не с доброжелательным намерением ковырял.Да и что продолжать думаю метод post без сессий всех устроит , в данном скрипте smile.gif

Спустя 2 минуты, 52 секунды (16.05.2011 - 18:22) Krevedko написал(а):
в многостраничных регах типа мейл ру они инфу ведь в сессиях хранят ?

Спустя 10 минут (16.05.2011 - 18:32) Gradus написал(а):
Krevedko,хз проверил сейчас там сразу всё на одной странице вписывается.
А вот на яндексе 2 шага регистрации и хранится прошлые данные в форме под hidden.
Я бы применял сессию(ну или куки) если бы было много постраничных форм, тогда если случайно закрыть вкладку не пришлось бы всё заного заполнять.

Спустя 5 минут, 14 секунд (16.05.2011 - 18:37) Krevedko написал(а):
Цитата (Gradus @ 16.05.2011 - 15:32)
Krevedko,хз проверил сейчас там сразу всё на одной странице вписывается.
А вот на яндексе 2 шага регистрации и хранится прошлые данные в форме под hidden.
Я бы применял сессию если бы было много постраничных форм, тогда если случайно закрыть вкладку не пришлось бы всё заного заполнять.

ага..посмотрел. ай красавцы. передают пост массивом и если нажать на адресную строку и клацнуть Ентер, кидает обратно на первую страницу ) Страшно подумать, что было бы, будь этих страниц штук 5 и на последней так пропариться

Спустя 11 часов, 59 минут, 20 секунд (17.05.2011 - 06:37) zvezda_t написал(а):
Цитата (Krevedko @ 16.05.2011 - 20:59)
Цитата (Gradus @ 16.05.2011 - 14:52)
Krevedko, зачем хранить то, что не нужно хранить :) Юзеру как-то побарабану что у него &var=true&var1=..., а с точки зрения оптимизации лучше так чем в бд заносить или в файле хранить :) даже если это кажется тупо :)

просто насколько я понял

if(!empty($_POST['create']))
{
//запись в БД
_redirect($url);
exit;

хранить все-таки надо :unsure:
типа вместо коммента будет запись в базу...или зачем тогда хранить эти данные, поясните логику скрипта.

Дата никуда не записывается.
В БД записываются только данные из второй формы. А дата устанавливается пользователем просто по желанию, и я не хочу чтобы она сбрасывалась, если пользователь отправляет вторую форму.

вторая форма:
print "
<form method='POST'>
<input type='text' />
<input type='text' />
...
<input type='submit' name='create' value='Создать'>
</form>
"
;



Цитата
Krevedko,Дата записывается в бд после заполения второй формы т.е. сначало должны пройти первую форму, а после выполнения первой записывается в сессию.
Тут вообще можно применить

foreach($_POST as $k=>$v){
echo '<input type="hidden" name="'.$k.'" value="'.$v.'">';
}

Gradus, это вставить во вторую форму?

Спустя 1 час, 51 минута, 58 секунд (17.05.2011 - 08:29) Krevedko написал(а):
ответь мне на простой вопрос. для чего тебе хранить дату ?
для себя-чисто поржать biggrin.gif (квн)

показывать ее на второй форме, но потом не сохранять ?

Цитата
Gradus, это вставить во вторую форму?

вставляй вставляй. если юзер обновит через адресную строку твою форму, то ты потеряешь свою дату. ты же не слушаешь, что тебе говорят )

Спустя 18 минут, 49 секунд (17.05.2011 - 08:48) Gradus написал(а):
Цитата
если юзер обновит через адресную строку твою форму

ага, ещё надо вирусняк написать и перехватывать события, вдруг он "случайно" нажмёт alt-F4 или закроет вкладку или во время заполения формы он "случайно" решил обновить страницу методом перезагрузки компьютера и всё это ради формы из двух кликов )))
zvezda_t,ага.

Спустя 1 час, 56 минут, 33 секунды (17.05.2011 - 10:44) Krevedko написал(а):
не поясничай )
я говорю о том, что отсутствие POST массива в этом случае вызовет красивый нотис в твоем куске кода. надо проверять существование массива пост с датой и как минимум редиректить на первую форму в случае его отсутствия.
на яндекс почте кстати так и делают
но вы можете меня не слушать конечно smile.gif

Спустя 35 минут, 44 секунды (17.05.2011 - 11:20) Krevedko написал(а):
Цитата

foreach($_POST as $k=>$v){echo '<input type="hidden" name="'.$k.'" value="'.$v.'">';}

Gradus, это вставить во вторую форму?


Меня терзают смутные сомнения...у шпака магнитофон...ой smile.gif
Вообщем это
http://phpforum.su/index.php?showtopic=44202

Точно твоя работа ? Или ворованая ? Там тоже есть форич. Почему же здесь ты про него спрашиваешь ?

Спустя 2 часа, 58 минут, 25 секунд (17.05.2011 - 14:18) Gradus написал(а):
Цитата
отсутствие POST массива в этом случае вызовет красивый нотис

Так он вроде всегда есть.
да и это для примера показал, а как с этим будут обращаться это уже другая история, не всё же самому делать smile.gif

Спустя 20 минут, 30 секунд (17.05.2011 - 14:39) Krevedko написал(а):
Цитата
Так он вроде всегда есть.

для справки. если ты обновишь страницу через ф5 или кнопку обновить, то да. А если нажмешь на строку адреса и ентер, то пост массив очистится.
В любом случае проверка нужна. Даже в случае с сессиями. Ведь могут найтись люди, которые ломануться сразу на вторую страницу )

Цитата
да и это для примера показал, а как с этим будут обращаться это уже другая история, не всё же самому делать 

боюсь вскоре последует вопрос, что делать со скрытыми полями wink.gif

Спустя 15 минут, 53 секунды (17.05.2011 - 14:55) Gradus написал(а):
Цитата
для справки. если ты обновишь страницу через ф5 или кнопку обновить, то да. А если нажмешь на строку адреса и ентер, то пост массив очистится.

Ну какая разница пуст он или нет :) он есть и нотис уже не вылезит, т.к. foreach не пойдёт по пустому массиву, опять же для справки :)
for($i=0;$i<count($mas1);$i++){

}

//Notice: Undefined variable $mas1
$mas1=array();
for($i=0;$i<count($mas1);$i++){

}

//ok

Спустя 4 минуты, 29 секунд (17.05.2011 - 14:59) Krevedko написал(а):
для справки. что тогда она будет выводить в поле Дата ? если массив пуст ? )
Редиректить в любом случае надо. И проверять на существование тоже.

Спустя 5 минут, 10 секунд (17.05.2011 - 15:04) Gradus написал(а):
Krevedko, ничего не будет выводить пока не придут post данные, ну дык я ж говорю кто как руки приложит так и выйдет smile.gif

Спустя 15 часов, 34 минуты, 8 секунд (18.05.2011 - 06:38) zvezda_t написал(а):
Цитата
ты же не слушаешь, что тебе говорят )

Как не слушаю? слушаю! я и так стораюсь изо всех сил понять, как правильно...
Krevedko, ты меня извини, но я тебя не понимаю...
Цитата
надо проверять существование массива пост с датой и как минимум редиректить на первую форму в случае его отсутствия.

Во первых у меня обе формы на одной странице, причем тут редирект?
совсем запуталась...
Цитата
Точно твоя работа ? Там тоже есть форич. Почему же здесь ты про него спрашиваешь ?

Где я спрашиваю про форич? Причем здесь вообще форич? sad.gif
Я спрашивала про то куда инпуты скрытые ставить...

Цитата
Ведь могут найтись люди, которые ломануться сразу на вторую страницу )

Какую вторую страницу? страница же одна у меня и на ней несколько форм.

Спустя 11 минут, 8 секунд (18.05.2011 - 06:50) zvezda_t написал(а):
Цитата
ответь мне на простой вопрос. для чего тебе хранить дату ?
для себя-чисто поржать biggrin.gif (квн)

показывать ее на второй форме, но потом не сохранять ?


Не смейся надо мной пожалуйста, мне сложно объяснять что-либо, когда в таком тоне разговаривают, у меня сразу руки опускаются...
Если тебе не приятно или не интересно объяснять, я не обижаюсь. Только не нужно насмехаться.

Отвечаю на твой вопрос:
У меня на странице пользователь устанавливает дату, и получает список документов на эту дату.
Ниже списка есть форма для добавления нового документа.
После создания нового документа, я хочу чтоб он его сразу увидел в том списке с установленной датой, для этого мне нужно чтоб дата не сбрасывалась.

Спустя 5 часов, 38 минут, 34 секунды (18.05.2011 - 12:28) Krevedko написал(а):
если у тебя все на одной странице, то зачем редирект ?
зачем этот огород городить. Проверяй существование даты в массиве пост и выводи юзеру вторую форму. Если даты нет, то выводи первую дату. И не нужны никакие сессии и всякий прочий бред.

Спустя 1 час, 25 минут, 56 секунд (18.05.2011 - 13:54) zvezda_t написал(а):
Цитата
если у тебя все на одной странице, то зачем редирект ?

а как же запрет повторного сохранения данных?
я редирект делаю после сохранения данных на ту же страницу.

Спустя 4 минуты, 25 секунд (18.05.2011 - 13:58) Krevedko написал(а):
какое сохранение данных ? ты что после первой формы сразу в базу пишешь ?
а если человек на второй форме браузер закроет ?

Спустя 20 минут, 17 секунд (18.05.2011 - 14:19) zvezda_t написал(а):
Цитата
ты что после первой формы сразу в базу пишешь ?
а если человек на второй форме браузер закроет ?

Krevedko
Может мы просто о разных вещах говорим?
Я тебя вообще не понимаю...

У пользователя есть формочка с полями которые нужно заполнить, он их заполняет и нажимает на кнопочку сохранить, в этот момент отправляется форма под названием:create_doc, после чего происходит редирект, чтобы повторно не было записей.

На этой же странице есть список всех документов, отсортированный по установленной дате (эта дата произвольная- устанавливается пользователем - для сортировки документов; при установки даты отправляется форма sorting (в БД никаких данных не записывается.))

Я же уже это объясняла... Ты правда меня не понимаешь совсем? или издеваешься уже? sad.gif

Спустя 8 минут, 22 секунды (18.05.2011 - 14:27) Krevedko написал(а):
Цитата
он их заполняет и нажимает на кнопочку сохранить, в этот момент отправляется форма под названием:create_doc, после чего происходит редирект, чтобы повторно не было записей


Отправляется форма. И что с данными происходит. Они куда-то пишутся ? (в базу, в файл ??) Если они никуда не пишутся, то для чего тогда делать редирект.

Спустя 7 минут, 18 секунд (18.05.2011 - 14:34) zvezda_t написал(а):
Конечно пишутся. Я же показала- происходит запись в БД

if(!empty($_POST['create']))
{
//запись в БД
_redirect($url);
exit;
}

......
print "
<form name='create_doc' method='POST'>
<input type='text' />
<input type='text' />
...
<input type='submit' name='create' value='Создать'>
</form>
"
;

Спустя 3 минуты, 41 секунда (18.05.2011 - 14:38) Krevedko написал(а):
а со второй страницы не пишуться как я понимаю ? в чем смысл второй страницы ?

Спустя 9 минут, 59 секунд (18.05.2011 - 14:48) zvezda_t написал(а):
Цитата
а со второй страницы не пишуться как я понимаю ? в чем смысл второй страницы ?

так я же тебе говорю - нету второй страницы.
Всего одна страница!
На этой страницы форма для добавления данных (create_doc) и форма для сортировки данных (sorting)

Цитата
я редирект делаю после сохранения данных на ту же страницу.


ты издеваешься, да? mad.gif

Спустя 6 минут, 19 секунд (18.05.2011 - 14:54) Krevedko написал(а):
ок не вторая страница, а вторая форма.

Спустя 15 часов, 22 минуты, 26 секунд (19.05.2011 - 06:17) zvezda_t написал(а):
Во второй форме находится группа селектов: день, месяц, год.
При изменении любого из значений, отправляется POST запрос с новой датой, эта дата участвует в запросе - выборке всех документов на данную дату и этот список документов отображается на моей странице. smile.gif


_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.