Тема: Проблема в роботі з формами та switch case
(Використовую програму Xampp)
При першому запуску програми та за замовчуванням(тобто коли форма порожня), під формою виникає повідомлення:
Ваш бал: А - "Відмінно!"
Ось код:
<html>
<head>
<title>Форма для балів</title>
</head>
<body>
<form action="marks.php" method="post">
<p>Введіть бал(1-100):</p>
<p><input type="text" name="mark">
<input type="submit" name="submit" value="Ок"></p>
</form>
<?php
$grades = isset($_POST['mark'])?htmlspecialchars($_POST['mark']):'';
switch ($grades) {
case ($grades <= 100 && $grades >= 90):
echo '<h2>Ваш бал: А - "Відмінно!"</h2>';
break;
case ($grades <= 89 && $grades >= 80):
echo '<h2>Ваш бал: B - "Дуже добре"</h2>';
break;
case ($grades <= 79 && $grades >= 70):
echo '<h2>Ваш бал: C - "Добре"</h2>';
break;
case ($grades <= 69 && $grades >= 65):
echo '<h2>Ваш бал: D - "Задовільно"</h2>';
break;
case ($grades <= 64 && $grades >= 60):
echo '<h2>Ваш бал: E - "Достатньо"</h2>';
break;
case ($grades <= 59 && $grades >= 35):
echo '<h2>Ваш бал: FX - "Незадовільно з можливістю повторного складання"</h2>';
break;
case ($grades <= 34 && $grades >= 1):
echo '<h2>Ваш бал: X - "Незадовільно з обовязковим повторним курсом"</h2>';
break;
default:
echo '<h2>Спробуйте ще раз.</h2>';
break;
}
?>
</body>
</html>
Вирішення проблеми було знайдено з допомогою коду, в який було включено умовний оператор if else та функцію empty() :
<html>
<head>
<title>Форма для балів</title>
</head>
<body>
<form action="marks.php" method="post">
<p>Введіть бал(1-100):</p>
<p><input type="text" name="mark">
<input type="submit" name="submit" value="Ок"></p>
</form>
<?php
$grades = isset($_POST['mark'])?htmlspecialchars($_POST['mark']):'';
if (empty($grades)){
echo "";
} else {
switch ($grades) {
case ($grades <= 100 && $grades >= 90):
echo '<h2>Ваш бал: А - "Відмінно!"</h2>';
break;
case ($grades <= 89 && $grades >= 80):
echo '<h2>Ваш бал: B - "Дуже добре"</h2>';
break;
case ($grades <= 79 && $grades >= 70):
echo '<h2>Ваш бал: C - "Добре"</h2>';
break;
case ($grades <= 69 && $grades >= 65):
echo '<h2>Ваш бал: D - "Задовільно"</h2>';
break;
case ($grades <= 64 && $grades >= 60):
echo '<h2>Ваш бал: E - "Достатньо"</h2>';
break;
case ($grades <= 59 && $grades >= 35):
echo '<h2>Ваш бал: FX - "Незадовільно з можливістю повторного складання"</h2>';
break;
case ($grades <= 34 && $grades >= 1):
echo '<h2>Ваш бал: X - "Незадовільно з обовязковим повторним курсом"<span>:(</span></h2>';
break;
default:
echo '<h2>Спробуйте ще раз. Зауважте, потрібно ввести число від 1 до 100.</h2>';
break;
}
}
?>
</body>
</html>
Питання полягає в тому, що я хочу зрозуміти, чому в першому коді трапилась така помилка?