Перейти к содержимому


Переход в редактирование записи после insert_query


Сообщений в теме: 9

#1 dev77rus

    Активный участник

  • Пользователи
  • PipPipPip
  • 114 сообщений
  • Пол:Мужчина

Отправлено 02 Ноябрь 2012 - 10:57

Здравствуйте,
есть дополнительное действие, которое выполняется в таблице создает такую-же запись но с измененными данными функцией insert_query - увеличивается дата, и пр. Часть данных в новую запись нужно вносить руками.

Как сделать так, чтобы после дополнительного действия осуществлялся переход в эту новую запись и в режиме редактирования?
Можно ли ограничить дополнительное действие тем, чтобы оно работало только в режиме просмотра записи, и при множественном выборе строк в таблице не срабатывло?

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 02 Ноябрь 2012 - 11:13

1. Используйте php-функцию header для перенаправления.
2. После перенаправления поставьте exit - действие сработает только для первой записи.

#3 dev77rus

    Активный участник

  • Пользователи
  • PipPipPip
  • 114 сообщений
  • Пол:Мужчина

Отправлено 02 Ноябрь 2012 - 12:20

А какой аргумент для header нужно использовать? Правильно я понимаю, что код должен быть типа

<?php
header
("Location: http://www.example.com/"); /* Редирект браузера */
/* Убедитесь, что код приведённый ниже не исполняется во время нашего перехода */

exit;
?>


Что в данном случае должно быть после Location:, какой-то внешний адрес страницы установленной базы?

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 02 Ноябрь 2012 - 12:25

Все правильно понимаете. Адрес может быть и относительный, например "view_line2.php?table=111&line=222"

#5 dev77rus

    Активный участник

  • Пользователи
  • PipPipPip
  • 114 сообщений
  • Пол:Мужчина

Отправлено 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");

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 02 Ноябрь 2012 - 13:53

Подскажите еще немного, как в эту строку встроить текущий фильтр таблицы, а то его значение сбрасывается на "по умолчанию"
Так подставьте в адресную строку параметр нужного фильтра: "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 dev77rus

    Активный участник

  • Пользователи
  • PipPipPip
  • 114 сообщений
  • Пол:Мужчина

Отправлено 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, например.
Мне не хотелось бы в коде выставлять прямые значения, это неудобно.

#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 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 oknik

    Активный участник

  • Пользователи
  • PipPipPip
  • 99 сообщений

Отправлено 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

что то надо подкорректировать видимо все таки в данном коде?
(у аккаунта подключен свой домен)

Сообщение отредактировал oknik: 24 Июль 2017 - 23:52


#10 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 25 Июль 2017 - 11:48

Ошибка по причине того, что в переменной $insertTableID у вас пусто или 0, соответственно view_line2.php ругается на некорректный id таблицы.





Количество пользователей, читающих эту тему: 5

0 пользователей, 5 гостей, 0 анонимных