Не передаётся значение переменной

Доброго времени суток!

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

На первой странице идёт 3 селекта и кнопка "Заказать":

<form action="zakaz.php" method="POST">
<h2>ВЫБЕРИТЕ ПАРАМЕТРЫ ЗАКАЗА</h2>
<br>
<b>Материал:</b><br>
    <select name="select1" onchange="calc()" id="bumaga">
        <option value="2.5">Картон, 300 гр, 4+0</option>
        <option value="3">Картон, 300 гр, 4+4</option>
        <option value="2.7">Color Copy, 300 гр, 4+0</option>
        <option value="3.2">Color Copy, 300 гр, 4+4</option>
        <option value="2.8">Color Copy, 350 гр, 4+0</option>
        <option value="3.3">Color Copy, 350 гр, 4+4</option>
        <option value="5">Маджестик, 4+0</option>
        <option value="6.5">Маджестик, 4+4</option>
        <option value="4">Лён, 4+0</option>
        <option value="5.0">Лён, 4+4</option>
    </select><br><br>
    
<b>Двухсторонняя ламинация:</b><br>
    <select name="select2" onchange="calc()" id="laminat">
        <option value="0">Нет</option>
        <option value="1.2">Глянцевая 32 мк</option>
        <option value="1.8">Глянцевая 75 мк</option>
        <option value="3.5">Глянцевая 125 мк</option>
        <option value="6.4">Глянцевая 250 мк</option>
        <option value="1.7">Матовая 32 мк</option>
        <option value="2.2">Матовая 75 мк</option>
        <option value="3.9">Матовая 125 мк</option>
        <option value="7.2">Матовая 250 мк</option>
        <option value="3.5">Матовая бархатистая 28 мк</option>
        <option value="4.3">Матовая бархатистая 43 мк</option>
    </select>
<br>
<br>

<b>Тираж:</b><br>
    <select name="select3" onchange="calc()" id="kolvo">
        <option value="96">96</option>
        <option value="120">120</option>
        <option value="144">144</option>
        <option value="192">192</option>
        <option value="240">240</option>
        <option value="264">264</option>
        <option value="288">288</option>
        <option value="408">408</option>
        <option value="480">480</option>
        <option value="504">504</option>
        <option value="600">600</option>
        <option value="696">696</option>
        <option value="792">792</option>
        <option value="888">888</option>
        <option value="912">912</option>
        <option value="984">984</option>
        <option value="1008">1008</option>
        <option value="1512">1512</option>
        <option value="1608">1608</option>
        <option value="1704">1704</option>
        <option value="1800">1800</option>
        <option value="1896">1896</option>
        <option value="1992">1992</option>
        <option value="2016">2016</option>
    </select><br>
    
<h2>Стоимость тиража: <font size="6" color="#009ee3"> <span id="result">240</span> </font> руб.</h2>
<button type="submit">Заказать</button>
</form>

Данные передаются на страницу "zakaz.php", на которой отображается, какие именно позиции в селектах выбрал клиент и появляется 2 доп. поля - "ФИО" и "Номер телефона":

<form action="send.php" method="POST" role="form">
<h2>Ваш заказ:</h2>
   <p> Материал: 
       <?php
            $select1 = $_POST['select1']; 
            if ($select1 == "2.5") {
                echo $select1 = "Картон, 300 гр, 4+0";
            } elseif ($select1 == "3") {
                echo $select1 = "Картон, 300 гр, 4+4";
            } elseif ($select1 == "2.7") {
                echo $select1 = "Color Copy, 300 гр, 4+0";
            } elseif ($select1 == "3.2") {
                echo $select1 = "Color Copy, 300 гр, 4+4";
            } elseif ($select1 == "2.8") {
                echo $select1 = "Color Copy, 350 гр, 4+0";
            } elseif ($select1 == "3.3") {
                echo $select1 = "Color Copy, 350 гр, 4+4";
            } elseif ($select1 == "5") {
                echo $select1 = "Маджестик, 4+0";
            } elseif ($select1 == "6.5") {
                echo $select1 = "Маджестик, 4+4";
            } elseif ($select1 == "4") {
                echo $select1 = "Лён, 4+0";
            } elseif ($select1 == "5.0") {
                echo $select1 = "Лён, 4+4";
            } else {
                echo "xz";
            }
        ?>
    .</p>
   <p> Двухсторонняя ламинация:
       <?php
            $select2 = $_POST['select2']; 
            if ($select2 == "0") {
                echo $select2 = "Нет";
            } elseif ($select2 == "1.2") {
                echo $select2 = "Глянцевая 32 мк";
            } elseif ($select2 == "1.8") {
                echo $select2 = "Глянцевая 75 мк";
            } elseif ($select2 == "3.5") {
                echo $select2 = "Глянцевая 125 мк";
            } elseif ($select2 == "6.4") {
                echo $select2 = "Глянцевая 250 мк";
            } elseif ($select2 == "1.7") {
                echo $select2 = "Матовая 32 мк";
            } elseif ($select2 == "2.2") {
                echo $select2 = "Матовая 75 мк";
            } elseif ($select2 == "3.9") {
                echo $select2 = "Матовая 125 мк";
            } elseif ($select2 == "7.2") {
                echo $select2 = "Матовая 250 мк";
            } elseif ($select2 == "3.5") {
                echo $select2 = "Матовая бархатистая 28 мк";
            } elseif ($select2 == "4.3") {
                echo $select2 = "Матовая бархатистая 43 мк";
            } else {
                echo "xz";
            }
        ?>
    .</p>
    <p> Тираж: <?php echo $_POST['select3']; ?> .</p>
    <h2>Для подтверждения заказа, заполните форму:</h2>
        <input type="text" name="fio" placeholder="ФИО" required>
        <input type="text" name="number" placeholder="Номер телефона" required>
    <button type="submit">ОТПРАВИТЬ</button>

Заполнив нужные поля и нажав на кнопку "Отправить", данные попадают в файл "send.php" (обработчик):

<?php
$fio = $_POST['fio'];
$number = $_POST['number'];
$fio = htmlspecialchars($fio);
$number = htmlspecialchars($number);
$fio = urldecode($fio);
$number = urldecode($number);
$fio = trim($fio);
$number = trim($number);
if (mail("[email protected]", "Заявка с сайта", "Имя:".$fio.". Телефон: ".$number.". Материал: ".$select1.". Двухсторонняя ламинация: ".$select2.". Тираж: ".$select3 ))
 {     echo "Заявка успешно отправлена!";
} else {
    echo "При отправке заявки возникли ошибки";
}
?>

Проблема заключается в том, что в обработчик не попадают значения переменных $select1, $select2 и $select3, соответственно на почту мне приходят только ФИО и Номер телефона, которые пользователь заполнил в форме на странице zakaz.php

Как это исправить?


Ответы (1 шт):

Автор решения: Zhihar

А почему значения у вас вообще должны прийти, если вы их не передаете?

Или вы думаете, что если записать значение в <p></p>, то оно должно передаться в <form>?

Если я правильно понял вашу проблему, что вы тащите значение из формы в форму и лишь потом в итоговый обработчик, то записывайте его в input, который для этого и предназначен

<p> 
    Тираж: <?php echo $_POST['select3']; ?>.
    <input type = 'hidden' name = 'select3' value = '<?php echo $_POST['select3']; ?>'>
</p>

тогда вы сможете его получить в самом конце через $_POST

Или я не так проблему понял?

→ Ссылка