Я задал этот вопрос несколько дней назад, но я новичок, и никто не хотел понимать, о чем я говорю, поэтому я спрошу еще раз, насколько это возможно. У меня есть следующие флажки, у них есть значения. Значения представляют собой стоимость элемента, который находится в меню. Я понимаю, что вы можете получить значение, выполнив функцию $ _POST, но я не пытаюсь отобразить значения, я не пытаюсь использовать популярную для новичка технику PHP-формы, отображающую имя, введенное в поле ввода. То, что я пытаюсь достичь, это добавить значения флажков, которые были проверены. Поэтому, если установлен флажок со значением 10, а также другой со значением 11, а другой со значением 5, я хотел бы повторить, что цена будет 26.
Я полностью понимаю, что с помощью isset, чтобы увидеть, если флажок установлен, а затем выводить все, что вы хотите. Я новичок в PHP, и один из популярных ответов, которые я получил, состоял в том, чтобы использовать атрибут value, как я это сделал в своем коде, и он был процитирован как "вы получите 123 в $ _POST ['foo'] после формы был отправлен, если пользователь установил этот флажок. " Это не полезно, не упоминает isset, не то, что сейчас это важно, но также только говорит мне, что получит значение 123, если оно было проверено. Это не достигает того, чего я хочу.
Я понимаю, что мог бы назначить значения переменных для каждого флажка, и это было бы очень приятной идеей, но как тогда добавить ТОЛЬКО флажки, которые были отмечены??? Как и в случае добавления значений отмеченных флажков только для суммирования чисел, поскольку числа являются их значениями.
Пожалуйста, без умных ответов, у меня есть люди, которые дают мне решения в JS, и даже в jQuery, и люди просто говорят мне, как просто повторить значение.
Опять же, чтобы прояснить ситуацию, я новичок в PHP, и я проверил более 100 различных вопросов сейчас, и я не могу найти то, что я ищу. Пожалуйста, не давайте мне ответов, которых нет в PHP, я не хочу знать, как отобразить значение элемента, хотя, возможно, именно здесь я ошибаюсь, возможно, я не знаю, как получить значение, но просто получение значения ничего не делает, и оно не добавляет числовые значения флажков, которые были отмечены вместе, чтобы получить общую стоимость всей еды, которую вы заказываете.
Вот мой HTML-код:
<!DOCTYPE html>
<html>
<head>
<title>Order</title>
<link rel="stylesheet" type="text/css" href="menu.css">
</head>
<body>
<form method="post" action="menu.php">
<ul>
<li>
<ul class="menus">
<li><input type="checkbox" name="edible1" value="12">Sausage Rolls</li>
<li><input type="checkbox" name="edible2" value="8">Fries</li>
<li><input type="checkbox" name="edible3" value="10">Wings</li>
<li><input type="checkbox" name="edible4" value="11">Spinach Pinwheels</li>
<li><input type="checkbox" name="edible5" value="6">Garlci Bread</li>
</ul>
</li>
<li>
<ul class="menus">
<li><input type="checkbox" name="edible6" value="18">Instant Pot Chicken</li>
<li><input type="checkbox" name="edible7" value="20">Salmon Pattles</li>
<li><input type="checkbox" name="edible8" value="23">Callco Cabbage</li>
<li><input type="checkbox" name="edible9" values="22">Bacon Wrappend Jalapeno</li>
<li><input type="checkbox" name="edible10" value="19">Potato Mash</li>
</ul>
</li>
<li>
<ul class="menus">
<li><input type="checkbox" name="edible11" value="5">Edible Cookie Dough</li>
<li><input type="checkbox" name="edible12" value="4">Ice Cream Sandwich</li>
<li><input type="checkbox" name="edible13" value="7">Cheesecake</li>
<li><input type="checkbox" name="edible14" value="3">Chocolate Cake</li>
<li><input type="checkbox" name="edible15" value="2">Brownies</li>
</ul>
</li>
<li>
<ul class="menus">
<li><input type="checkbox" name="edible16" value="5">Wine</li>
<li><input type="checkbox" name="edible17" value="5">Beer</li>
<li><input type="checkbox" name="edible18" value="5">Water</li>
<li><input type="checkbox" name="edible19" value="5">Juice</li>
<li><input type="checkbox" name="edible20" value="5">Coffee</li>
</ul>
</li>
</ul>
<input type="submit" name="order" value="Order">
</form>
</body>
</html>
Вот мой CSS, если по какой-то причине вы заботитесь об этом, может быть, вы хотите знать, как выглядит форма в моих глазах idk:
ul,li {
list-style:none;
padding : 10px;
}
form > ul {
display:flex;
}
Я не знаю, что делать с PHP. Я сделал формы, прежде чем сложить вместе два входных значения, но это были записанные значения, а не некоторые заданные значения, и у него не было сложного ультиматума. Мне известно об использовании isset для вывода чего-либо, если что-то было проверено или нет, я могу получить значение из поля ввода, я могу добавить два значения вместе (но не числа). Я застрял в этом в течение двух дней, и так много часов прошло, я чувствую, что в этот момент я, должно быть, делаю что-то неправильно, к чему я не обращаю внимания, я действительно и искренне не знаю, что делать.
Поскольку ваши флажки названы с префиксом edible
, вы можете зациклить массив $_POST
и найти элементы, которые начинаются с этого. Если вы найдете совпадение, добавьте его в переменную $sum
. Будут отправлены только отмеченные флажки, поэтому вам не нужно учитывать непроверенные флажки.
if (isset($_POST['order'])) {
$sum = 0;
foreach ($_POST as $key => $value) {
if (strpos($key, "edible") === true) {
$sum += $value;
}
}
echo $sum;
} else {
echo "POST not sent.";
}
Затем выведите $sum
как вам нужно.
Кроме того, вы можете переименовать все свои флажки, где все они названы name="edible[]"
, что делает его "массив HTML".
<ul class="menus">
<li><input type="checkbox" name="edible[]" value="12">Sausage Rolls</li>
<li><input type="checkbox" name="edible[]" value="8">Fries</li>
<li><input type="checkbox" name="edible[]" value="10">Wings</li>
<li><input type="checkbox" name="edible[]" value="11">Spinach Pinwheels</li>
<li><input type="checkbox" name="edible[]" value="6">Garlci Bread</li>
</ul>
И сделать это для всех флажков.
Тогда вы просто делаете
if (isset($_POST['order'])) {
$sum = array_sum($_POST['edible']);
echo $sum;
} else {
echo "POST not sent.";
}
Измените имя на name="edible[1]"
и так далее. После отправки значения будут находиться в массиве в $_POST
. Это можно затем суммировать с помощью array_sum()
.