echo '<form action="" method="GET">';
echo '<input type="date" name="birthday">';
echo '<input type="submit" value="отправить">';
echo '</form>';
$horoscopes =
[
'Овны' => 'найдите в себе желание радоваться этой жизни, даже если не очень хочется.',
'Тельцы' => 'сегодня даже работа ответит вам взаимностью.',
'Близнецы' => 'умерьте аппетиты и не выходите за рамки разумного.',
'Раки' => 'вы в отличной физической форме и преодолеете все препятствия.',
'Львы' => 'у вас есть тактика, вот её и придерживайтесь.',
'Девы' => 'кто-то захочет совершить нападение на ваше сердце.',
'Весы' => 'настроение будет на высоте, а этого уже достаточно.',
'Скорпионы' => 'все бонусы этого дня будут поджидать вас вечером.',
'Стрельцы' => 'наслаждайтесь моментом, а о будущем вы ещё успеете подумать.',
'Козероги' => 'соблюдайте сегодня максимально дружелюбный вид.',
'Водолеи' => 'впечатлений, полученых сегодня вам хватит надолго.',
'Рыбы' => 'звёзды дают зелёный свет на новые знакомства.',
];
if (isset($_GET['birthday'])) {
if ($_GET['birthday'] === '') {
echo 'Вы не выбрали дату рождения!';
} else {
$currentYear = date('Y');
// Порядковый номер дня рождения в году
$birthday = (int)date('z', strtotime($_GET['birthday'])) + 1;
switch ($birthday) {
case ($birthday >= (int)date('z', mktime(0, 0, 0, 3, 21, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 4, 19, $currentYear))):
echo "Овны: $horoscopes[Овны]";
break;
case ($birthday >= (int)date('z', mktime(0, 0, 0, 4, 20, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 5, 20, $currentYear))):
echo "Тельцы: $horoscopes[Тельцы]";
break;
case ($birthday >= (int)date('z', mktime(0, 0, 0, 5, 21, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 6, 20, $currentYear))):
echo "Близнецы: $horoscopes[Близнецы]";
break;
case ($birthday >= (int)date('z', mktime(0, 0, 0, 6, 21, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 7, 22, $currentYear))):
echo "Раки: $horoscopes[Раки]";
break;
case ($birthday >= (int)date('z', mktime(0, 0, 0, 7, 23, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 8, 22, $currentYear))):
echo "Львы: $horoscopes[Львы]";
break;
case ($birthday >= (int)date('z', mktime(0, 0, 0, 8, 23, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 9, 22, $currentYear))):
echo "Девы: $horoscopes[Девы]";
break;
case ($birthday >= (int)date('z', mktime(0, 0, 0, 9, 23, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 10, 22, $currentYear))):
echo "Весы: $horoscopes[Весы]";
break;
case ($birthday >= (int)date('z', mktime(0, 0, 0, 10, 23, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 11, 21, $currentYear))):
echo "Скорпионы: $horoscopes[Скорпионы]";
break;
case ($birthday >= (int)date('z', mktime(0, 0, 0, 11, 22, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 12, 21, $currentYear))):
echo "Стрельцы: $horoscopes[Стрельцы]";
break;
case ($birthday >= (int)date('z', mktime(0, 0, 0, 12, 22, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 1, 19, $currentYear))):
echo "Козероги: $horoscopes[Козероги]";
break;
case ($birthday >= (int)date('z', mktime(0, 0, 0, 1, 20, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 2, 18, $currentYear))):
echo "Водолеи: $horoscopes[Водолеи]";
break;
case ($birthday >= (int)date('z', mktime(0, 0, 0, 2, 19, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 3, 20, $currentYear))):
echo "Рыбы: $horoscopes[Рыбы]";
break;
}
}
}
Почему-то ничего не выводит, если вводишь диапазон дат для Козерога.
$birthday >= (int)date('z', mktime(0, 0, 0, 12, 22, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 1, 19, $currentYear))для даты 1991-12-22 будет выглядить так: 358 >= 356 И 358 <= 18
case ($birthday >= (int)date('z', mktime(0, 0, 0, 12, 22, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 12, 31, $currentYear))):
echo "Козероги: $horoscopes[Козероги]";
break;
case ($birthday >= (int)date('z', mktime(0, 0, 0, 1, 1, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 1, 19, $currentYear))):
echo "Козероги: $horoscopes[Козероги]";
break;
function getZodiacSign($date) {
$zodiacSigns = [
['Козерог', '01-01', '01-19'],
['Водолей', '01-20', '02-18'],
['Рыбы', '02-19', '03-20'],
['Овен', '03-21', '04-19'],
['Телец', '04-20', '05-20'],
['Близнецы', '05-21', '06-20'],
['Рак', '06-21', '07-22'],
['Лев', '07-23', '08-22'],
['Дева', '08-23', '09-22'],
['Весы', '09-23', '10-22'],
['Скорпион', '10-23', '11-21'],
['Стрелец', '11-22', '12-21'],
['Козерог', '12-22', '12-31']
];
$birthDate = date('m-d', strtotime($date));
foreach ($zodiacSigns as $sign) {
// Тут 0, 1, 2 не очень хороший код, можешь улучшить его самостоятельно, для примера сойдет
if ($birthDate >= $sign[1] && $birthDate <= $sign[2]) {
return $sign[0];
}
}
return null;
}
if (isset($_GET['birthday'])) {
if ($_GET['birthday'] === '') {
echo 'Вы не выбрали дату рождения!';
} else {
$res = getZodiacSign($_GET['birthday']);
echo $horoscopes[$res] ?? "error";
}
}
Есть массив гороскопов. Пользователь вводит дату рождения в input и после отправки должен определиться его знак зодиака и выводится предсказание для этого знака на текущий день.
<?php
echo '<form action="" method="GET">';
echo '<input type="date" name="birthday" required>';
echo '<input type="submit" value="Отправить">';
echo '</form>';
$horoscopes = [
'Овны' => 'найдите в себе желание радоваться этой жизни, даже если не очень хочется.',
'Тельцы' => 'сегодня даже работа ответит Вам взаимностью.',
'Близнецы' => 'умерьте аппетиты и не выходите за рамки разумного.',
'Раки' => 'вы в отличной физической форме и преодолеете все препятствия.',
'Львы' => 'у Вас есть тактика, вот её и придерживайтесь.',
'Девы' => 'кто-то захочет совершить нападение на Ваше сердце.',
'Весы' => 'настроение будет на высоте, а этого уже достаточно.',
'Скорпионы' => 'все бонусы этого дня будут поджидать Вас вечером.',
'Стрельцы' => 'наслаждайтесь моментом, а о будущем Вы ещё успеете подумать.',
'Козероги' => 'соблюдайте сегодня максимально дружелюбный вид.',
'Водолеи' => 'впечатлений, полученых сегодня Вам хватит надолго.',
'Рыбы' => 'звёзды дают зелёный свет на новые знакомства.',
];
if (isset($_GET['birthday'])) {
$birthday = new DateTime($_GET['birthday']);
$monthDay = (int)$birthday->format('md');
$zodiac = '';
if ($monthDay >= 321 && $monthDay <= 419) {
$zodiac = 'Овны';
} elseif ($monthDay >= 420 && $monthDay <= 520) {
$zodiac = 'Тельцы';
} elseif ($monthDay >= 521 && $monthDay <= 620) {
$zodiac = 'Близнецы';
} elseif ($monthDay >= 621 && $monthDay <= 722) {
$zodiac = 'Раки';
} elseif ($monthDay >= 723 && $monthDay <= 822) {
$zodiac = 'Львы';
} elseif ($monthDay >= 823 && $monthDay <= 922) {
$zodiac = 'Девы';
} elseif ($monthDay >= 923 && $monthDay <= 1022) {
$zodiac = 'Весы';
} elseif ($monthDay >= 1023 && $monthDay <= 1121) {
$zodiac = 'Скорпионы';
} elseif ($monthDay >= 1122 && $monthDay <= 1221) {
$zodiac = 'Стрельцы';
} elseif ($monthDay >= 1222 || $monthDay <= 119) {
$zodiac = 'Козероги';
} elseif ($monthDay >= 120 && $monthDay <= 218) {
$zodiac = 'Водолеи';
} elseif ($monthDay >= 219 && $monthDay <= 320) {
$zodiac = 'Рыбы';
}
if ($zodiac) {
echo "$zodiac: " . $horoscopes[$zodiac];
} else {
echo 'Не удалось определить Ваш знак зодиака.';
}
}
?>