Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
ice-creame
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 14
#1

Связь хранимой процедуры и формы - PHP БД/MySQL

14.02.2018, 17:26. Просмотров 385. Ответов 16
Метки нет (Все метки)

Здравствуйте,помогите,пожалуйста
Есть такая хранимая процедура, которая считает площадь и вносит данные в таблицу
MySQL
1
2
3
4
5
CREATE PROCEDURE square (А DECIMAL(10,2) ,В DECIMAL(10,2) )
BEGIN
set @pp =А*В;
INSERT INTO Заказ (ШиринаА,ДлинаВ,Площадь) VALUES (А,В,@pp );
End //
Есть такая форма

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<div class="info"> 
      <form action="forma.php" method="POST">
 
    <div class="cleft">
        <p >Длина</p>
    </div>  
   <input type="decimal(10,2)" name="А" value size="40" >   // А,В Входные параметры хп
    <div class="cright ">
        <p>Ширина</p>
    <input type="decimal(10,2)" name="В" value size="40">   
     </div>
      <input type="submit" name="web_form_submit" value="Отправить заявку"> 
</form>
</div>
Мне необходимо,чтобы пользователь вводил данные в поля формы длина и ширина(эти данные подставлялись во входные параметры хп ) и по нажатию на кнопку срабатывала хп
Я пробовала таким способом
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php 
include('soed.php')
if(isset($_POST['web_form_submit']))
{
 
 = $_POST['А'];
 = $_POST['В'];
$q=mysql_query("set @param='$А'");
$q=mysql_query("set @param2='$В'");
$q=mysql_query("CALL square (@param,@param2);");
}
?>
но данные вводимые в поля формы не вставляются в таблицу бд
В php не шарю
Подскажите, пожалуйста,как решить этот вопрос???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2018, 17:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос MySQL Связь хранимой процедуры и формы (PHP БД):

Вызов хранимой процедуры
Доброго времени суток проблема в том что не могу вызвать из php хранимую...

Параметры хранимой процедуры
Можно ли при вызове хранимой процедуры из PHP передавать как параметры...

Вывод результата хранимой процедуры
Здравствуйте, не могу разобраться с выводом результата хранимой процедуры. У...

PHP. Вызов хранимой процедуры с параметрами
Привет ПєХєПєшникам! Пересоздам тему здесь, ибо в разделе для MySQL ей не...

Ошибка при создании хранимой процедуры
CREATE PROCEDURE addPercent() BEGIN Declare done int default 0; ...

Связь html формы и программы на php
Здравствуйте, помогите пожалуйста! Вопрос глупый, но ответа так нигде и не...

16
otto-fukin
8 / 44 / 17
Регистрация: 15.06.2017
Сообщений: 382
14.02.2018, 19:46 #2
Цитата Сообщение от ice-creame Посмотреть сообщение
input type="decimal(10,2)"
есть такой тип инпут?
а процедура - то вообще создалась? а то какие-то непонятки с делимитером, то ли меняете вы его то ли нет..
0
ice-creame
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 14
14.02.2018, 20:18  [ТС] #3
В Workbench Mysql процедура работает, там все хорошо
input type="decimal(10,2)" так написала, потому что у входного параметра процедуры такой тип данных и в таблице куда должны вставляться данные такой тип данных.
А вообще я не понимаю как нужно сделать, чтобы данные,которые пользователь будет писать в форму на сайте, передавались во входные параметры процедуры и потом по нажатию кнопки,чтобы сработала эта процедура.Так вообще можно сделать?
0
otto-fukin
8 / 44 / 17
Регистрация: 15.06.2017
Сообщений: 382
14.02.2018, 20:38 #4
Цитата Сообщение от ice-creame Посмотреть сообщение
отому что у входного параметра процедуры такой тип данных и в таблице куда должны
в POST все значения являются текстом. Преобразовывать типы нужно точно не в html форме

Цитата Сообщение от ice-creame Посмотреть сообщение
$q=mysql_query("CALL square (@param,@param2);");
завершающую точку с запятой в тексте запроса уберите.
0
ice-creame
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 14
14.02.2018, 21:32  [ТС] #5
если убрать точку с запятой,то ошибка Parse error: syntax error, unexpected '}'
изменила на input type="text"
Вообще так нужно было писать php скрипт? и может быть в форме нужно было не name="А",name="В" указывать, а как то по-другому
0
otto-fukin
8 / 44 / 17
Регистрация: 15.06.2017
Сообщений: 382
14.02.2018, 21:36 #6
Цитата Сообщение от ice-creame Посмотреть сообщение
unexpected '}'
в SQL нет фигурных скобок. вы что-то не то удаляете

Добавлено через 46 секунд
$q=mysql_query("CALL square (@param,@param2)");
0
ice-creame
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 14
14.02.2018, 21:53  [ТС] #7
ааа, я подумала в php скрипте, теперь поняла, что Вы говорили про хп

