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

Содержимое index.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 
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:

$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;


А потом добавил перехват пост запроса вот в этом условии:

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

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

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

exit;

}

exit;
}


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

Тогда я попробовал отправлять через аякс пост запрос файлу sql-add.php вида:
<script type="text/javascript">
$.post(
"sql-add.php",
{
action: "sqladd1"
},
onAjaxSuccess
);

function onAjaxSuccess(data)
{
alert(data);
}
</script>


Я его вставил вот сюда:
$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 
$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." закрыто";
}
}

?>


Но опять ничего не вышло... Ни записи в бд, ни алерта даже..

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

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.