Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/88: Рейтинг темы: голосов - 88, средняя оценка - 4.67
26 / 0 / 0
Регистрация: 23.09.2018
Сообщений: 11

Редирект после отправки формы

23.09.2018, 15:46. Показов 18482. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане.

При написании формы столкнулся с проблемой повторной отправки оной при перезагрузке страницы. Все банально и ничего нового. Понимаю, что чтобы избежать этого, нужно выполнить что-то в этом роде:
PHP
1
header('Refresh: 0; URL=redirect.php');
Но ума не приложу, где это применить..... Пытался сделать так, но не работает:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<form action="edit.php?id=<?php echo $clients['id']; ?>" method="POST">
<div class="form-group">
<?php   
if ( isset($data['save_percent']) )
{
$errors = array();
if ( trim($data['percent']) == '' )
{
$errors[] = 'Введите числовое значение';
}
if ( empty($errors) )
{
$clients->percent = $data['percent'];
R::store($clients);
echo
header('Refresh: 0; URL=edit.php?id=<?php echo $clientss["id"]; ?>');
}
}
?>
<div class="form-group input-group">
<input type="text" name="percent" class="form-control" placeholder="Указать процент" value="<?php echo @$data['percent']; ?>">
<span class="input-group-addon">%</span>
</div>
<button type="submit" name='save_percent' class="btn btn-primary">Сохранить</button>
</form>
По моей логике после сохранения результата должен происходить редирект на эту же страницу. Но моя логика тут не работает.

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

Если не сложно, подскажите, пожалуйста, что я делаю не так? Как правильно это осуществить?

Заранее благодарен за возможные ответы.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.09.2018, 15:46
Ответы с готовыми решениями:

Как сделать редирект после отправки формы
Привет всем, подскажите плиз, как сделать редирект на страницу &quot;Спасибо за сообщение&quot;, после того как была отправлена форма. Вот...

Редирект после отправки "Формы обратной связи"
В общем есть форма обратной связи нужно что бы после нажатия кнопки &quot;отправить&quot; юзера перекидывало на главную страницу index.php в...