Добавлено через 55 секунд
это не помогло
0
otto-fukin
8 / 44 / 17
Регистрация: 15.06.2017
Сообщений: 382
14.02.2018, 21:58 #8
ну значит остаются стандартные действия с которых обычно следует начинать: проверка наличия подключения к базе, проверка результата выполнения каждого из запросов
0
Виталюска
463 / 455 / 225
Регистрация: 26.09.2010
Сообщений: 2,335
15.02.2018, 00:25 #9
Цитата Сообщение от ice-creame Посмотреть сообщение
<input type="decimal(10,2)" name="А" value size="40" >
тут надо
HTML5
1
<input type="text" name="А" value="" size="40" >
нет такого для input, для второго инпута сделать тоже самое.
тут
Цитата Сообщение от ice-creame Посмотреть сообщение
include('soed.php')
ошибка, нет ; в конце строки
тут
Цитата Сообщение от ice-creame Посмотреть сообщение
$А = $_POST['А'];
преобразуем в нужный тип данных
PHP
1
 = floatval($_POST['А']); //переменная с плавающей точкой
со второй переменной тоже самое.

Ну а дальше надо смотреть что пишет SQL

Добавите к запросу запросу

PHP
1
2
3
$q=mysql_query("set @param='".."'") or die("Ошибка с А: ".mysql_error());
$q=mysql_query("set @param2='".."'") or die("Ошибка с Б: ".mysql_error());
$q=mysql_query("CALL square (@param,@param2)") or die("Ошибка с общим запросом: ".mysql_error());
ну вот для начала исправьте все эти ошибки
0
ice-creame
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 14
15.02.2018, 14:06  [ТС] #10
Спасибо)Исправила все, что вы сказали, теперь когда нажимаю на кнопку формы, данные вставляются в таблицу бд, но вставляются нули, а не те числа,которые ввожу в поля формы. Подскажите,пожалуйста,как это исправить
0
Виталюска
463 / 455 / 225
Регистрация: 26.09.2010
Сообщений: 2,335
16.02.2018, 20:20 #11
Цитата Сообщение от ice-creame Посмотреть сообщение
но вставляются нули, а не те числа,которые ввожу в поля формы. Подскажите,пожалуйста,как это исправить
сделайте вывод запросов на экран и увидите где ошибка.

PHP
1
2
3
echo "set @param='".."'";
echo "set @param='".$B."'";
echo "CALL square (@param,@param2)";
Добавлено через 13 минут
ice-creame, не обратил внимания, у Вас @param надо объединить в один запрос или вообще все в один запрос. У Вас получается следующее в первом запросе назначаем @param, а @param2 = 0, во втором запросе получается наоборот соответственно число множим на 0 и получаем 0
0
ice-creame
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 14
17.02.2018, 20:14  [ТС] #12
После запуска
echo"set @param,@param2,CALL square='".$А."','".$В."',(@param,@param2)";
Вывело
set @param,@param2='0','0'CALL square (@param,@param2)
Получается,что числа, которые ввожу в поля формы, не передаются в @param,@param2?
0
otto-fukin
8 / 44 / 17
Регистрация: 15.06.2017
Сообщений: 382
17.02.2018, 20:29 #13
PHP
1
2
3
 = intval($_POST['А']);
 = intval($_POST['В']);
mysql_query("INSERT INTO `Заказ` (`ШиринаА`,`ДлинаВ`,`Площадь`) VALUES ($А,$В,".$A*$B.")";
это все что нужно для решения задачи.
0
Виталюска
463 / 455 / 225
Регистрация: 26.09.2010
Сообщений: 2,335
17.02.2018, 20:46 #14
Цитата Сообщение от ice-creame Посмотреть сообщение
Получается,что числа, которые ввожу в поля формы, не передаются в @param,@param2?
я Вам написал почему так происходит

Цитата Сообщение от otto-fukin Посмотреть сообщение
это все что нужно для решения задачи.
Человеку скорей всего надо выполнить задание используя хранимую процедуру

Добавлено через 2 минуты
ice-creame, может надо просто
PHP
1
$q=mysql_query("CALL square ($A, $B)") or die("Ошибка с общим запросом: ".mysql_error());
0
ice-creame
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 14
17.02.2018, 21:09  [ТС] #15
Да, нужно обязательно использовать хранимую процедуру
Если таким способом
PHP
1
$q=mysql_query("CALL square ($A, $B)") or die("Ошибка с общим запросом: ".mysql_error());
то все равно вставляет нули.
Вы написали объединить запросы, подскажите, пожалуйста,как это правильно сделать?
я сделала так
PHP
1
2
$q=mysql_query("set @param,@param2  ='".."','".."'");
$q=mysql_query("CALL square (@param,@param2)") or die("Ошибка с общим запросом: ".mysql_error());
и это не правильно
0
otto-fukin
8 / 44 / 17
Регистрация: 15.06.2017
Сообщений: 382
17.02.2018, 22:05 #16
может все таки не
PHP
1
mysql_query("set @param,@param2  ='".."','".."'");
а
PHP
1
2
mysql_query("set @param=$А");
mysql_query("set @param=$B");
0
ice-creame
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 14
18.02.2018, 00:41  [ТС] #17
и так пробовала,все равно добавляет нули в табл бд, вместо внесенных в форму чисел
0
18.02.2018, 00:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2018, 00:41
Привет! Вот еще темы с решениями:

Создание хранимой процедуры, которая создает хранимые процедуры
Написать хранимую процедуру SQL , которая будет создавать хранимые...

Вызов процедуры из хранимой процедуры
подскажите плз. кто сталкивался по теме. необходима так же передача параметров....

Вызов хранимой процедуры
Добрый день У меня есть процедура хранимая в MySQL на добавление строки ...

Вызов хранимой процедуры
Привет! У меня есть база данных и запрос, написанный на SQL в сишарпе. Таблица...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru