У меня есть файл 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();
?>
В конце каждой строки у меня есть входное число, чтобы я мог рассчитать количество каждого продукта (в данном случае страны). Как я могу получить сумму каждой страны, умножить ее на цену и вернуть итог в конце моей таблицы?
Вы не можете сделать это в php, вам понадобятся функции JavaScript для получения значений, сохранения итогов и обновления итогов страницы.
@AlivetoDie В конце моей таблицы у меня есть ввод. Пользователь может выбрать, сколько каждого продукта он хочет. Затем мне нужно умножить количество на цену, чтобы получить общую цену каждого продукта, а затем добавить все цены продукта, чтобы получить общую сумму в конце моей таблицы.
Для этого вам нужен jquery/javascript, мой друг. Не могу сделать это в php
Ой. Есть ли способ передать данные из php в javascript?
@Louis, вы уже делаете это, распечатывая данные на стороне клиента. Вы можете добавить некоторые свойства идентификатора или класса, чтобы упростить доступ к месту, где вы распечатывали значения, из js.






Вы должны добавить тег формы вокруг таблицы, а затем суммировать цену записи * количество в каждой строке.
Что я сделал здесь, так это проверил, установлено ли количество в переменной 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 обрабатывается на сервере. Таким образом, вы вводите все нужные количества, и когда вы нажимаете кнопку «Вычислить», страница отправляет все значения на сервер, который вычисляет все, что вы хотите, и дает вам окончательный результат.
Проблема, которую я вижу в этом решении, заключается в том, что, как только вы получите все необходимое количество, вам придется еще раз получить цены. Я не очень эффективен, потому что они уже есть на первой странице. Я вижу здесь два решения:
$_SESSION, чтобы вы могли получить к ним доступ, покинув страницу, без необходимости получать их из базы данных.input (я бы рекомендовал как readonly, чтобы пользователь не менял это значение здесь), и, таким образом, они будут включены в $_POST (или $_GET, если вы используете это) переменная, которую ваш браузер будет отправлять на сервер.Если вам нужно только отобразить значение, не используя его после этого, вы можете использовать javascript для его вычисления, это может быть проще.
Несмотря на то, что здесь это не главное, вы должны быть осторожны при отображении input с помощью PHP в цикле while, потому что здесь все ваши input имеют одинаковые id, что затруднит вычисление того, что вы хотите.
Надеюсь, поможет!
пожалуйста, объясните это предложение:-
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?не могу понять