Рейтинг@Mail.ru
 

Знак зодиака

Очень часто, особенно при разработке социальных сетей, требуется определить знак зодиака по дате рождения. Вот примерно так
   
Скрипт, который поможет это сделать, крайне прост.

Для создания этой функции мы будем использовать одну особенность задиакальных знаков: каждый знак начинается в определенный месяц. То есть в один месяц может начинаться только один цикл созвездия. (Или не цикл, я не знаю как это называется, это к астрологам). По-этому удобно использовать массив с числовыми индексами равными номеру месяца, когда знак начинает "властвовать".

Создаем многомерный массив с названием знака зодиака и началом его действия начиная с первого
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
    $Signs 
= array ( 
                                 
=> array ('name' => 'Водолей'
                                                
'start' => '1.21'), 
                                      array (
'name' => 'Рыбы'
                                                
'start' => '2.19'), 
                                      array (
'name' => 'Овен'
                                                
'start' => '3.21'), 
                                      array (
'name' => 'Телец'
                                                
'start' => '4.21'), 
                                      array (
'name' => 'Близнецы'
                                                
'start' => '5.21'), 
                                      array (
'name' => 'Рак'
                                                
'start' => '6.22'), 
                                      array (
'name' => 'Лев'
                                                
'start' => '7.23'), 
                                      array (
'name' => 'Дева'
                                                
'start' => '8.24'), 
                                      array (
'name' => 'Весы'
                                                
'start' => '9.24'), 
                                      array (
'name' => 'Скорпион'
                                                
'start' => '10.24'), 
                                      array (
'name' => 'Стрелец'
                                                
'start' => '11.23'), 
                                      array (
'name' => 'Козерог'
                                                
'start' => '12.22'
                            );


Функцией UserZodiac() мы будем определять знак зодиака
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
   
/**     
 * Function of definition of a zodiacal sign on a date of birth     
 * Функция определения знака зодиака по дате рождения      
 * @param  string $Day         день рождения  
 * @param  string $Month       месяц рождения  
 * @param  array  $Day         массив знаков зодиака     
 * @return string              результат    
 *     
 * @author IT studio IRBIS-team (www.irbis-team.com)     
 * @copyright © 2010 IRBIS-team      
 */     
    
function UserZodiac ($Day$Month$Signs)  
    {  

        
/*   
        ** Переменная $Month у нас так же является  
        ** индексом в массиве. Объединяем переменные  
        ** $Month и $Day, чтобы получить десятичное число  
        ** и сравниваем его с датой начала действия знака   
        ** соответствующего массива, которая у нас тоже  
        ** является десятичным числом  
        */  
      
        // Если дата рождения больше "стартовой" даты  
        
if ($Month .'.'$Day $Signs[(int)$Month]['start'])  
           
// то знак зодиака содержится в массиве с индексом $Month  
            
$UserSign $Signs[(int)$Month]['name'];  
        
// Если дата меньше "стартовой" даты  
        
elseif ($Month != 0)  
            
// то нужный знак находится на один индекс раньше ($Month - 1)  
            
$UserSign $Signs[(int)$Month 1]['name'];  
        
// Ну а так как предыдущее условия не подходит для нас,  
        // т.к., вопреки законам математики, перед 1-м месяцем идет 12-й,  
        // нам понадобится отдельное условие для Козерогов. Особенные они у нас =)  
        
else  
            
// Перескакиваем на 12-ю ячейку, если козерог родился в январе  
            
$UserSign $Signs[12]['name'];  

        
//  Возвращаем результат  
        
return $UserSign;  
    }


Массив значений, кстати, можно сформировать не только из названий, но и из путей к картинкам. Тогда будет красивее.
Ну и для проверки снабдим скрипт формой и функцией возврата селекта:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<?php
   
    $Signs 
= array ( 
                                 
=> array ('name' => 'Водолей'
                                                
'start' => '1.21'), 
                                      array (
'name' => 'Рыбы'
                                                
'start' => '2.19'), 
                                      array (
'name' => 'Овен'
                                                
'start' => '3.21'), 
                                      array (
'name' => 'Телец'
                                                
'start' => '4.21'), 
                                      array (
'name' => 'Близнецы'
                                                
'start' => '5.21'), 
                                      array (
'name' => 'Рак'
                                                
'start' => '6.22'), 
                                      array (
'name' => 'Лев'
                                                
'start' => '7.23'), 
                                      array (
'name' => 'Дева'
                                                
'start' => '8.24'), 
                                      array (
'name' => 'Весы'
                                                
'start' => '9.24'), 
                                      array (
'name' => 'Скорпион'
                                                
'start' => '10.24'), 
                                      array (
'name' => 'Стрелец'
                                                
'start' => '11.23'), 
                                      array (
'name' => 'Козерог'
                                                
'start' => '12.22'
                            ); 
                             
    
$Sig_img = array ( 
                                 
=> array ('name' => '<img src="zodiac/1.gif" border="0" />'
                                                
'start' => '1.21'), 
                                      array (
'name' => '<img src="zodiac/2.gif" border="0" />'
                                                
'start' => '2.19'), 
                                      array (
'name' => '<img src="zodiac/3.gif" border="0" />'
                                                
'start' => '3.21'), 
                                      array (
'name' => '<img src="zodiac/4.gif" border="0" />'
                                                
'start' => '4.21'), 
                                      array (
'name' => '<img src="zodiac/5.gif" border="0" />'
                                                
'start' => '5.21'), 
                                      array (
'name' => '<img src="zodiac/6.gif" border="0" />'
                                                
'start' => '6.22'), 
                                      array (
'name' => '<img src="zodiac/7.gif" border="0" />'
                                                
'start' => '7.23'), 
                                      array (
'name' => '<img src="zodiac/8.gif" border="0" />'
                                                
'start' => '8.24'), 
                                      array (
'name' => '<img src="zodiac/9.gif" border="0" />'
                                                
'start' => '9.24'), 
                                      array (
'name' => '<img src="zodiac/10.gif" border="0" />'
                                                
'start' => '10.24'), 
                                      array (
'name' => '<img src="zodiac/11.gif" border="0" />'
                                                
'start' => '11.23'), 
                                      array (
'name' => '<img src="zodiac/12.gif" border="0" />'
                                                
'start' => '12.22'
                            );                             
                             
                             
/**     
 * Function of definition of a zodiacal sign on a date of birth     
 * Функция определения знака зодиака по дате рождения      
 * @param  string $Day         день рождения  
 * @param  string $Month       месяц рождения  
 * @param  array  $Day         массив знаков зодиака     
 * @return string              результат    
 *     
 * @author IT studio IRBIS-team (www.irbis-team.com)     
 * @copyright © 2010 IRBIS-team      
 */     
    
function UserZodiac ($Day$Month$Signs)  
    {  
        if (
$Month .'.'$Day $Signs[(int)$Month]['start'])  
            
$UserSign $Signs[(int)$Month]['name'];  
        elseif (
$Month != 0)  
            
$UserSign $Signs[(int)$Month 1]['name']; 
        else  
            
$UserSign $Signs[12]['name'];  

        return 
$UserSign;  
    } 
     
      
    function 
returnSelect($id$return
    { 
       return (
$id == $return) ? 'selected="selected"' NULL
    }  

    
$ok = !empty($_POST['ok']) ? true false
    
$Day = !empty($_POST['Day']) ? $_POST['Day'] : NULL;     
    
$Month = !empty($_POST['Month']) ? $_POST['Month'] : NULL
        
    if(
$ok
    {  
        echo 
'Ваш знак зодиака <br>' UserZodiac($Day$Month$Signs) , '<br>'
        echo 
UserZodiac($Day$Month$Sig_img);         
    } 
     
     
?>     
<form action="" method="post"> 
<select name="Day" class="form_element">                                                                     
<option value="0"  selected="selected">День</option> 
<option value="01" <?php echo returnSelect('01'$Day); ?> >1</option> 
<option value="02" <?php echo returnSelect('02'$Day); ?> >2</option> 
<option value="03" <?php echo returnSelect('03'$Day); ?> >3</option> 
<option value="04" <?php echo returnSelect('04'$Day); ?> >4</option> 
<option value="05" <?php echo returnSelect('05'$Day); ?> >5</option> 
<option value="06" <?php echo returnSelect('06'$Day); ?> >6</option> 
<option value="07" <?php echo returnSelect('07'$Day); ?> >7</option> 
<option value="08" <?php echo returnSelect('08'$Day); ?> >8</option> 
<option value="09" <?php echo returnSelect('09'$Day); ?> >9</option> 
<option value="10" <?php echo returnSelect('10'$Day); ?> >10</option> 
<option value="11" <?php echo returnSelect('11'$Day); ?> >11</option> 
<option value="12" <?php echo returnSelect('12'$Day); ?> >12</option> 
<option value="13" <?php echo returnSelect('13'$Day); ?> >13</option> 
<option value="14" <?php echo returnSelect('14'$Day); ?> >14</option> 
<option value="15" <?php echo returnSelect('15'$Day); ?> >15</option> 
<option value="16" <?php echo returnSelect('16'$Day); ?> >16</option> 
<option value="17" <?php echo returnSelect('17'$Day); ?> >17</option> 
<option value="18" <?php echo returnSelect('18'$Day); ?> >18</option> 
<option value="19" <?php echo returnSelect('19'$Day); ?> >19</option> 
<option value="20" <?php echo returnSelect('20'$Day); ?> >20</option> 
<option value="21" <?php echo returnSelect('21'$Day); ?> >21</option> 
<option value="22" <?php echo returnSelect('22'$Day); ?> >22</option> 
<option value="23" <?php echo returnSelect('23'$Day); ?> >23</option> 
<option value="24" <?php echo returnSelect('24'$Day); ?> >24</option> 
<option value="25" <?php echo returnSelect('25'$Day); ?> >25</option> 
<option value="26" <?php echo returnSelect('26'$Day); ?> >26</option> 
<option value="27" <?php echo returnSelect('27'$Day); ?> >27</option> 
<option value="28" <?php echo returnSelect('28'$Day); ?> >28</option> 
<option value="29" <?php echo returnSelect('29'$Day); ?> >29</option> 
<option value="30" <?php echo returnSelect('30'$Day); ?> >30</option> 
<option value="31" <?php echo returnSelect('31'$Day); ?> >31</option>                                                                 
</select> 
 &nbsp;                                                                    
<select name="Month" class="form_element"> 
<option value="0" selected="selected">Месяц</option> 
<option value="01" <?php echo returnSelect('01'$Month); ?> >Январь</option> 
<option value="02" <?php echo returnSelect('02'$Month); ?> >Февраль</option> 
<option value="03" <?php echo returnSelect('03'$Month); ?> >Март</option> 
<option value="04" <?php echo returnSelect('04'$Month); ?> >Апрель</option> 
<option value="05" <?php echo returnSelect('05'$Month); ?> >Май</option> 
<option value="06" <?php echo returnSelect('06'$Month); ?> >Июнь</option> 
<option value="07" <?php echo returnSelect('07'$Month); ?> >Июль</option> 
<option value="08" <?php echo returnSelect('08'$Month); ?> >Август</option> 
<option value="09" <?php echo returnSelect('09'$Month); ?> >Сентябрь</option> 
<option value="10" <?php echo returnSelect('10'$Month); ?> >Октябрь</option> 
<option value="11" <?php echo returnSelect('11'$Month); ?> >Ноябрь</option> 
<option value="12" <?php echo returnSelect('12'$Month); ?> >Декабрь</option> 
</select> &nbsp; 
<input name="ok" type="submit" value="Определить знак">     
</form>
Вот скрипт.

Ходько Сергей aka TranceIT