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

Несколько форм html на одной странице и на один обработчик php

18.11.2016, 19:22. Показов 3986. Ответов 7
Метки php (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Если кто сможет помочь, буду очень признателен.
Дело вот в чем: Есть страница сайта, на которой находится несколько форм для отправки данных на эту же страницу с целью получения значений для переменных и вывода их на этой же странице. При отправке данных с одной формы, все полученные ранее данные с другой формы обнуляются (по логике вещей отправляются данные со всех форм одновременно). Как можно этого избежать???
Вот код всей страницы:
HTML5
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<head>
<title>Расчет сметы на ремонтно-отделочные работы</title>
</head>
<body>
<?php   
$pol = $_POST['pol'];
$stena = $_POST['stena'];
$potolok = $_POST['potolok'];
$dveri = $_POST['dveri'];
$santehnika = $_POST['santehnika'];
$elektrika = $_POST['elektrika']; 
$br1 = $_POST['br1'];
$br2 = $_POST['br2'];
$br3 = $_POST['br3'];
$br4 = $_POST['br4'];
?>
 
 
<?php
//Цены
$c1 = 80; //демонтаж линолеума (без сохранения)
$c2 = 100; //демонтаж ламината (без сохранения)
?>
<table id="office" width="100%">
    <tr>
        <td colspan="7"><p id="vibor">Смета на ремонтно-отделочные работы</p></td>
    </tr>
<?php
if ( $_POST['pol'] == 'yes' || $_POST['br1'] > 0 || $_POST['br3'] > 0) {
echo '<tr>
 <td colspan="7"><p id="vibor">Раздел № 1 Полы</p></td>
 </tr>
 <tr>
 <td colspan="7"><p id="vibor">Демонтажные работы</p></td>
 </tr>
 <tr>
 <td><p id="knopka">№ П\П</p></td>
 <td><p id="knopka">Наименование</p></td>
 <td><p id="knopka">Ед. изм.</p></td>
 <td><p id="knopka">Цена за ед. изм.</p></td>
 <td width="90"><p id="knopka">Количество</p></td>
 <td width="187"><p id="knopka">Быстрый расчет</p></td>
 <td width="100"><p id="knopka">Добавить в смету</p></td>
 </tr>
 <tr>
 <td><p id="knopka">1</p></td>
 <td>Демонтаж линолеума (без сохранения)</td>
 <td><p id="knopka">м²</p></td>
 <td><p id="knopka">', $c1," руб.", '</p></td>
 <td><input type="number" min="0" max="100000" step="1" name="k1" value="', $br1 * $br2, '"/></td>
 <td><table style="border-width: 0px;">
<form id="form2" action="" method="POST">
    <tr>
        <td style="border-width: 0px;"><input type="number" min="0" max="100000" step="1" name="br1" placeholder="Ширина" /></td>
        <td rowspan="2" style="border-width: 0px;"><input type="image" src="http://srv73275.ht-test.ru/wp-content/uploads/2016/11/32.png" style="width: 47px;" id="form2" form="form2" /></td>
    </tr>
    <tr>
        <td style="border-width: 0px;"><input type="number" min="0" max="100000" step="1" name="br2" placeholder="Длина" /></td>
    </tr>
</form>
</table></td>
 <td><p id="knopka"><input type="checkbox" name"r1" value="yes" checked></p></td>
 </tr>
<tr>
 <td><p id="knopka">2</p></td>
 <td>Демонтаж ламината (без сохранения)</td>
 <td><p id="knopka">м²</p></td>
 <td><p id="knopka">', $c2," руб.", '</p></td>
 <td><input type="number" min="0" max="100000" step="1" name="k1" value="', $br3 * $br4, '"/></td>
 <td><table style="border-width: 0px;">
<form id="form3" action="" method="POST">
    <tr>
        <td style="border-width: 0px;"><input type="number" min="0" max="100000" step="1" name="br3" placeholder="Ширина" /></td>
        <td rowspan="2" style="border-width: 0px;"><input type="image" src="http://srv73275.ht-test.ru/wp-content/uploads/2016/11/32.png" style="width: 47px;" id="form3" form="form3" /></td>
    </tr>
    <tr>
        <td style="border-width: 0px;"><input type="number" min="0" max="100000" step="1" name="br4" placeholder="Длина" /></td>
    </tr>
</form>
</table></td>
 <td><p id="knopka"><input type="checkbox" name"r2" value="yes" checked></p></td>
 </tr> ';}
?>
</table>
</body>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.11.2016, 19:22
Ответы с готовыми решениями:

Как узнать кнопка какой формы была нажата, если на странице имеется несколько форм, а обработчик один?
Здравствуйте! Подскажите пожалуйста, как узнать кнопка какой из форм была нажата, чтоб можно было в обработчики создать условия? Вот...

Несколько форм на одной странице
Здравствуйте! Типа страницу регистрации, в которой есть две разные формы(для пациентов и врачей) разделенные nav-tab'ами. В зависимости...

Обработчик php форм html
Мне нужно из 3 форм на отдельных страницах переслать данные в 1 php обработчик. Причём После завершения заполнения 1 формы человек должен...

7
Native x86
Эксперт Hardware
 Аватар для quwy
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
18.11.2016, 19:32
Цитата Сообщение от Viktor050391 Посмотреть сообщение
по логике вещей отправляются данные со всех форм одновременно
Это не так. Сохраняйте локально джаваскриптом, или объединяйте все формы в одну.
0
0 / 0 / 0
Регистрация: 18.11.2016
Сообщений: 5
18.11.2016, 19:46  [ТС]
Цитата Сообщение от quwy Посмотреть сообщение
Это не так. Сохраняйте локально джаваскриптом, или объединяйте все формы в одну.
Не покажите пример?

Добавлено через 6 минут
С java пока не дружу. А на счет объединения всех форм в одну, не получиться, т.к. в том то и дело, что все эти формы будут отправляться по очередности или в хаотичном порядке (в дальнейшем добавятся еще кучу форм такого же рода), а при отправке одной, все значения другой формы обнуляются т.к. в инпутах других форм значения отсутствуют или равны 0 (что собственно в данном случае одно и то же).
0
 Аватар для TrustNo1
78 / 78 / 35
Регистрация: 08.09.2013
Сообщений: 397
18.11.2016, 20:34
Цитата Сообщение от Viktor050391 Посмотреть сообщение
... все полученные ранее данные с другой формы обнуляются . Как можно этого избежать???
Используйте 1 форму на всю страницу. Если данные в каком-то поле изменились - отображаем изменения, если нет - предыдущее значение
0
0 / 0 / 0
Регистрация: 18.11.2016
Сообщений: 5
18.11.2016, 20:47  [ТС]
Цитата Сообщение от TrustNo1 Посмотреть сообщение
Используйте 1 форму на всю страницу. Если данные в каком-то поле изменились - отображаем изменения, если нет - предыдущее значение
Логично. Не могли бы Вы показать это на моем примере? Ну или хотя бы указать в каком направлении двигаться? Теоретически понимаю, но пока не догоняю как это реализовать. В плане именно выводить только те значения, которые изменились. Веди при отправке формы, отправляются все значения, в том числе и те, которых нет, а они получается равны нулю, от этого значения и сбрасываются.
Локальное сохранение только что пробовал, безрезультатно! (через php, может что неправильно сделал, не уверен.)
0
 Аватар для TrustNo1
78 / 78 / 35
Регистрация: 08.09.2013
Сообщений: 397
18.11.2016, 20:53
Цитата Сообщение от Viktor050391 Посмотреть сообщение
при отправке формы, отправляются все значения, в том числе и те, которых нет, а они получается равны нулю, от этого значения и сбрасываются
Если значения нет, то что сбрасывается тогда?

Цитата Сообщение от Viktor050391 Посмотреть сообщение
В плане именно выводить только те значения, которые изменились.
Выводите на экран все переменные в поле value. Если значение переменной пустое - ничего не отобразится
0
0 / 0 / 0
Регистрация: 18.11.2016
Сообщений: 5
18.11.2016, 21:32  [ТС]
Цитата Сообщение от TrustNo1 Посмотреть сообщение
Выводите на экран все переменные в поле value. Если значение переменной пустое - ничего не отобразится
Да нет) Вы не поняли) Вернее я скорее всего не доступно объяснил.
Данные, которые я беру из инпутов присваиваются переменной, после еще в одном инпуте отображается перемноженное значение этих переменных. Ниже приложу скриншот для большего понимания.
Ну в общем-то Вы абсолютно правы.
Нужно все формы объединить в одну и присвоить всем кнопкам один id между собой и с формой, а в value каждого инпута подставить значения соответствующих элементов. В результате при повторной отправке якобы другой формы, форма отправляет те же самые значения, что и в первый раз, от чего итоговое значение остается неизменным, в то время, когда новые значения рассчитываются.
Спасибо Вам большое! Очень помогли.
Вот готовый код, может кому пригодиться.
HTML5
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<head>
<title>Расчет сметы на ремонтно-отделочные работы</title>
</head>
<body>
<?php
  session_start();
  $_SESSION["br1"] = $_POST["br1"];
  $_SESSION["br2"] = $_POST["br2"];
  $_SESSION["br3"] = $_POST["br3"];
  $_SESSION["br4"] = $_POST["br4"];
?>
<?php
$pol = $_POST['pol'];
$stena = $_POST['stena'];
$potolok = $_POST['potolok'];
$dveri = $_POST['dveri'];
$santehnika = $_POST['santehnika'];
$elektrika = $_POST['elektrika']; 
$br1 = $_POST['br1'];
$br2 = $_POST['br2'];
$br3 = $_POST['br3'];
$br4 = $_POST['br4'];
?>
 
<?php
//Цены
$c1 = 80; //демонтаж линолеума (без сохранения)
$c2 = 100; //демонтаж ламината (без сохранения)
?>
<form action="" method="POST" id="form1">
<table id="office" width="100%">
    <tr>
        <td colspan="7"><p id="vibor">Смета на ремонтно-отделочные работы</p></td>
    </tr>
<?php
if ( $_POST['pol'] == 'yes' || $_POST['br1'] > 0 || $_POST['br3'] > 0) {
echo '<tr>
 <td colspan="7"><p id="vibor">Раздел № 1 Полы</p></td>
 </tr>
 <tr>
 <td colspan="7"><p id="vibor">Демонтажные работы</p></td>
 </tr>
 <tr>
 <td><p id="knopka">№ П\П</p></td>
 <td><p id="knopka">Наименование</p></td>
 <td><p id="knopka">Ед. изм.</p></td>
 <td><p id="knopka">Цена за ед. изм.</p></td>
 <td width="90"><p id="knopka">Количество</p></td>
 <td width="187"><p id="knopka">Быстрый расчет</p></td>
 <td width="100"><p id="knopka">Добавить в смету</p></td>
 </tr>
 <tr>
 <td><p id="knopka">1</p></td>
 <td>Демонтаж линолеума (без сохранения)</td>
 <td><p id="knopka">м²</p></td>
 <td><p id="knopka">', $c1," руб.", '</p></td>
 <td><input type="number" min="0" max="100000" step="1" name="k1" value="', $br1 * $br2, '"/></td>
 <td><table style="border-width: 0px;">
    <tr>
        <td style="border-width: 0px;"><input type="number" min="0" max="100000" step="1" name="br1" placeholder="Ширина" value="', $br1, '" /></td>
        <td rowspan="2" style="border-width: 0px;"><input type="image" src="http://srv73275.ht-test.ru/wp-content/uploads/2016/11/32.png" style="width: 47px;" id="form1" form="form1" /></td>
    </tr>
    <tr>
        <td style="border-width: 0px;"><input type="number" min="0" max="100000" step="1" name="br2" placeholder="Длина" value="', $br2, '" /></td>
    </tr>
</table></td>
 <td><p id="knopka"><input type="checkbox" name="r1" value="yes" checked></p></td>
 </tr>
<tr>
 <td><p id="knopka">2</p></td>
 <td>Демонтаж ламината (без сохранения)</td>
 <td><p id="knopka">м²</p></td>
 <td><p id="knopka">', $c2," руб.", '</p></td>
 <td><input type="number" min="0" max="100000" step="1" name="k1" value="', $br3 * $br4, '"/></td>
 <td><table style="border-width: 0px;">
    <tr>
        <td style="border-width: 0px;"><input type="number" min="0" max="100000" step="1" name="br3" placeholder="Ширина" value="', $br3, '" /></td>
        <td rowspan="2" style="border-width: 0px;"><input type="image" src="http://srv73275.ht-test.ru/wp-content/uploads/2016/11/32.png" style="width: 47px;" id="form1" form="form1" /></td>
    </tr>
    <tr>
        <td style="border-width: 0px;"><input type="number" min="0" max="100000" step="1" name="br4" placeholder="Длина" value="', $br4, '" /></td>
    </tr>
</table></td>
 <td><p id="knopka"><input type="checkbox" name="r2" value="yes" checked></p></td>
 </tr> ';}
?>
</table>
</form>
</body>
Миниатюры
Несколько форм html на одной странице и на один обработчик php  
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
18.11.2016, 23:04
Цитата Сообщение от Viktor050391 Посмотреть сообщение
<td><p id="knopka">№ П\П</p></td> <td><p id="knopka">Наименование</p></td> <td><p id="knopka">Ед. изм.</p></td> <td><p id="knopka">Цена за ед. изм.</p></td>
прикольно одинаковых id на страници туева туча. id должен быть уникальным(на то он и идентификатор)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.11.2016, 23:04
Помогаю со студенческими работами здесь

Несколько форм на одной странице Yii2
Я добавляю 4 формы на страницу. Но получаю ошибку &quot;Call to a member function isAttributeRequired() on a non-object&quot;. Я так понимаю Yii...

Несколько web форм на одной странице
Всем привет! Знаю что такая тема уже была, но так как я не большой специалист в js, то самостоятельно разобраться не получилось. Есть...

Несколько форм обратной связи на одной странице
Всем привет. Уже долгое время мучаюсь, никак не могу найти готовое решение, а собственных знаний js столь мало, что они никак не...

Несколько форм обратной связи на одной странице
Всем доброго времени суток. Не могу настроить на лендинге несколько форм обратной связи. Одна работает при копировании кода, а другие...

Несколько однообразный форм на одной странице. Обработка
Опять буду надоедать людям)) Есть список чего-то. Пусть будет книг, например. Этот список выводится из модели Book. Для каждого поля...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru