Нужно перейти на сайт и одновременно запустить процедуру SQL. Если <form action="laravel.php" вписать сайт, то переходит без запуска процедуры sql, а если сделать пустым <form action="" то sql выполняется, но не переходит на сайт. Код (Text): <form action="laravel.php" method="post" id="nameform" > <?php $data='room1'; echo '<button type="submit" name="submit" form="nameform" value='.$data.'>Отправить</button>'; $conn=getDentrix(); if (isset($_POST['submit'])) { //Ваш код подключения к базе $conn=getDentrix2(); //print_r($aut); $sql3 = "exec = dbo.Test '$data', 1"; $params = array( array(&$fun, SQLSRV_PARAM_OUT, SQLSRV_PHPTYPE_INT) ); if( $conn ) { //echo "Connection established:".$use.".<br />"; }else{ echo "Connection could not be established.<br />"; die( print_r( sqlsrv_errors(), true)); } $stmt1 = sqlsrv_query($conn, $sql3, $params); if( $stmt1 === false ) { die( print_r( sqlsrv_errors(), true)); } } ?> </form>
надо в этом файле laravel.php писать это: PHP: if (isset($_POST['submit'])) { //Ваш код подключения к базе $conn=getDentrix2(); //print_r($aut); $sql3 = "exec = dbo.Test '$data', 1"; $params = array( array(&$fun, SQLSRV_PARAM_OUT, SQLSRV_PHPTYPE_INT) ); if( $conn ) { //echo "Connection established:".$use.".<br />"; }else{ echo "Connection could not be established.<br />"; die( print_r( sqlsrv_errors(), true)); } $stmt1 = sqlsrv_query($conn, $sql3, $params); if( $stmt1 === false ) { die( print_r( sqlsrv_errors(), true)); } } --- Добавлено --- а на странице с формой просто: HTML: <form action="laravel.php" method="post" id="nameform" > <button type="submit" name="submit" form="nameform" value='room1'>Отправить</button> </form>
@Kvandaik Ты нажимаешь кнопку Отправить. Если у тебя в заголовке action твоей формы написан какой то адрес, произойдет переход на этот файлик, куда передастся post параметр. То есть ты в этом файлике должен принять пост параметр. Если поле action будет пустым, то произойдет перезапуск текущего файлика, но пост запрос всеравну отправится только на текущий файлик. И у тебя на твоем текущем файлике срабатывает условие if(isset($_POST['submit'])) . Все понятно? --- Добавлено --- Если ты хочешь просто записать что то на текущей странице, а потом перейти на свой laravel.php пиши так, но это фигня собачая: PHP: <?php $data='room1'; if (isset($_POST['submit'])) { //Ваш код подключения к базе $conn=getDentrix2(); //print_r($aut); $sql3 = "exec = dbo.Test ".$_POST['submit'].", 1"; $params = array( array(&$fun, SQLSRV_PARAM_OUT, SQLSRV_PHPTYPE_INT) ); if( $conn ) { //echo "Connection established:".$use.".<br />"; }else{ echo "Connection could not be established.<br />"; die( print_r( sqlsrv_errors(), true)); } $stmt1 = sqlsrv_query($conn, $sql3, $params); if( $stmt1 === false ) { die( print_r( sqlsrv_errors(), true)); }else{ header("Location: laravel.php"); } } ?> <form action="" method="post" id="nameform" > <button type="submit" name="submit" form="nameform" value='<?=$data?>'>Отправить</button> </form> поправил немного еще поправил
яж не просто в exec пишу данные, в laravel уже будет поготовленная процедура и лишние данные она не оддаст, это номер экрана и данные. по этому мне нужен код скриптовый навешивание двух действий на одну кнопку
@Kvandaik, последовательно действия нужно выполнять, а не сразу ( захватил мир и успел посрать ) --- Добавлено --- @Artur_hopf, после хидера всегда стоп машину надо прописывать
Сделал промежут сайт <body onLoad="document.getElementById('sbm').click()"> <form action="laravel.php" method="POST" name="form1"> <input type="text" name="input1"> <?php $data=$_POST['submit']; $conn=GetDentrix(); sql=..... sqlsrv_query....... echo'<input type="submit" name="submit" id="sbm" value='$data'>' ?> </form> </body>
@Kvandaik вот так выглядит модель: PHP: <?php namespace App; use Illuminate\Database\Eloquent\Model; class Task extends Model { // } вот так контроллер: PHP: <?php use App\Task; use Illuminate\Http\Request; /** * Вывести панель с задачами */ Route::get('/', function () { // }); /** * Добавить новую задачу */ Route::post('/task', function (Request $request) { // }); /** * Удалить задачу */ Route::delete('/task/{task}', function (Task $task) { // }); вот так вывод вида в том же контроллере: PHP: Route::get('/', function () { return view('tasks'); }); Если вам эти строки ни о чем не говорят, думаю вы куда то не туда убежали в изучении laravel. --- Добавлено --- вот документация откуда я это взял: https://laravel.ru/docs/v5/quickstart Попробуйте лучше это все сделать. p.s. и да, я в laravel соображаю даже меньше вас. --- Добавлено --- а тут вообще есть все что вам нужно для вашей задачи https://laravel.com/docs/5.8/routing
Почти всегда. В принципе контент после Location можно спокойно выдавать, если есть что выдавать, не светятся защищенные данные и т.п. Правда, обычно в этом нет никакого толка, только лишняя нагрузка. --- Добавлено --- Где есть одно действие, там же может быть и два. Постановка вопроса так себе. На JS обычно вешают альт. реализацию того же самого действия. Или какие-то вспомог. действия типа валидации, подтверждения и т.п., дергая в конце обычный обработчик (или наоборот пресекая его вызов).