Записать данные из пост-запроса в БД sql после нажатия кнопки

grow23

Новичок
Всем привет. Вопрос связан с передачей данных с одной формы методом пост в переменные и последующая запись этих переменных в бд. Вся сложность заключается в том, что записать эти переменные в бд нужно после того, как форма уже отправлена (но данные на этот момент в переменных уже), а непосредственная запись в бд должна проходить после нажатия второй кнопки 'Подтвердить запрос'.
У меня есть два файла: index.php и sql-add.php.

Содержимое index.php:
PHP:
<?php
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';

if ($action == 'postResult')
{
$data1selected = $_POST['data1'];
$data2selected = $_POST['data2'];
$data3selected = $_POST['data3'];
$data4text = $_POST['data4'];
$data5text = $_POST['data5'];
$data6text = $_POST['data6'];
$data7text = $_POST['data7'];
$data8text = $_POST['data8'];


	echo '<b>Данные с формы следующие:</b><br>';
	if ($data1selected!='')
	{	
	echo '<br>Поле data1: '.$data1selected;
	}
	else
	{echo '<br>Поле data1 пустое!';}

if ($data2selected!='')
	{	
	
	echo '<br>Поле data2: '.$data2selected;
	}
	else
	{echo '<br>Поле data1 пустое!';}

..пропущу часть условий, тут и так думаю все ясно...

	if ($data8text!='')
	{	
	
	echo '<br>Поле data8: '.$data8text;
	}
	else
	{echo '<br>Поле data8 пустое.';}	

$htmlcode = <<<HERE
Нажмите кнопку 'Подтвердить запрос'.<br>
<input name='sendok1' type='submit' value='Подтвердить запрос'  onclick='infor.style.display="block"' />
<div style='display:none;' id='infor'>Информация о запросе сохранена в базе данных.</div>
HERE;
	
echo "<br><br>".$htmlcode;
    exit;
}

<html>
<head>
    <title>тест</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
	</head>
<body>
 <form action="index.php" method="post">
	
 <b>Данные запроса</b><br>
Дата1:	    <select name="data1">
 <option>1</option>
  <option>2</option></select>
  <br>
  Дата2:	    <select name="data2">
 <option>1</option>
  <option>2</option></select>
  <br>
  
..пропущу часть условий, тут и так думаю все ясно...

<br><label for="data8">Дата8:</label> <input id="data8" name="data8" type = "text" > <br>
  <input type="hidden" name="action" value="postResult" />
       <br> <br><input name="sendzapros" type="submit" value="отправить">
    </form>

	</body>
</html>
содержимое sql-add.php:
PHP:
<?php 
error_reporting(E_ALL);
ini_set('desplay_errors','1');


$host='localhost';
$database='bazaname';
$user='bazauser';
$pswd='123';

$dbconn = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
 
 if (!$dbconn) {
echo "Ошибка подключения к серверу MySQL<br>";
exit;
}
echo "Соединение с сервером MySQL усановлено<br>";
if (!mysql_select_db($database)) {
echo "Ошибка при выборе БД ".$database." MySQL<br>";
exit;

}
echo "Выбор БД ".$database." MySQL произведен успешно<br>";

$data1='дата1';
$data2="data2";
$data3="data3";
$data4="data4";
..пропущу...
$data8="data8";
mysql_query("INSERT INTO Table1 (data1,data2,data3,data4,(здесь еще 5,6,7),data8) values ('$data1','$data2','$data3', '$data4', '(здесь еще 5,6,7)', '$data8')");
echo "В таблицу Table1 добавлены данные запроса <br>";

if (mysql_close($dbconn)) {
echo "Соединение с БД ".$host." закрыто";
}
?>
Мой вопрос заключается в следующем: как можно записать в бд bazaname данные data1...data8 после нажатия кнопки 'Подтвердить запрос' ?

Я пробовал через аякс вот так правил участок index.php:

PHP:
$htmlcode = <<<HERE
<form id='forma' target='index' action='index.php' method='POST'>
Нажмите кнопку 'Подтвердить запрос'.<br>
<input name='sendok1' type='submit' value='Подтвердить запрос'  onclick='infor.style.display="block"' />
<div style='display:none;' id='infor'>Информация о запросе сохранена в базе данных.</div>
</form>
<iframe name='index' frameborder='0' src='index.php' width='0' height='0' scrolling='no'></iframe>
HERE;
А потом добавил перехват пост запроса вот в этом условии:

PHP:
if ($action == 'postResult')
{
.....
echo "<br><br>".$htmlcode;

if (isset($_POST['sendok1'])){

echo "Ура!";
//ну и здесь скопировал все из файла sql-add.php 

exit;

}

    exit;
	}
Но ничего не записалось в бд...

Тогда я попробовал отправлять через аякс пост запрос файлу sql-add.php вида:
PHP:
<script type="text/javascript">
$.post(
  "sql-add.php",
  {
    action: "sqladd1"
  },
  onAjaxSuccess
);
 
function onAjaxSuccess(data)
{
  alert(data);
}
</script>
Я его вставил вот сюда:
PHP:
$htmlcode = <<<HERE
 <script type="text/javascript">
   function sqladdfunc()
        {
$.post(
  "sql-add.php",
  {
    action: "sqladd1"
  },
  onAjaxSuccess
);
 
function onAjaxSuccess(data)
{
  alert(data);
}
}
</script>
Нажмите кнопку 'Подтвердить запрос'.<br>
<input name='sendok1' type='submit' value='Подтвердить запрос'  onclick='sqladdfunc();' />
<div style='display:none;' id='infor'>Информация о запросе сохранена в базе данных.</div>
HERE;
	
echo "<br><br>".$htmlcode;
А в файле sql-add.php сделал перехват этого поста:

PHP:
<?php 
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';

error_reporting(E_ALL);
ini_set('desplay_errors','1');

if ($action == 'sqladd1')
{

$host='localhost';
$database='bazaname';
$user='bazauser';
$pswd='123';

$dbconn = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
 
 if (!$dbconn) {
echo "Ошибка подключения к серверу MySQL<br>";
exit;
}
echo "Соединение с сервером MySQL усановлено<br>";
if (!mysql_select_db($database)) {
echo "Ошибка при выборе БД ".$database." MySQL<br>";
exit;

}
echo "Выбор БД ".$database." MySQL произведен успешно<br>";

$data1='дата1';
$data2="data2";
$data3="data3";
$data4="data4";
..пропущу...
$data8="data8";
mysql_query("INSERT INTO Table1 (data1,data2,data3,data4,(здесь еще 5,6,7),data8) values ('$data1','$data2','$data3', '$data4', '(здесь еще 5,6,7)', '$data8')");
echo "В таблицу Table1 добавлены данные запроса <br>";

if (mysql_close($dbconn)) {
echo "Соединение с БД ".$host." закрыто";
}
}
?>
Но опять ничего не вышло... Ни записи в бд, ни алерта даже..

Укажите на ошибки плиз, а может кто знает вариант попроще и я просто ломаю голову зря?...
 

С.

Продвинутый новичок
Не надо лезть в Аякс, пока не освоены более базовые операции.

Сценарий следующий:
1. форма передает данные скрипту 2
2. "вырожденная" форма с теми же данными в скрытых полях и кнопкой подтверждения, передает данные скрипту 3
3. записывает данные в базу
 

grow23

Новичок
Не надо лезть в Аякс, пока не освоены более базовые операции.

Сценарий следующий:
1. форма передает данные скрипту 2
2. "вырожденная" форма с теми же данными в скрытых полях и кнопкой подтверждения, передает данные скрипту 3
3. записывает данные в базу
1. Какая именно форма и какому скрипту 2?

2.
PHP:
$htmlcode = <<<HERE
 <form action="что тут писать?" method="post">
Нажмите кнопку 'Подтвердить запрос'.<br>
<input name='sendok1' type='submit' value='Подтвердить запрос' />
 <input type="hidden" name="action" value="sqladd" /> 
<div style='display:none;' id='infor'>Информация о запросе сохранена в базе данных.</div>
</form>
HERE;
    
echo "<br><br>".$htmlcode;
Это в index.php ? А как перехватить тут же?

3. Из какого файла? Из sql-add.php ?
 

grow23

Новичок
запись в бд сделал!
вот кусок index.php:
PHP:
$htmlcode = <<<HERE
 <form action="sql-add.php" method="post">
Нажмите кнопку 'Подтвердить запрос'.<br>
<input name='sendok1' type='submit' value='Подтвердить запрос' />
 <input type='hidden' name='action' value='sqlresult' />
<div style='display:none;' id='infor'>Информация о запросе сохранена в базе данных.</div>
</form>
HERE;
echo "<br><br>".$htmlcode;
а вот sql-add.php:
PHP:
<?php 
 
error_reporting(E_ALL);
ini_set('desplay_errors','1');
 $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
 
if ($action == 'sqlresult')
{
 
$host='localhost';
$database='bazaname';
$user='bazauser';
$pswd='123';
 
$dbconn = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
 
 if (!$dbconn) {
echo "Ошибка подключения к серверу MySQL<br>";
exit;
}
echo "Соединение с сервером MySQL усановлено<br>";
if (!mysql_select_db($database)) {
echo "Ошибка при выборе БД ".$database." MySQL<br>";
exit;
 
}
echo "Выбор БД ".$database." MySQL произведен успешно<br>";
 
$data1='дата1';
$data2="data2";
$data3="data3";
$data4="data4";
..пропущу...
$data8="data8";
mysql_query("INSERT INTO Table1 (data1,data2,data3,data4,(здесь еще 5,6,7),data8) values ('$data1','$data2','$data3', '$data4', '(здесь еще 5,6,7)', '$data8')");
echo "В таблицу Table1 добавлены данные запроса <br>";
 
if (mysql_close($dbconn)) {
echo "Соединение с БД ".$host." закрыто";
}
}
?>
Однако хотелось бы записать в БД значения переменных $data1, $data2, $data3 ...$data8 со страницы index.php, а не с sql-add.php. То есть я хочу записать $data1selected, $data2selected и т.д. в БД. А они формируются здесь в index.php:
PHP:
<?php
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
 
if ($action == 'postResult')
{
$data1selected = $_POST['data1'];
$data2selected = $_POST['data2'];
$data3selected = $_POST['data3'];
$data4text = $_POST['data4'];
$data5text = $_POST['data5'];
$data6text = $_POST['data6'];
$data7text = $_POST['data7'];
$data8text = $_POST['data8'];
 
 
    echo '<b>Данные с формы следующие:</b><br>';
    if ($data1selected!='')
    {   
    echo '<br>Поле data1: '.$data1selected;
    }
    else
    {echo '<br>Поле data1 пустое!';}
 
if ($data2selected!='')
    {   
    
    echo '<br>Поле data2: '.$data2selected;
    }
    else
    {echo '<br>Поле data1 пустое!';}
 
..пропущу часть условий, тут и так думаю все ясно...
 
    if ($data8text!='')
    {   
    
    echo '<br>Поле data8: '.$data8text;
    }
    else
    {echo '<br>Поле data8 пустое.';}    
 
$htmlcode = <<<HERE
Нажмите кнопку 'Подтвердить запрос'.<br>
<input name='sendok1' type='submit' value='Подтвердить запрос'  onclick='infor.style.display="block"' />
<div style='display:none;' id='infor'>Информация о запросе сохранена в базе данных.</div>
HERE;
    
echo "<br><br>".$htmlcode;
    exit;
}
 
<html>
<head>
    <title>тест</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    </head>
<body>
 <form action="index.php" method="post">
    
 <b>Данные запроса</b><br>
Дата1:      <select name="data1">
 <option>1</option>
  <option>2</option></select>
  <br>
  Дата2:        <select name="data2">
 <option>1</option>
  <option>2</option></select>
  <br>
  
..пропущу часть условий, тут и так думаю все ясно...
 
<br><label for="data8">Дата8:</label> <input id="data8" name="data8" type = "text" > <br>
  <input type="hidden" name="action" value="postResult" />
       <br> <br><input name="sendzapros" type="submit" value="отправить">
    </form>
 
    </body>
</html>
 

С.

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