Передача адресной строки в другой скрипт и обратно

krafty

new Exception
Передача адресной строки в другой скрипт и обратно

На страничке изменения новостей edit.php есть ссылка <изменить>, которая вызывает скрипт change.php.
Как можно через массив POST передать из edit.php в change.php адресную строку целиком $_SERVER[QUERY_STRING]?
Это нужно для того, чтобы потом вернутся из change.php в то место edit.php, где был пользователь до вызова change.php.
В edit.php есть своя форма, отправляющая данные методом GET.
 

Фанат

oncle terrible
Команда форума
krafty
вторая попытка.
ещё раз, подробно и связно, описываешь задачу и сопутствующие обстоятельства.
в частности - почему нельзя экшеном формы сделать ту самую адресную строку, а после обработки формы на неё же перенаправить гетом.
 

krafty

new Exception
По твоему настрою понял, что третьей не будет.
Сейчас попытаюсь.
Скрипт edit.php показывает новости, удовлетворяющие запросу. Параметры запроса вводятся в форму. По нажатию на submit формируются ссылки для навигации, которые содержат все поля формы. Под каждой новостью есть ссылка <изменить>, которая выглядит так: change.php?news_id=$id.
Скрипт change.php занимается внесением изменений в новость.
В нем есть ссылка, возращающая нас назад на edit.php. Ее (тобишь ссылку) можно нажать после внесения изменений. Если edit.php вызывается без параметров, то показывается только форма (та которая для ввода параметров запроса). А для того, чтобы вызывать edit с параметрами, их надо где-то хранить.
В связи с этим нужно сохранить состояние, в котором мы покинули edit.php. т.е. запомнить текущую страницу (навигационную ссылку), параметры запроса - короче адресную строку.
 

Сергей123

Новичок
Не уверен, но, по-моему, это случай, когда можно всё, от чего завист edit.php положить в сессию, а ссылку каждый раз формировать на основе этих сессионных данных (естественно, эта "фильтрационная форма" на edit должна уходить GETом).
 

chisto_tolyan

Враг народа
а нафига так все усложнять?)Нельзя все в одном файле обрабатывать?
 

krafty

new Exception
Сергей, вы имеете ввиду сохранять в сессии $_SERVER[QUERY_STRING]?
Т.е. в edit.php пишем
session_start();
$_SESSION('stroka')=$_SERVER[QUERY_STRING];
А в change.php ссылку формируем так:
session_start();
"edit.php?".$_SESSION('stroka')
 

Фанат

oncle terrible
Команда форума
Сергей глупость советует.

krafty
какая проблема передать нужные тебе параметры в хидден полях формы?
 

Сергей123

Новичок
Хм... Примерно (правда, я думал не строку запроса сохранять, а сами "параметры фильтрации"). Ещё раз повторю: всё это, - если я правильно понял задачу. Кроме того это не единственное решение.
странный у вас синтаксис работы с $_SESSION
 

krafty

new Exception
Фанат. При нажатии на ссылку <изменить> формы уже нет. Как отправлять данные из формы, когда нажимаем на ссылку, а не на кнопку формы? Объясни пожалуйста, я не могу понять!
 

bgm

&nbsp;
Исходя из того, если я правильно понял задачу, то не надо морочить самому себе голову, и передавать всё через параметры ссылки (читай - "адресную строку").
 

krafty

new Exception
Блин. Ну разве я не мог до такого додуматься???? Затупил вообще!!! Хотя $id - это не параметр формы!
Т.е. "change.php?news_id=$id&stroka=".$_SERVER[QUERY_STRING].
А в change.php по прежнему: "edit.php?".$_GET('stroka').
Правда в этом скрипте прийдется 2 раза передавать stroka - я еще забыл про кнопочку ПРИМЕНИТЬ ИЗМЕНЕНИЯ.
Короче такое все закрученное.
Фаната я так и не понял. Хидден поля зачем?
 

ayrat9

Новичок
если ты добавишь hidden-поле в форму скрипта edit.php
то в change.php ты сможешь оперировать значением переменной $_POST["hidden_string"] и подставлять ее в значение ссылки:

<a href="<?php echo $_POST["hidden_string"]; ?>">back</a>

PS: если конечно я правильно понял вопрос
 

krafty

new Exception
ЛЮДИ!!! change.php вызвывается по ссылке, а не по нажатию на кнопку формы. Форма в edit.php нужна только для фильтрации новостей. Когда жмем на ссылку, то с этой формы уже ничего не отправляется. Тогда нужна вторая форма с методом POST. Но я не пойму как ей пользоваться и где ее размещать (в каком месте скрипта edit.php).
А если по-другому можно передавать по ссылке адресную строку
 

Сергей123

Новичок
Если я всё правильно понял :)
hidden поле при этом варианте решения надо в POST-форме редактирования на change-странице.
 

krafty

new Exception
Только что пробывал. Работает так, как я написал в посте от 17.08.05 15:11. Только строку при передаче из edit.php надо кодировать UrlEncode(). Ну а потом, конечно, раскодировать - UrlDecode().
Не знаю правильно это или нет. Но все работает. Цель достигнута - при изменении новости и возвращении на страницу edit.php сразу видны все изменения. Спасибо всем, кто натолкнул на мысль.

-~{}~ 17.08.05 15:52:

Сергей! А смысл? Почему форма, которая передает данные, должна находиться в скрипте, который эти данные получает.
 

Сергей123

Новичок
я, видимо, чего-то таки не понял; я думал, что (в предложенном варианте) имеется в виду, что для того чтобы не потерять "куда потом вернуться на edit", нужно на change-странице положить это "куда вернуться" в hidden-поле формы редактирования; короче, сделал - и ладно
 
Сверху