Как сделать редирект после отправки письма?
Пытаюсь сделать редирект с задержкой после вывода сообщения с надписью &quot;Сообщение отправлено&quot;. &lt;?php /* Здесь...

17
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
23.09.2018, 16:17
Лучший ответ Сообщение было отмечено tish88 как решение

Решение

tish88, все никак не соберусь написать что-нибудь по этому поводу.

Используйте официальный заголовок Location с последующим выходом, чтобы не выводить содержимое. Естественно, все это нужно делать до начала вывода.

Добавлено через 2 минуты
Можете поискать на форуме по моему нику и ключу "перенаправление". Вот, например:
Сообщение после отправки письма

Добавлено через 1 минуту
Только ищите в разделе "PHP".
0
26 / 0 / 0
Регистрация: 23.09.2018
Сообщений: 11
23.09.2018, 18:00  [ТС]
Phantom-84, спасибо большое за ответ. Читал ту тему. Но что-то вот у меня никак не идет... Я тут в итоге такие махинации насовершал, что у меня ошибки полетели со всех фронтов)) Лучше б вообще я с этим редиректом не связывался...

В общем, весь этот код, который я описал выше, находился у меня на странице edit.php А там у меня и обработчик формы, и сама форма, и еще не весь знает что. Но тем не менее без редиректа все работало. С попыткой впихнуть редирект, у меня было два варианта: либо ничего не происходило, либо header ругался на то, что присутствует html-разметка. Писал его так:
PHP
1
2
header('Location: /success');
exit;
Ну, думаю, ладно - запихну обработчик отдельно и создал form.php, чтобы никаких html ему не было:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
require_once __DIR__ . '/../db.php';
$data = $_POST;
if ( isset($data['save_percent']) )
    {
    $errors = array();
        if ( trim($data['percent']) == '' )
        {
        $errors[] = 'Введите числовое значение';
        }
        if ( empty($errors) )
        {
        $clients->percent = $data['percent'];
        R::store($clients);
        }   
    }       
?>
На странице с формой я сослался на этот обработчик.
HTML5
1
2
3
4
5
6
7
8
<form action="forms/form.php" method="POST">
<label>Процент, %:</label>
<div class="form-group input-group">
<input type="text" name="percent" class="form-control" placeholder="Вписать процент (общее значение)" value="<?php echo @$data['percent']; ?>">
<span class="input-group-addon">%</span>
</div>
<button type="submit" name='save_percent' class="btn btn-primary">Сохранить</button>
</form>
В итоге:
Code
1
2
3
Warning: Creating default object from empty value in C:\OSPanel\domains\localhost\forms\form.php on line 15
 
Fatal error: Uncaught RedBeanPHP\RedException: OODB Store requires a bean, got: object in C:\OSPanel\domains\localhost\libs\rb.php:8070 Stack trace: #0 C:\OSPanel\domains\localhost\libs\rb.php(8309): RedBeanPHP\OODB->unboxIfNeeded(Object(stdClass)) #1 C:\OSPanel\domains\localhost\libs\rb.php(10627): RedBeanPHP\OODB->store(Object(stdClass)) #2 C:\OSPanel\domains\localhost\forms\form.php(16): RedBeanPHP\Facade::store(Object(stdClass)) #3 {main} thrown in C:\OSPanel\domains\localhost\libs\rb.php on line 8070
Из этого я понял, что запись в бд не осуществилась, так как он видит ошибку тут:
PHP
1
2
$clients->percent = $data['percent'];
R::store($clients);
Но ведь работало, когда не было в отдельном файле.... Беда короч.
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
23.09.2018, 18:31
Цитата Сообщение от tish88 Посмотреть сообщение
Лучше б вообще я с этим редиректом не связывался...
Без него нормально не получится. Я же вам написал, что перенаправление нужно делать до начала вывода. Вот еще одна тема по указанным мной критериям:
Отмена перезагрузки страницы
0
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2
23.09.2018, 19:41
tish88, возможно, Вам поможет мой недавний ответ: Как отправить ajax-данные из поле value
Но, правда, там AJAX.
Т.е. идея в том, чтобы отправлять данные через JS, а его оформить в виде функции. При этом функция эта будет срабатывать только при нажатии на кнопку, а при (пере)загрузке страницы - ничего не будет.
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
23.09.2018, 20:02
Htext, даже при использовании AJAX не мешает продублировать отправку обычным способом.

По этой же причине лучше писать так:
JavaScript
1
return f();
0
26 / 0 / 0
Регистрация: 23.09.2018
Сообщений: 11
23.09.2018, 20:51  [ТС]
Phantom-84, продолжаю осиливать.

И так. Мы имеем файл edit.php с содержимым формы:
HTML5
1
2
3
4
5
6
7
8
<form action="forms/form.php" method="POST">
<label>Процент, %:</label>
<div class="form-group input-group">
<input type="text" name="percent" class="form-control" placeholder="Вписать процент (общее значение)" value="<?php echo @$data['percent']; ?>">
<span class="input-group-addon">%</span>
</div>
<button type="submit" name='save_percent' class="btn btn-primary">Сохранить</button>
</form>
Форма открывается по адресу:
PHP
1
edit.php?id=<?php echo $clients['id']; ?>
И обработчик формы, который является файлом form.php. В него я ставлю header Location самым первым:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
require_once __DIR__ . '/../db.php';
header ('Location: /../index.php');
exit ();
$data = $_POST;
if ( isset($data['save_percent']) )
    {
    $errors = array();
        if ( trim($data['percent']) == '' )
        {
        $errors[] = 'Введите числовое значение';
        }
        if ( empty($errors) )
        {
        $clients->percent = $data['percent'];
        R::store($clients);
        }   
    }       
?>
В этом случае, я получаю успешный редирект на index.php, но запись не происходит. Ну, и пользователя нужно отправлять обратно на страницу edit.php Но я смутно представляю, как в Location прописать это:
PHP
1
edit.php?id=<?php echo $clients['id']; ?>
Прописал пока так (потом буду думать уже, как быть с такой записью):
PHP
1
2
header ('Location: /../edit.php?id=24');
exit;
Тестирую пока все равно с одним определенным id пока.
Пока пишу, пробую пойти дальше, так как почему-то не происходит запись. "До начала вывода". А что у нас вывод? Вывод - это конец обработчика. Пробую так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
require_once __DIR__ . '/../db.php';
$data = $_POST;
if ( isset($data['save_percent']) )
    {
    $errors = array();
        if ( trim($data['percent']) == '' )
        {
        $errors[] = 'Введите числовое значение';
        }
        if ( empty($errors) )
        {
        $clients->percent = $data['percent'];
        R::store($clients);
        header ('Location: /../edit.php?id=24');
        exit();
        }   
    }       
?>
То есть сразу после записи данных. И получаю вновь:
Code
1
2
3
Warning: Creating default object from empty value in C:\OSPanel\domains\localhost\forms\form.php on line 15
 
Fatal error: Uncaught RedBeanPHP\RedException: OODB Store requires a bean, got: object in C:\OSPanel\domains\localhost\libs\rb.php:8070 Stack trace: #0 C:\OSPanel\domains\localhost\libs\rb.php(8309): RedBeanPHP\OODB->unboxIfNeeded(Object(stdClass)) #1 C:\OSPanel\domains\localhost\libs\rb.php(10627): RedBeanPHP\OODB->store(Object(stdClass)) #2 C:\OSPanel\domains\localhost\forms\form.php(16): RedBeanPHP\Facade::store(Object(stdClass)) #3 {main} thrown in C:\OSPanel\domains\localhost\libs\rb.php on line 8070
Ок, забыл указать таблицу. Указал:
PHP
1
$clients = R::dispense('clients');
Теперь получил:
Code
1
Fatal error: Uncaught [HY000] - SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value trace:
Прошелся по всем полям, где не указаны значения по умолчанию и поставил NULL.
И этим сделал большую глупость, так как теперь все мои сохраненные значения создают новые записи в таблице, а не перезаписывают существующие (а ведь ошибка мне так и кричала, что пытается заполнить поля каким-то значением!).
Как итог, я пришел к выводу, что я с самого начала все делал не верно. То есть вместо того, чтобы перезаписывать, я старательно пытался создавать новые записи с единственным заполненным полем. Потому и ошибка выше.
Но одно не могу понять - почему же тогда все работало в одном файле?!

Кстати, Phantom-84, спасибо Вам огромное!) Вот редирект теперь работает))) Только он один работает как надо Единственное, я не могу понять, как сделать редирект на ту же страницу, где и был пользователь (пример выше писал).

Добавлено через 30 минут
А на сколько правильно вот такое решение, вместо Location, в моем случае?
PHP
1
2
header('Refresh: 0; URL='.$_SERVER['HTTP_REFERER']);
exit();
То есть как раз отправка на ту страницу, с которой пишел.
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
23.09.2018, 22:02
Цитата Сообщение от tish88 Посмотреть сообщение
В этом случае, я получаю успешный редирект на index.php, но запись не происходит.
Так вы сразу выполняете exit, а я в последней теме писал, что это нужно делать по условию в самом конце (и вызов header туда же "спустите").

Цитата Сообщение от tish88 Посмотреть сообщение
Единственное, я не могу понять, как сделать редирект на ту же страницу, где и был пользователь (пример выше писал).
Делайте перенаправление "на себя", т.е. на '/edit.php?id='.$_POST['id']. Вы должны передавать id в скрытом поле формы, раз вы не передаете его в обработчик в адресе (как на страницу формы). И лучше проверять корректность id перед обновлением записи.

Цитата Сообщение от tish88 Посмотреть сообщение
А на сколько правильно вот такое решение, вместо Location, в моем случае?
Это неофициальный заголовок, к тому вы используете сомнительную в плане использования в данном контексте переменную. И в любом случае заголовок нужно отправлять до начала вывода. Т.е. в общем-то то же самое, только по многим причинам хуже.

Добавлено через 6 минут
Я бы все-таки объединил в одном обработчике вывод страницы формы и обработку присылаемых данных. Но не обязательно в одном файле. Такие вещи принято распределять по разным файлам, например:
PHP
1
2
3
4
5
6
7
8
<?php
 
if ($_SERVER['REQUEST_METHOD']=[=]='POST') {
    require(POST_HANDLERS_PATH.'clients.php');
    exit;
}
 
...
Добавлено через 2 минуты
Перед этим ветвлением можно в любом случае получать запись из базы данных, для вывода данных на страницу в случае GET или для проверки id в случае POST. И REST-каркас, делающий такую выборку и проверку самостоятельно, был бы не лишним, например:
GET /clients/1 - подготовка данных клиента 1 с проверкой его существования для вывода;
POST /clients/1 - подготовка данных клиента 1 с проверкой его существования для сохранения с перенаправлением.
0
26 / 0 / 0
Регистрация: 23.09.2018
Сообщений: 11
24.09.2018, 08:09  [ТС]
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Так вы сразу выполняете exit, а я в последней теме писал, что это нужно делать по условию в самом конце (и вызов header туда же "спустите").
Затупил. Но все равно пришел к нужному знаменателю, когда перечитал Ваши слова раз 100))
Цитата Сообщение от Phantom-84 Посмотреть сообщение
раз вы не передаете его в обработчик в адресе (как на страницу формы)
Вот опять глупость моя. На форму так сделал, а сделать также для обработчика что-то не позволило))

Только обучаюсь, поэтому часто теряюсь в элементарных ситуациях.

Phantom-84, огромное человеческое спасибо за помощь и терпение!

Добавлено через 24 минуты
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Я бы все-таки объединил в одном обработчике вывод страницы формы и обработку присылаемых данных. Но не обязательно в одном файле. Такие вещи принято распределять по разным файлам, например:

PHP
1
2
3
4
5
6
<?php
if ($_SERVER['REQUEST_METHOD']=[=]='POST') {
* * require(POST_HANDLERS_PATH.'clients.php');
* * exit;
}
...
Добавлено через 2 минуты
Перед этим ветвлением можно в любом случае получать запись из базы данных, для вывода данных на страницу в случае GET или для проверки id в случае POST. И REST-каркас, делающий такую выборку и проверку самостоятельно, был бы не лишним, например:
GET /clients/1 - подготовка данных клиента 1 с проверкой его существования для вывода;
POST /clients/1 - подготовка данных клиента 1 с проверкой его существования для сохранения с перенаправлением.
Спасибо, но вот это вот мне пока очень сложно даже для восприятия. Методы GET и POST, а также работу с ними я очень плохо понимаю пока. В планах на ближайшие дни как раз полноценное изучение этих методов.

Добавлено через 8 часов 49 минут
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Делайте перенаправление "на себя", т.е. на '/edit.php?id='.$_POST['id']. Вы должны передавать id в скрытом поле формы, раз вы не передаете его в обработчик в адресе (как на страницу формы). И лучше проверять корректность id перед обновлением записи.
По итогу у меня заработало так:
PHP
1
header ('Location: /edit.php?id='. $_GET['id']);
После того, как я передал id в адресе. Тут все просто. А вот как все это проделать с POST - для меня пока загадка, так как если вместо _GET ставлю _POST, то ничего не работает.

Добавлено через 36 минут
Логично, что надо передать значение со страницы с формой, но куда там его прикрутить - не ясно.
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
24.09.2018, 12:39
$_POST['id'] я вам написал на случай использования скрытого поля формы. Но вполне логично передавать id через адрес, как вы это сделали. Правда, мне не совсем понятно, как у вас "заработало так", если вы не передавали id в обработчик в адресе? Вернулись к использованию одного адреса (файла), как я вам советовал? Если у вас обработчик по-прежнему находится в form.php, то вы должны к его адресу в теге form добавлять GET-параметр id (GET-параметры могут быть и у POST-запросов). Если - в edit.php, то тоже можно добавлять GET-параметр к edit.php, либо просто указать в атрибуте action "унаследованный" текущий адрес или оставить значение атрибута пустым. В дополнение к этому можно добавить к адресу какой-нибудь якорь, например #form.

Цитата Сообщение от tish88 Посмотреть сообщение
Методы GET и POST, а также работу с ними я очень плохо понимаю пока. В планах на ближайшие дни как раз полноценное изучение этих методов.
Вы их уже используете
0
26 / 0 / 0
Регистрация: 23.09.2018
Сообщений: 11
24.09.2018, 14:23  [ТС]
Цитата Сообщение от Phantom-84 Посмотреть сообщение
$_POST['id'] я вам написал на случай использования скрытого поля формы.
Да, это я понял. Но вот передать id через форму я так и не понял как. Атрибут "value" в форме у меня занят этим "
Code
1
<?php echo @$data['percent']; ?>"
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Правда, мне не совсем понятно, как у вас "заработало так", если вы не передавали id в обработчик в адресе?
Я передал id в итоге, так для меня проще. То есть как Вы и говорите:
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Если у вас обработчик по-прежнему находится в form.php, то вы должны к его адресу в теге form добавлять GET-параметр id
Но вот теперь хочу понять, как это сделать, если не передавать id. Понятно, что можно так:
PHP
1
header('Refresh: 0; URL='.$_SERVER['HTTP_REFERER']);
Но, во-первых, Вы сказали, что так не очень хорошо, а во-вторых, хочу понять, как это сделать методом POST.
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Вернулись к использованию одного адреса (файла), как я вам советовал?
Разные файлы. Тут дело вот в чем: страница edit у меня содержит как вывод записей из бд, так и редактирование оных. Изначально я все запилил туда - и обработчики, и формы, и вывод записей.... В итоге просто запутался, так как код получился адовый и решил растащить все по файлам. Как минимум обработчики.
Еще возникло подозрение, что нужный мне запрос к бд обрабатывает не этот обработчик, а тот, который у меня там выше.
Так хотя бы мне стало ясно, что вот есть форма, а вот есть обработчик, на который ссылается форма. Да, оно не работает как мне надо, но зато хоть теперь стало понятно что и за что отвечает.
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Вы их уже используете
Использую методом тыка)) Точнее так - если с GET все более чем понятно, то вот POST для меня темный лес - использую по памяти, что где-то видел, что надо как-то так.
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
24.09.2018, 15:08
Цитата Сообщение от tish88 Посмотреть сообщение
Разные файлы. Тут дело вот в чем: страница edit у меня содержит как вывод записей из бд, так и редактирование оных.
Нескольких записей одновременно? Или только одной, в форму?

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

Если вы используете в вашей ORM (драйвер) MySQL, могу сделать приглашение на тестирование простого REST-каркаса, в котором вы можете в одном обработчике написать распределение (т.н. "ручную маршрутизацию") обработки между несколькими файлами. Т.е. можно легко добавить к тому, о чем я писал ранее (GET /clients/1 и POST /clients/1), обработку запроса GET /clients для вывода списка записей.

Добавлено через 8 минут
Цитата Сообщение от tish88 Посмотреть сообщение
Атрибут "value" в форме у меня занят этим
Можно же использовать отдельное поле типа hidden с именем id. Это и называется скрытым полем формы Но я вам по-прежнему советую использовать адреса для передачи id.
0
26 / 0 / 0
Регистрация: 23.09.2018
Сообщений: 11
24.09.2018, 15:29  [ТС]
Бинго!)) Осилил все то, что хотел сделать. В общем, также все в разных файлах, но заработало как надо. Для этого пришлось код выписывать на бумажку и проводить сравнение того, почему раньше работало, а сейчас нет. Всплыли все мои косяки: так как я для каждый формы писал каждый раз новый обработчик, то допустил глупую ошибку и получилось так, что данную форму обрабатывал предыдущий обработчик. В общем, там ад творился. А когда я вынес форму отдельно, то перестало работать. И именно по этой причине, header не хотел отрабатывать у меня в самом начале. И именно по этой причине я тупил с тем, куда запихать этот редирект)) Перепись кода на бумажку в моем случае стала спасением))
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Нескольких записей одновременно? Или только одной, в форму?
Одна в форму. То есть в ту или иную таблицу, в то или иное поле - несколько форм в итоге.
Например: есть клиент и для него выставляются определенные параметры, которые редко редактируются все вместе.
Визуально формы выглядят так: поле->кнопка "сохранить"; поле->кнопка сохранить.
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Как я вам выше показывал, можно разносить обработку по нескольким файлам, изначально принимая запрос в одном.
Вот теперь, когда я все как надо сделал, так и поступлю, спасибо)) Вообще, хочу попробовать каждую форму с обработчиком распихать по отдельным файлам и вызывать формы модальными окнами.
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Если вы используете в вашей ORM (драйвер) MySQL, могу сделать приглашение на тестирование простого REST-каркаса
Было бы очень здорово!
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
24.09.2018, 15:43
Цитата Сообщение от tish88 Посмотреть сообщение
Визуально формы выглядят так: поле->кнопка "сохранить"; поле->кнопка сохранить.
Структурно это то же самое, что и единая форма для клиента. Просто вы в форме указываете имя изменяемого поля, а в обработчике проверяете, есть ли такое поле (вы и при сохранении предварительно выбираете всю запись, поэтому вам доступен список ее полей), и, если есть, то обновляете значение. Можно даже сравнивать сами значения, чтобы не делать "холостое" обновление базы данных, когда новое значение не отличается от текущего.

Цитата Сообщение от tish88 Посмотреть сообщение
Было бы очень здорово!
Ознакомьтесь с оставленным вам отзывом.
0
26 / 0 / 0
Регистрация: 23.09.2018
Сообщений: 11
24.09.2018, 16:18  [ТС]
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Структурно это то же самое, что и единая форма для клиента.
По итогу так скорее всего и сделаю. Главное было разобраться вообще с формой, чтоб все заработало как часики.
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Ознакомьтесь с оставленным вам отзывом.
Да, увидел
0
26 / 0 / 0
Регистрация: 23.09.2018
Сообщений: 11
24.09.2018, 16:19  [ТС]
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Структурно это то же самое, что и единая форма для клиента.
По итогу так скорее всего и сделаю. Главное было разобраться вообще с формой, чтоб все заработало как часики.
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Ознакомьтесь с оставленным вам отзывом.
Да, увидел
0
26 / 0 / 0
Регистрация: 23.09.2018
Сообщений: 11
24.09.2018, 16:27  [ТС]
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Структурно это то же самое, что и единая форма для клиента.
По итогу так скорее всего и сделаю. Главное было разобраться вообще с формой, чтоб все заработало как часики.
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Ознакомьтесь с оставленным вам отзывом.
Да, увидел
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
24.09.2018, 16:41

Не по теме:

Видимо, с форумом какие-то проблемы. Я их тоже наблюдаю.



Цитата Сообщение от tish88 Посмотреть сообщение
Главное было разобраться вообще с формой, чтоб все заработало как часики.
В принципе уже все написано. Чем отличается REST-каркас от просто файла, в котором вы делаете разветвление обработки GET- и POST-запросов? Он выполняет это самостоятельно:
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Перед этим ветвлением можно в любом случае получать запись из базы данных, для вывода данных на страницу в случае GET или для проверки id в случае POST.
В частности при указании в адресе неверного или некорректного id самостоятельно выдает ответ с кодом 404 и т.п. Но, как я выше написал, перед основным ветвлением вы можете самостоятельно проверить id в адресе, сделать предвыборку записи в едином обработчике и только после этого "разветвлять на GET и POST".

Добавлено через 5 минут
Также каркас позволяет прикрепить один обработчик, выполняющий по сути одни и те же действия, к разным таблицам, например:
/clients/1 -> handler
/vendors/1 -> handler
и т.п. Хотя вам ничто не мешает добавить к адресу обработчика параметр с именем таблицы, например:
/handler.php?id=1&table=clients
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.09.2018, 16:41
Помогаю со студенческими работами здесь

Redirect после отправки формы
Доброго времени суток, подскажите пожалуйста, как мне сделать редирект! код весь работает, после отправки формы, вывожу сообщение что все...

Закрытие окна после отправки формы
Есть страница с данными из БД, на этой же страничка есть кнопка добавить, при нажатию на которую открывается окно через window.open(), в...

Не создается сессия после отправки формы
Здравствуйте! Есть код: if (isset($_POST)) { $_SESSION=$_POST; } &lt;form method=&quot;post&quot;...

Сохранение GET параметра, после отправки формы
Делаю калькулятор, в котором примеры берутся из json файла, а json файл выбирается GET параметром. Если написать ?test=1 то данные...

После отправки формы, создание страницы
Здравствуйте, изучаю PHP, и мне надо что-бы при отправке формы, типа POST, в корне сайта создавался PHP-Файл с уже прописанными...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru