Подскажите пожалуйста, почему при заходе на страницу, форма обрабатывается заранее? а не по клику по кнопке? Это потому что она обрабатывается сама на себя? Если это так, то почему тогда обрабатывается не первый if , a сразу elseif ? Ссылка: drazler.ru Код: Код (Text): <DOCTYPE html> <meta charset="utf-8"> <html> <head> <title> Расчет цены на php </title> <style> </style> </head> <body> <div> <div> <div> <select name="nameEvent" form="data"> <option value="no"> Выбрать мероприятие </option> <option value="yes"> Свадьба </option> <option value="yes"> Юбилей </option> <option value="yes"> Торжество </option> <option value="yes"> Банкет </option> <option value="yes"> Корпаратив </option> <option value="yes"> Новый год </option> <option value="yes"> День Рождения </option> <option value="yes"> Праздник </option> <option value="yes"> Встреча </option> <option value="yes"> Другое... </option> </select> </div> <div> <input type="text" placeholder="Количество гостей" name="quantityGuest" maxlength="3" form="data"/> </div> <div> <p><input type="checkbox" name="nameService" value="yes" form="data">Тамада</p> <p><input type="checkbox" name="nameService" value="yes" form="data">Фотограф</p> <p><input type="checkbox" name="nameService" value="yes" form="data">Оператор</p> <p><input type="checkbox" name="nameService" value="yes" form="data">Диджей</p> <p><input type="checkbox" name="nameService" value="yes" form="data">Живая музыка</p> </div> <form id="data" method="POST"> </form> <p><input type="submit" form="data" value="Расчитать"></p> <?php function CalculationPrice(){ if ($_POST['nameEvent'] == "no"){ $MsgEvent = 'Вы не выбрали тип мероприятия!'; return $MsgEvent; } else { if ($_POST['quantityGuest'] == false){ $MsgNum = 'Вы не ввели количество гостей!'; return $MsgNum; } elseif (preg_match ('~\D+~',$_POST['quantityGuest'])){ $MsgNum = 'Вы ввели не коректное количество гостей!'; return $MsgNum; } else { preg_replace ('~\D+~',$_POST['quantityGuest']); htmlspecialchars ($_POST['quantityGuest']); ereg_replace ("\n"," ",$_POST['quantityGuest']); substr ($_POST['quantityGuest'],0,3); $Quantity = $_POST['quantityGuest']; $NAMEEVENT = 900; if ($_POST['nameService'] == "yes"){ $NAMESERVICE = 5000; } $Summa = $Quantity * $NAMEEVENT + $NAMESERVICE; return $Summa; } } } ?> <p> Итого: <?php echo (CalculationPrice()); ?> </p> </div> </div> </body> </html>
@esseleznev HTML: <form id="data" method="POST"> <select name="nameEvent" form="data"> <option value="no"> Выбрать мероприятие </option> <option value="yes"> Свадьба </option> <option value="yes"> Юбилей </option> <option value="yes"> Торжество </option> <option value="yes"> Банкет </option> <option value="yes"> Корпаратив </option> <option value="yes"> Новый год </option> <option value="yes"> День Рождения </option> <option value="yes"> Праздник </option> <option value="yes"> Встреча </option> <option value="yes"> Другое... </option> </select> </div> <div> <input type="text" placeholder="Количество гостей" name="quantityGuest" maxlength="3" form="data"/> </div> <div> <p><input type="checkbox" name="nameService" value="yes" form="data">Тамада</p> <p><input type="checkbox" name="nameService" value="yes" form="data">Фотограф</p> <p><input type="checkbox" name="nameService" value="yes" form="data">Оператор</p> <p><input type="checkbox" name="nameService" value="yes" form="data">Диджей</p> <p><input type="checkbox" name="nameService" value="yes" form="data">Живая музыка</p> </div> <p><input type="submit" form="data" value="Рассчитать"></p> </form>
Как вы написали, так он и работает... У вас идет вызов функции независимо от того, нажата ли кнопка или нет, вот оно и проверяет все условия при выдаче формы.
это я пробывал --- Добавлено --- И вправду что это я , а решение это только привязывать событие через JS ? Я что то догнать не могу как это без JS сделать.