3
Переход в редактирование записи после insert_query
Автор dev77rus, 02 нояб. 2012 10:57
Сообщений в теме: 9
#1
Отправлено 02 Ноябрь 2012 - 10:57
Здравствуйте,
есть дополнительное действие, которое выполняется в таблице создает такую-же запись но с измененными данными функцией insert_query - увеличивается дата, и пр. Часть данных в новую запись нужно вносить руками.
Как сделать так, чтобы после дополнительного действия осуществлялся переход в эту новую запись и в режиме редактирования?
Можно ли ограничить дополнительное действие тем, чтобы оно работало только в режиме просмотра записи, и при множественном выборе строк в таблице не срабатывло?
есть дополнительное действие, которое выполняется в таблице создает такую-же запись но с измененными данными функцией insert_query - увеличивается дата, и пр. Часть данных в новую запись нужно вносить руками.
Как сделать так, чтобы после дополнительного действия осуществлялся переход в эту новую запись и в режиме редактирования?
Можно ли ограничить дополнительное действие тем, чтобы оно работало только в режиме просмотра записи, и при множественном выборе строк в таблице не срабатывло?
#2
Отправлено 02 Ноябрь 2012 - 11:13
1. Используйте php-функцию header для перенаправления.
2. После перенаправления поставьте exit - действие сработает только для первой записи.
2. После перенаправления поставьте exit - действие сработает только для первой записи.
#3
Отправлено 02 Ноябрь 2012 - 12:20
А какой аргумент для header нужно использовать? Правильно я понимаю, что код должен быть типа
<?php
header("Location: http://www.example.com/"); /* Редирект браузера */
/* Убедитесь, что код приведённый ниже не исполняется во время нашего перехода */
exit;
?>
Что в данном случае должно быть после Location:, какой-то внешний адрес страницы установленной базы?
<?php
header("Location: http://www.example.com/"); /* Редирект браузера */
/* Убедитесь, что код приведённый ниже не исполняется во время нашего перехода */
exit;
?>
Что в данном случае должно быть после Location:, какой-то внешний адрес страницы установленной базы?
#4
Отправлено 02 Ноябрь 2012 - 12:25
Все правильно понимаете. Адрес может быть и относительный, например "view_line2.php?table=111&line=222"
#5
Отправлено 02 Ноябрь 2012 - 13:30
Спасибо! Что-то получается...
Подскажите еще немного, как в эту строку встроить текущий фильтр таблицы, а то его значение сбрасывается на "по умолчанию".
Нормально ли, что эта функция идет практически в конце кода доп.действия? В ее описании есть информация, что она должна идти в начале кода страницы, или это не относится к данному случаю? Возможно ли заменить все числовые значения в этой строке переменными? Как присвоить переменной $cur_filter значение-номер текущего фильтра, а переменной $cur_table значение-номер текущей таблицы?
$new_id = insert_query($data,"Таблица");
header("Location: view_line2.php?table=55&line=".$new_id."&edit_mode");
Подскажите еще немного, как в эту строку встроить текущий фильтр таблицы, а то его значение сбрасывается на "по умолчанию".
Нормально ли, что эта функция идет практически в конце кода доп.действия? В ее описании есть информация, что она должна идти в начале кода страницы, или это не относится к данному случаю? Возможно ли заменить все числовые значения в этой строке переменными? Как присвоить переменной $cur_filter значение-номер текущего фильтра, а переменной $cur_table значение-номер текущей таблицы?
$new_id = insert_query($data,"Таблица");
header("Location: view_line2.php?table=55&line=".$new_id."&edit_mode");
#6
Отправлено 02 Ноябрь 2012 - 13:53
Подскажите еще немного, как в эту строку встроить текущий фильтр таблицы, а то его значение сбрасывается на "по умолчанию"
Так подставьте в адресную строку параметр нужного фильтра: "view_line2.php?table=111&filter=222&line=333". Я же только пример перенаправления привел, никто не мешает задать вам любой другой адрес.
Возможно ли заменить все числовые значения в этой строке переменными? Как присвоить переменной $cur_filter значение-номер текущего фильтра, а переменной $cur_table значение-номер текущей таблицы?
Разумеется возможно. Кроме того, эти переменные уже есть: $table_id и $filter_id. Таким образом, ваш итоговый код будет выглядеть так:
Нормально ли, что эта функция идет практически в конце кода доп.действия? В ее описании есть информация, что она должна идти в начале кода страницы, или это не относится к данному случаю?
Вы путаете несколько разные вещи. Функция header должна идти до любого вывода какой-либо информации на сайт (т.е. грубо говоря до любого "echo"), делать какие-либо иные действия вам никто не запрещает. В случае перенаправления как раз скорее наоборот - т.к. любые действия после header('Location') становятся бессмысленными (за редким исключением).
Так подставьте в адресную строку параметр нужного фильтра: "view_line2.php?table=111&filter=222&line=333". Я же только пример перенаправления привел, никто не мешает задать вам любой другой адрес.
Возможно ли заменить все числовые значения в этой строке переменными? Как присвоить переменной $cur_filter значение-номер текущего фильтра, а переменной $cur_table значение-номер текущей таблицы?
Разумеется возможно. Кроме того, эти переменные уже есть: $table_id и $filter_id. Таким образом, ваш итоговый код будет выглядеть так:
$new_id = insert_query($data,"Таблица"); header("Location: view_line2.php?table=$table_id&filter=$filter_id&line=$new_id&edit_mode");
Нормально ли, что эта функция идет практически в конце кода доп.действия? В ее описании есть информация, что она должна идти в начале кода страницы, или это не относится к данному случаю?
Вы путаете несколько разные вещи. Функция header должна идти до любого вывода какой-либо информации на сайт (т.е. грубо говоря до любого "echo"), делать какие-либо иные действия вам никто не запрещает. В случае перенаправления как раз скорее наоборот - т.к. любые действия после header('Location') становятся бессмысленными (за редким исключением).
#7
Отправлено 02 Ноябрь 2012 - 14:42
искал зарезервированные переменные в документации, не смог найти.
С прямыми значениями все понятно, но т.к. фильтров несколько, хотелось чтобы активным оставался текущий.
Переменная $table_id работает, а $filter_id почему-то нет
Это код:
header("Location: view_line2.php?table=$table_id&filter=$filter_id&line=$new_id&edit_mode");
А это адрес страницы после отработки:
.../cb/view_line2.php?table=55&filter=&line=6646&edit_mode
Почему-то значение фильтра пустое, хотя должно быть 67, например.
Мне не хотелось бы в коде выставлять прямые значения, это неудобно.
С прямыми значениями все понятно, но т.к. фильтров несколько, хотелось чтобы активным оставался текущий.
Переменная $table_id работает, а $filter_id почему-то нет
Это код:
header("Location: view_line2.php?table=$table_id&filter=$filter_id&line=$new_id&edit_mode");
А это адрес страницы после отработки:
.../cb/view_line2.php?table=55&filter=&line=6646&edit_mode
Почему-то значение фильтра пустое, хотя должно быть 67, например.
Мне не хотелось бы в коде выставлять прямые значения, это неудобно.
#8
Отправлено 02 Ноябрь 2012 - 14:47
Да, $filter_id нет среди зарезервированных. Тогда используйте прямое получение параметра адресной строки: $_GET['filter']
header("Location: view_line2.php?table=$table_id&filter=".$_GET['filter']."&line=$new_id&edit_mode");
#9
Отправлено 24 Июль 2017 - 23:50
а если из стандартного конфига взять вот этот кусок и воткнуть в свое новое созданное доп действие, все должно будет работать? а то че то ошибка вылетает.
что то надо подкорректировать видимо все таки в данном коде?
(у аккаунта подключен свой домен)
// в конце переходим по ссылке echo "<script> location.href='",$config["site_root"],"/view_line.php?table=",$insertTableID,"&line=",$inserted_id,"&back_url=",$base64_current_url,"' </script>";
Цитата
Ошибка системы.
Error generated:
/home/account-name/public_html/view_line2.php(101) : get_table()
Invalid table_id: 0
Error generated:
/home/account-name/public_html/view_line2.php(101) : get_table()
Invalid table_id: 0
что то надо подкорректировать видимо все таки в данном коде?
(у аккаунта подключен свой домен)
Сообщение отредактировал oknik: 24 Июль 2017 - 23:52
#10
Отправлено 25 Июль 2017 - 11:48
Ошибка по причине того, что в переменной $insertTableID у вас пусто или 0, соответственно view_line2.php ругается на некорректный id таблицы.
Количество пользователей, читающих эту тему: 4
0 пользователей, 4 гостей, 0 анонимных