PHP Forms - Числовое значение флажка - PullRequest
0 голосов
/ 05 марта 2012

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

<input type="checkbox" id="product1" name="product1" value="100" />
<input type="checkbox" id="product2" name="product2" value="250" />

В моем файле 'process.php' мне нужно подсчитать стоимость всех предметов, если они проверены.

if(isset($_POST['product1']) && $_POST['product1'] == '100') {
    $product1 = 100;
}

if(isset($_POST['product2']) && $_POST['product2'] == '250') {
    $product2 = 250;
}

$dollars = $product1 + $product2;

Когда я пытаюсь сделать это таким образом, $ dollar является пустой переменной "". Может кто-нибудь сказать мне, как это исправить?

Спасибо!

Ответы [ 4 ]

1 голос
/ 05 марта 2012

В вашем коде нет синтаксической ошибки. Так что единственное объяснение состоит в том, что

  1. $ _ POST ['product1'] не имеет значения 100 или они вообще не отправляются по почте
  2. $ _ POST ['product2'] также не имеет значения 250 или они также не отправляются по почте

Чтобы убедиться в этом, сделайте быстрый var_dump($_POST) вверху вашего .php файла

0 голосов
/ 05 марта 2012

Вы можете разместить массив флажков, если хотите.Попробуйте это:

<?php

$dollars = 0;

// If the user post the form
if(isset($_POST['value'])) {
    foreach ($_POST['product'] as $product) {
        if(is_numeric($product) && $product >= 0) {
            $dollars += $product;
        }
    }
}

?>

<!DOCTYPE HTML>
<html>
    <head></head>
    <body>
        <p>Product : <?php echo $dollars; ?></p>

        <form method="post">
            <label><input type="checkbox" name="product[]" value="100" /> 100</label><br/>
            <label><input type="checkbox" name="product[]" value="250" /> 250</label><br/>
            <label><input type="checkbox" name="product[]" value="350" /> 350</label><br/>
            <label><input type="checkbox" name="product[]" value="20" /> 20</label><br/>
            <label><input type="checkbox" name="product[]" value="25" /> 25</label><br/>

            <input type="submit" name="value" />
        </form>
    </body>
</html>

Этот код получает массив выбранных продуктов и составляет сумму.

0 голосов
/ 05 марта 2012

Это работает, поэтому что-то не работает в вашем коде, но мы не можем видеть это прямо сейчас

<?php
if(isset($_POST['submit']) ) {
    if(isset($_POST['product1']) && $_POST['product1'] == '100') {
        $product1 = 100;
    }

    if(isset($_POST['product2']) && $_POST['product2'] == '250') {
        $product2 = 250;
    }

    echo $dollars = $product1 + $product2;

}
?>

<form method="post">
  <input type="checkbox" id="product1" name="product1" value="100" />
  <input type="checkbox" id="product2" name="product2" value="250" />
  <input type="submit" name="submit" />
</form>
0 голосов
/ 05 марта 2012

Значения флажков не отправляются на сервер с данными POST, если не отмечены. (отредактированный пост)

Если вы должны отправить эти данные, рассмотрите возможность использования <input type="hidden" name="product1value" value="100"/> для отправки значения вместо этого? Оставьте флажки, чтобы увидеть, отмечены ли они.

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