Отправить кнопку формы на другой странице - PullRequest
1 голос
/ 30 июня 2019

Посмотрите на мои два разных дела.

fun.php (одинаково во всех случаях)

function pre_invoice($value) //earlier it was public function ---- (typo in the question)
{
//Code to insert query in database
}

Дело 1:

form.php

<?php 
require_once 'fun.php';

if(isset($_POST['submit'])){
pre_invoice(999);
}
?>
<table class="table table-striped table-hover table-bordered">
    <thead class="text-center">
  <tr>
    <th>Service</th>
    <th>Quantity</th>
  </tr> 
 </thead>
<tbody>
  <form method="POST">

    <tr>
    <td></td>
    <td>8</td>
  </tr>

    <tr>
    <td></td>
    <td>12</td>
  </tr>

    <tr>
    <td></td>
    <td>4</td>
  </tr>

    <tr>
    <td></td>
    <td>6</td>
  </tr>
        <input type="submit" name="submit" />
        </form>
</tbody>
  </table>

Теперь, когда я нажимаю кнопку отправки в form.php, запрос вставляется в базу данных.


Дело 2:

form.php

<table class="table table-striped table-hover table-bordered">
    <thead class="text-center">
  <tr>
    <th>Service</th>
    <th>Quantity</th>
  </tr> 
</thead>
<tbody>
  <form method="POST">

    <tr>
    <td></td>
    <td>8</td>
  </tr>

    <tr>
    <td></td>
    <td>12</td>
  </tr>

    <tr>
    <td></td>
    <td>4</td>
  </tr>

    <tr>
    <td></td>
    <td>6</td>
  </tr>
        <input type="submit" name="submit" />
        </form>
</tbody>
  </table>

index.php

<?php 
 require_once 'fun.php';

 if(isset($_POST['submit'])){
  pre_invoice(999);
 }
?>
<div id="form"></div>​
<script>
   $("#form").load('form.php');
</script>

Теперь, когда я нажимаю кнопку отправки в index.php, запрос не вставляется в базу данных.


У меня есть все библиотеки, включенные в index.php , все HTML-теги правильные, SQL-запрос правильный.

1 Ответ

1 голос
/ 30 июня 2019

Первое, что вы хотите сделать в таких случаях, - это проверить логи вашего сервера на наличие ошибок PHP.Это зависит от того, какой веб-сервер вы используете, и от его конфигурации.

Также вы можете проверить консоль JavaScript вашего браузера на наличие ошибок в инструментах разработчика (по умолчанию вы можете открыть консоль, нажав Ctrl + Shift + J наБраузеры на основе хрома).

После некоторых изменений он работает на моих тестах.


fun.php

<?php
function pre_invoice($value) {
    // Your code
}

Я удалил public, это не метод класса, поэтому он не может иметь ключевое слово public / private (это приводило к ошибке PHP)

Я добавил <?php чтобы указать начало PHP-кода, нам не нужно закрывать его, так как в этом файле нет дополнительного HTML-кода


form.php

<form method="POST">
    <input type="submit" name="submit" />
</form>

(этот файл совпадает с предоставленным вами)


index.php

<?php 
    require_once 'fun.php';

    if(isset($_POST['submit'])){
        pre_invoice(999);
    }
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>title</title>
    </head>
    <body>
        <div id="form"></div>
        <!-- Load jQuery -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
        <!-- Load form -->
        <script>
            $("#form").load('form.php');
            // We load the form only once
            // setInterval would load the form many times (in your code every 3 seconds)
        </script>
    </body>
</html>

(я не уверен, что вы предоставили только часть своего HTML-файла)

Я добавил базовую структуру HTML (и т. Д.)

Я добавил jQuery библиотека для поддержки он $ (это приводило к ошибке на консоли браузера) (я загрузил jQuery из CDN Google, вы можете разместить его локально)

Я удалилsetInterval так как я думаю, что вам это не нужно, вам не нужно загружать форму каждые 3 секунды


PS: ваш код вставки SQL также может вызывать ошибки.


Обновление после полного form.php

Проверка Форма внутри таблицы

Поскольку ваш код недействителен, результат дела другой1, где браузер загружает по умолчанию ваш HTML-код, и случай 2, где HTML-идентификатор динамически загружается.

Итак, вы должны переместить тег <form> за пределы таблицы или внутри <td>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...