Как добавить значения флажков, которые были проверены?

0

Я задал этот вопрос несколько дней назад, но я новичок, и никто не хотел понимать, о чем я говорю, поэтому я спрошу еще раз, насколько это возможно. У меня есть следующие флажки, у них есть значения. Значения представляют собой стоимость элемента, который находится в меню. Я понимаю, что вы можете получить значение, выполнив функцию $ _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 для вывода чего-либо, если что-то было проверено или нет, я могу получить значение из поля ввода, я могу добавить два значения вместе (но не числа). Я застрял в этом в течение двух дней, и так много часов прошло, я чувствую, что в этот момент я, должно быть, делаю что-то неправильно, к чему я не обращаю внимания, я действительно и искренне не знаю, что делать.

  • 0
    @Фико, где вы хотите, чтобы ваш итог отображался в HTML или в php файле?
  • 0
    Я, скорее всего, сделаю это в моем php-файле. Я не против, где результат, я просто хочу научиться делать это, лол.
Теги:

2 ответа

1

Поскольку ваши флажки названы с префиксом 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.";
}
  • 0
    Спасибо, чувак, теперь это имеет смысл. Я не могу поверить, что я не думал об использовании цикла, я чувствую себя таким глупым, о боже мой.
  • 0
    Как ни странно, это не повторяет результат, когда я повторяю значение суммы, хммм ....
Показать ещё 18 комментариев
-1

Измените имя на name="edible[1]" и так далее. После отправки значения будут находиться в массиве в $_POST. Это можно затем суммировать с помощью array_sum().

  • 0
    Большое вам спасибо, теперь это так важно!
  • 0
    Просто должен получить мое эхо, чтобы отразить сумму, которая по какой-то причине не делает этого, но я уверен, что это быстрое решение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню