Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP: базы данных

Войти
Регистрация
Восстановить пароль
 
 
ice-creame
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 14
#1

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

14.02.2018, 17:26. Просмотров 250. Ответов 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 БД
Доброго времени суток проблема в том что не могу вызвать из php хранимую процедуру с параметрами в MySQL пробовал вот так результат 0 ...

Ошибка при создании хранимой процедуры - PHP БД
CREATE PROCEDURE addPercent() BEGIN Declare done int default 0; DEclare needParts int; Declare depCurs Cursor for ...

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

связь ntml формы и программы на php - PHP БД
Здравствуйте, помогите пожалуйста! Вопрос глупый, но ответа так нигде и не нашла. Есть html файл &lt;head&gt; &lt;title&gt;Успеваемость&lt;/title&gt; ...

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

16
otto-fukin
35 / 35 / 12
Регистрация: 15.06.2017
Сообщений: 252
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
35 / 35 / 12
Регистрация: 15.06.2017
Сообщений: 252
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
35 / 35 / 12
Регистрация: 15.06.2017
Сообщений: 252
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
35 / 35 / 12
Регистрация: 15.06.2017
Сообщений: 252
14.02.2018, 21:58 #8
ну значит остаются стандартные действия с которых обычно следует начинать: проверка наличия подключения к базе, проверка результата выполнения каждого из запросов
0
Виталюска
459 / 451 / 152
Регистрация: 26.09.2010
Сообщений: 2,301
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
Виталюска
459 / 451 / 152
Регистрация: 26.09.2010
Сообщений: 2,301
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
35 / 35 / 12
Регистрация: 15.06.2017
Сообщений: 252
17.02.2018, 20:29 #13
PHP
1
2
3
 = intval($_POST['А']);
 = intval($_POST['В']);
mysql_query("INSERT INTO `Заказ` (`ШиринаА`,`ДлинаВ`,`Площадь`) VALUES ($А,$В,".$A*$B.")";
это все что нужно для решения задачи.
0
Виталюска
459 / 451 / 152
Регистрация: 26.09.2010
Сообщений: 2,301
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
17.02.2018, 21:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2018, 21:09
Привет! Вот еще темы с ответами:

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

Вызов хранимой процедуры - SQL Server
Ка мне можно вызвать хранимую процедуру из SQL скрипта ? SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON GO CREATE VIEW...

Результат хранимой процедуры - C#
Есть хранимая процедура на SQL Server, которая принимает два параметра - логин и пароль. и если пара совпадает с записью в базе, то...

Подключение хранимой процедуры - Delphi БД
Здравствуйте! Помогите пожалуйста, необходимо подключить процедуру поиска из sql к Delphi через ADOQueru. Нужно в эдит ввести значение,...


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

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

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