@MonsieurEnzo

Как реализовать добавление данных в БД из двух form на одной странице?

Есть index php, в ней есть FORM1 (POST) при нажатии на submit появляется всплывающее окно (по средствам CSS). В этом окне есть FORM2 (POST).
Хранение данных из FORM1 реализовал через $_SESSION = array();

FORM1 (POST)
<form id="form_calc" action="index.php#win1" method="POST">
					<select id="fugure" name="type_fugure" required placeholder="Высота">
						<option value="" disabled selected>Тип фигуры:</option>
						<option value="par">Параллелипиед</option>
						<option value="scil">Цилиндр</option>
					</select>
					<p><input class="par_q" min="1" maxlength="10" type="text" placeholder="Длинна" name="length">
						<select class="par_q" name="ed_izm_length">
							<option selected value="metr">М</option>
							<option value="centimetr">СМ</option>
						</select></p>
						<p><input min="1" maxlength="10" type="text" required placeholder="Высота" name="height">
							<select name="ed_izm_height">
								<option selected value="metr">М</option>
								<option value="centimetr">СМ</option>
							</select></p>
							<p><input class="par-scil" min="1" maxlength="10" type="text" required placeholder="Ширина" name="width">
								<select name="ed_izm_width">
									<option selected value="metr">М</option>
									<option value="centimetr">СМ</option>
								</select></p>
								<p><input style="width: 97%;" id="quantity" min="1" maxlength="100" type="text" required placeholder="Колличество" name="quantity"></p>

								<input style="width: 100%;" name="do_get_ras" type="submit" value="Рассчитать">

							</form>


Модальное окно c FORM2 (Обработчик PHP FORM1, FORM2)
//модальное окно, по средствам CSS3
<?php 
	$type_fugure = $_POST['type_fugure'];

	$ed_izm = array(
		'ed_izm_length' => $_POST['ed_izm_length'],
		'ed_izm_height' => $_POST['ed_izm_height'],
		'ed_izm_width' => $_POST['ed_izm_width']);

	$ed = 1;
	foreach ($ed_izm as $ed_q) {
		if($ed_q == 'centimetr'){
			$ed *= 100;
		}
	}

	if( $type_fugure == 'par'){
						//Паралелограмм
		$par = array(
			'length' => $_POST['length'],
			'height' => $_POST['height'],
			'width' => $_POST['width'],
			'quantity' => $_POST['quantity']);

		$result_par = $par['length'] * $par['height'] * $par['width'];
		if($ed > 1) {
			$result_par /= $ed;
		}

		echo 'Объем 1 прямоугольного параллелипиеда составил ' . $result_par . ' м3</br>';
		echo 'Объем 3 прямоугольных параллелипиедов составил ' . $result_par * 3 . ' м3';

	} else {
						//Цилиндр
		$scil = array(
			'height' => $_POST['height'],
			'diametr' => $_POST['diametr'],
			'quantity' => $_POST['quantity']);

		$result_scil = $scil['height'] * $scil['diametr'];
		if($ed > 1) {
			$result_scil /= $ed;
		}

		echo 'Объем 1 цилиндра составил ' . $result_scil . ' м3</br>';
		echo 'Объем 3 цилиндров составил ' . ($result_scil * 3) . ' м3';

	}
	if($type_fugure == 'par'){
		$scil = array(
			'length' => $_POST['length'],
			'height' => $_POST['height'],
			'width' => $_POST['width'],
			'diametr' => 0,
			'quantity' => $_POST['quantity'],
			'amount' => $result_par);
		$_SESSION['session'] = serialize($scil);
	} else {
		$par = array(
			'length' => 0,
			'height' => $_POST['height'],
			'width' => 0,
			'diametr' => $_POST['diametr'],
			'quantity' => $_POST['quantity'],
			'amount' => $result_scil);
		$_SESSION['session'] = serialize($par);
	}

	?>
/*немного HTML*/

//FORM2
<form action="" method="POST">
		<p><input min="1" maxlength="50" type="text" required placeholder="ФИО" name="fio"></p>
		<p><input min="7" maxlength="11" type="text" required placeholder="Телефон" name="telephone"></p>
		<p><input min="1" type="text" required placeholder="Email" name="email"></p>

		<input style="width: 100%;" name="do_get" type="submit" value="Отправить">
</form>

	<?php					

			$session = unserialize($_SESSION['session']);

			if( ($session['amount'] > 0) && (isset($_POST['do_get'])) ){
				

      //Добавить комментарий
			mysqli_query($connection, "INSERT INTO `db1` (`id`, `length`, `width`, `hight`, `diametr`, `quantity`, `amount`, `pubdate`, `fio`, `telephone`, `email`) VALUES (NULL,'" .(int) $session['length'] . "', '" .(int) $session['width'] . "', '" .(int) $session['height'] . "', '" .(int) $session['diametr'] . "', '" .(int) $session['quantity'] . "', '" .(int) $session['amount'] . "', NOW(), '" . $_POST['fio'] . "', '" . $_POST['telephone'] . "', '" . $_POST['email'] . "')");

			echo '<span style="color:green;font-weight:bold;margin-bottom:10px;display:block;">Комментарий успешно добавлен!</span>';
			print_r($session);
		}
	?>

//конец модального окно, по средствам CSS3


Вопрос: Как сделать так что-бы данные с двух форм обрабатывались и отправлялись сразу в BD.
При том раскладе что я сейчас имею - добавляются данные только с FORM1, а FORM2 по нулям. Либо наоборот
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ответы на вопрос 1
djdeniro
@djdeniro
DeNet
Попробуй промежуточный итог записывать в сессию, а во время 2 запроса вытащи то что лежит в сессии.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы