Получить данные из формы с помощью PHP

У меня есть файл php, который создает для меня таблицу, используя данные, полученные из базы данных mysql.

<?php

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
      echo "<tr>";
      echo "<td>" . $row['ID'] . "</td>";
      echo "<td>" . $row['Name'] . "</td>";
      echo "<td>" . $row['CountryCode'] . "</td>";
      echo "<td>" . $row['District'] . "</td>";
      echo "<td>" . $row['Population'] . "</td>";
      echo "<td>" . $row['Price'] . "</td>";
      echo "<td><input type=\"number\" name = "quantity" id = "quantity"></td>";
      echo "</tr>";
    }
} else {
    echo "0 results";
}
$conn->close();

?>

В конце каждой строки у меня есть входное число, чтобы я мог рассчитать количество каждого продукта (в данном случае страны). Как я могу получить сумму каждой страны, умножить ее на цену и вернуть итог в конце моей таблицы?

пожалуйста, объясните это предложение:- I have an input number so that I can calculate the amount of each product(countries in this case). How could I get the amount of each country, multiply it by the price and return a total at the end of my table? не могу понять

Anant Kumar Singh 21.05.2019 14:40

Вы не можете сделать это в php, вам понадобятся функции JavaScript для получения значений, сохранения итогов и обновления итогов страницы.

user2417483 21.05.2019 14:41

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

Louis 21.05.2019 14:44

Для этого вам нужен jquery/javascript, мой друг. Не могу сделать это в php

Anant Kumar Singh 21.05.2019 14:48

Ой. Есть ли способ передать данные из php в javascript?

Louis 21.05.2019 14:50

@Louis, вы уже делаете это, распечатывая данные на стороне клиента. Вы можете добавить некоторые свойства идентификатора или класса, чтобы упростить доступ к месту, где вы распечатывали значения, из js.

Shadow 21.05.2019 14:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
277
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы должны добавить тег формы вокруг таблицы, а затем суммировать цену записи * количество в каждой строке.

Что я сделал здесь, так это проверил, установлено ли количество в переменной POST или нет. если он существует, я помещаю данные в значение количества. после этого вы должны сделать имя количества способным принимать массив внутрь с помощью ключа записи Id.

после этого, если форма отправлена, количество будет отправлено обратно на страницу в виде строки запроса. затем я умножаю цену на количество и добавляю ее к переменной суммы. после завершения цикла и выведите переменную суммы в конце таблицы.

$html = '';
if ($result->num_rows > 0) {
    $html .= '<form method = "GET" action = "" target = "_self>';

    $row = $result->fetch_assoc();

    if (isset($_GET['quantity'][$row['ID']]))
        $qty = $_GET['quantity'][$row['ID']];
    else
        $qty = 0;

    $sum = 0;
    // output data of each row
    while ($row) {
        $html .= '<tr>';
        $html .= '<td>' . $row['ID'] . '</td>';
        $html .= '<td>' . $row['Name'] . '</td>';
        $html .= '<td>' . $row['CountryCode'] . '</td>';
        $html .= '<td>' . $row['District'] . '</td>';
        $html .= '<td>' . $row['Population'] . '</td>';
        $html .= '<td>' . $row['Price'] . '</td>';
        $html .= '<td>
                    <input type = "number" name = "quantity[' . $row['ID'] . ']"  value = "' . $qty . '">
                  </td>';
        $html .= '<td>' . ($sum += $row['Price'] * $qty) . '</td>';
        $html .= '</tr>';
    }
    $html .= '<input name = "submitForm" value = "submitForm">';
    $html .= '</form>';
    $html .= '<tr>';
    $html .= '<td>Total = '.$sum.'</td>';
    $html .= '</tr>';
} else {
    $html .= "0 results";
}
$conn->close();

echo htmlspecialchars($html);

не забудьте использовать htmlspecialchars для вывода результата.

Ответ принят как подходящий

Если вы хотите сделать это с помощью PHP, вы должны сделать это в два этапа, потому что PHP обрабатывается на сервере. Таким образом, вы вводите все нужные количества, и когда вы нажимаете кнопку «Вычислить», страница отправляет все значения на сервер, который вычисляет все, что вы хотите, и дает вам окончательный результат.

Проблема, которую я вижу в этом решении, заключается в том, что, как только вы получите все необходимое количество, вам придется еще раз получить цены. Я не очень эффективен, потому что они уже есть на первой странице. Я вижу здесь два решения:

  1. Когда вы отображаете значения, следите за ценами в поле $_SESSION, чтобы вы могли получить к ним доступ, покинув страницу, без необходимости получать их из базы данных.
  2. Когда вы отображаете значения, отображайте цены в поле input (я бы рекомендовал как readonly, чтобы пользователь не менял это значение здесь), и, таким образом, они будут включены в $_POST (или $_GET, если вы используете это) переменная, которую ваш браузер будет отправлять на сервер.

Если вам нужно только отобразить значение, не используя его после этого, вы можете использовать javascript для его вычисления, это может быть проще.

Несмотря на то, что здесь это не главное, вы должны быть осторожны при отображении input с помощью PHP в цикле while, потому что здесь все ваши input имеют одинаковые id, что затруднит вычисление того, что вы хотите.

Надеюсь, поможет!

Другие вопросы по теме