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

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

12.02.2013, 08:59. Показов 3946. Ответов 2
Метки нет (Все метки)

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

Содержимое index.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
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
<?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
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
<?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
1
2
3
4
5
6
7
8
$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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if ($action == 'postResult')
{
.....
echo "<br><br>".$htmlcode;
 
if (isset($_POST['sendok1'])){
 
echo "Ура!";
//ну и здесь скопировал все из файла sql-add.php 
 
exit;
 
}
 
    exit;
    }
Но ничего не записалось в бд...

Тогда я попробовал отправлять через аякс пост запрос файлу sql-add.php вида:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript">
$.post(
  "sql-add.php",
  {
    action: "sqladd1"
  },
  onAjaxSuccess
);
 
function onAjaxSuccess(data)
{
  alert(data);
}
</script>
Я его вставил вот сюда:
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
$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
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
<?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." закрыто";
}
}
?>
Но опять ничего не вышло... Ни записи в бд, ни алерта даже..

Укажите на ошибки плиз, а может кто знает вариант попроще и я просто ломаю голову зря?...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.02.2013, 08:59
Ответы с готовыми решениями:

Передача результатов запроса полю после нажатия кнопки
Доброе время суток, необходима помощь вот в каком вопросе, есть 3 запроса суммирующие поля в таблице и выводящие конечное число, есть форма...

Калькулятор swing: не получается в поле записать значение после нажатия кнопки
Проблема такая: не получается в поле записать значение после нажатия кнопки. Кнопки &quot;слушаются&quot; но значение в текстовое поле не...

Нужно после нажатия кнопки сразу же на странице обновить данные
Покажите на простом примере, нужен статус почти как у Дурова. Надеюсь все знают о статусе в ВК. Нужно после нажатия кнопки сразу же на...

2
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
12.02.2013, 09:08
Вот так бегло глянув,не увидел где же передается управление с index.php в sql-add.php.
Ну и раз вы постом форму дергаете, то <form action="sql-add.php" method="post"> и ловите ваши данные в $_POST.
Для AJAX особо не всматривался.
0
0 / 0 / 1
Регистрация: 06.02.2013
Сообщений: 11
12.02.2013, 12:32  [ТС]
Цитата Сообщение от rdama Посмотреть сообщение
Вот так бегло глянув,не увидел где же передается управление с index.php в sql-add.php.
Вот кусок index.php, где я передаю в sql-add.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
$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
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
<?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." закрыто";
}
}
?>

Цитата Сообщение от rdama Посмотреть сообщение
Ну и раз вы постом форму дергаете, то <form action="sql-add.php" method="post"> и ловите ваши данные в $_POST. Для AJAX особо не всматривался.
Вот так?

index.php:
PHP
1
2
3
4
5
6
7
8
9
$htmlcode = <<<HERE
 <form action="sql-add.php" method="post">
Нажмите кнопку 'Подтвердить запрос'.<br>
<input name='sendok1' type='submit' value='Подтвердить запрос' />
<div style='display:none;' id='infor'>Информация о запросе сохранена в базе данных.</div>
</form>
HERE;
    
echo "<br><br>".$htmlcode;
sql-add.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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php 
 
error_reporting(E_ALL);
ini_set('desplay_errors','1');
 
if ($_POST['sendok1'])
{
 
$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." закрыто";
}
}
?>
Добавлено через 2 часа 48 минут
запись в бд сделал!
вот кусок index.php:
PHP
1
2
3
4
5
6
7
8
9
$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
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
<?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
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
<?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>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.02.2013, 12:32
Помогаю со студенческими работами здесь

Считать дробное число из TextBox после нажатия кнопки double и записать в другое поле
private void button1_Click(object sender, EventArgs e) { summa =Convert.ToDouble( textBox2.Text); oplata =...

Angular datatables dtOptions и данные обновляются только после второго нажатия кнопки
Добрый день. Хочу сделать rerender таблицы angular-datatables &lt;button type=&quot;button&quot; class=&quot;btn btn-success m-r-sm&quot;...

Возможность вручную писать данные в ячейки StringGrid и заполнение ячеек StringGrid данными из файла после нажатия кнопки
Здравствуйте! Помогите, пожалуйста. Мне необходимо сделать следующее: реализовать возможность вручную писать данные в ячейки StringGrid...

Обработка ответа после пост-запроса (Ajax)
Разбираюсь с ajax-функциями jQuery и возник вот такой вопрос, ответ на который никак найти не могу: Например, когда мы используем...

Очистка элементов формы после пост запроса
Всем привет! Ребят подскажите пж, когда я делаю пост запрос и в контролере опять возвращаюсь на прежнюю страницу, то все мои контролы...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru