Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 14
MySQL

Связь хранимой процедуры и формы

14.02.2018, 17:26. Показов 975. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.02.2018, 17:26
Ответы с готовыми решениями:

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

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

Отчет из хранимой процедуры
Подскажите, как в Visual Studio 2010 создать отчет на основе хранимой процедуры? код процедуры ALTER procedure . @_param1 Date, ...

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

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

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

Добавлено через 55 секунд
это не помогло
0
 Аватар для otto-fukin
14 / 60 / 21
Регистрация: 15.06.2017
Сообщений: 572
14.02.2018, 21:58
ну значит остаются стандартные действия с которых обычно следует начинать: проверка наличия подключения к базе, проверка результата выполнения каждого из запросов
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
15.02.2018, 00:25
Цитата Сообщение от 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
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 14
15.02.2018, 14:06  [ТС]
Спасибо)Исправила все, что вы сказали, теперь когда нажимаю на кнопку формы, данные вставляются в таблицу бд, но вставляются нули, а не те числа,которые ввожу в поля формы. Подскажите,пожалуйста,как это исправить
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
16.02.2018, 20:20
Цитата Сообщение от 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
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 14
17.02.2018, 20:14  [ТС]
После запуска
echo"set @param,@param2,CALL square='".$А."','".$В."',(@param,@param2 )";
Вывело
set @param,@param2='0','0'CALL square (@param,@param2)
Получается,что числа, которые ввожу в поля формы, не передаются в @param,@param2?
0
 Аватар для otto-fukin
14 / 60 / 21
Регистрация: 15.06.2017
Сообщений: 572
17.02.2018, 20:29
PHP
1
2
3
 = intval($_POST['А']);
 = intval($_POST['В']);
mysql_query("INSERT INTO `Заказ` (`ШиринаА`,`ДлинаВ`,`Площадь`) VALUES ($А,$В,".$A*$B.")";
это все что нужно для решения задачи.
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
17.02.2018, 20:46
Цитата Сообщение от ice-creame Посмотреть сообщение
Получается,что числа, которые ввожу в поля формы, не передаются в @param,@param2?
я Вам написал почему так происходит

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

Добавлено через 2 минуты
ice-creame, может надо просто
PHP
1
$q=mysql_query("CALL square ($A, $B)") or die("Ошибка с общим запросом: ".mysql_error());
0
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 14
17.02.2018, 21:09  [ТС]
Да, нужно обязательно использовать хранимую процедуру
Если таким способом
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
14 / 60 / 21
Регистрация: 15.06.2017
Сообщений: 572
17.02.2018, 22:05
может все таки не
PHP
1
mysql_query("set @param,@param2  ='".."','".."'");
а
PHP
1
2
mysql_query("set @param=$А");
mysql_query("set @param=$B");
0
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 14
18.02.2018, 00:41  [ТС]
и так пробовала,все равно добавляет нули в табл бд, вместо внесенных в форму чисел
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.02.2018, 00:41
Помогаю со студенческими работами здесь

Создание хранимой процедуры
Доброго времени суток, пытаюсь создать хранимую процедуру через запрос вида: CREATE PROCEDURE testBD.dbo.UpdateProc (@OKPO bigint,...

Копирование хранимой процедуры
Создалось необходимость скопировать хранимые процедуры одной БД в другую с помощью хранимой процедуры. Прошу вас хотья бы намекнуть на...

Создание хранимой процедуры
Шарящие ребятки, помогите пожалуйста, через неделю сдавать задание, чтобы не отчислили, а я никак не могу разобраться, уже третьи сутки...

Написание хранимой процедуры
Здраствуйте! Помогите, пожалуйста, составить хранимую процедуру учета рабочего времени и вычисления заработной платы (расчет з/п...

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru