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

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

23.09.2018, 15:46. Показов 18577. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru