Дата на раждане

dakata__92

Super Moderator
Искам да запаметявам датата на раждане на абонатите си в 1 поле в базата данни, но искам после да мога да оперирам със стойностите за ден, месец и година по отделно ! Как ще стане, ако във формата се селектират така :
Предполагам ще се ползва такова делене, но незнам как ще стане като полето примерно се казва born.
HTML:
	 <select name="day">
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
            <option value="6">6</option>
            <option value="7">7</option>
            <option value="8">8</option>
            <option value="9">9</option>
            <option value="10">10</option>
            <option value="11">11</option>
            <option value="12">12</option>
            <option value="13">13</option>
            <option value="14">14</option>
            <option value="15">15</option>
            <option value="16">16</option>
            <option value="17">17</option>
            <option value="18">18</option>
            <option value="19">19</option>
            <option value="20">20</option>
            <option value="21">21</option>
            <option value="22">22</option>
            <option value="23">23</option>
            <option value="24">24</option>
            <option value="25">25</option>
            <option value="26">26</option>
            <option value="27">27</option>
            <option value="28">28</option>
            <option value="29">29</option>
            <option value="30">30</option>
            <option value="31">31</option>
         </select>
         <select name="month">
         <option value="jan">Януари</option>
         <option value="feb">Февруари</option>
         <option value="mar">Март</option>
         <option value="apr">Април</option>
         <option value="may">Май</option>
         <option value="jun">Юни</option>
         <option value="jul">Юли</option>
         <option value="aug">Август</option>
         <option value="sep">Септември</option>
         <option value="oct">Октомври</option>
         <option value="nov">Ноември</option>
         <option value="dec">Декември</option>
         </select>
           <select name="year">
                  <option value="1980">1980</option>
                  <option value="1981">1981</option>
                  <option value="1982">1982</option>
                  <option value="1983">1983</option>
                  <option value="1984">1984</option>
                  <option value="1985">1985</option>
                  <option value="1986">1986</option>
                  <option value="1987">1987</option>
                  <option value="1988">1988</option>
                  <option value="1989">1989</option>
                  <option value="1990">1990</option>
                  <option value="1991">1991</option>
                  <option value="1992">1992</option>
                  <option value="1993">1993</option>
                  <option value="1994">1994</option>
                  <option value="1995">1995</option>
                  <option value="1996">1996</option>
                  <option value="1997">1997</option>
                  <option value="1998">1998</option>
                  <option value="1999">1999</option>
                  <option value="2000">2000</option>
                  <option value="2001">2001</option>
                  <option value="2002">2002</option>
                  <option value="2003">2003</option>
                  <option value="2004">2004</option>
                  <option value="2005">2005</option>
                  <option value="2006">2006</option>
                  <option value="2007">2007</option>
                  <option value="2008">2008</option>
                  <option value="2009">2009</option>
                  <option value="2010">2010</option>
                  <option value="2011">2011</option>
           
                  
                 
                 </select>
 
В полето born пращаш променливата $sum!
PHP:
$day = $_POST['month'];
$month = $_POST['month'];
$year = $_POST['year'];

$sum = $day.".".$month.".".$year;
//кода за пращането в базата данни

Извеждането става така:
PHP:
$sql = mysql_query("SELECT born FROM users WHERE id=1");
$row = mysql_fetch_assoc($sql);
$control = $row['born'];
$data = explode(".",$control);
echo "Ден: $data[0] <br />";
echo "Месец: $data[1] <br />";
echo "Година: $data[2] <br />";

Ако имаш някакви допълнителни въпроси, питай.
 
Ами аз се сещам за следния вариант:
Да речем записваш датата под формат 29.06.2012.След като я изведеш я explode-ваш - $date = explode(".",$row['date']); и примерно,за да работиш с деня ползваш $date[0] , с месеца $date[1] , с годината $date[2].Надявам се,че съм те разбрал и че това ще ти свърши работа(не ме бива много в обясненията).

Едит :
Извинявам се,но не съм видял какво представлява твоята форма.Искам само да кажа,че идеята е аналогична,както съм обяснил по-горе.
 
fbian каза:
Ами аз се сещам за следния вариант:
Да речем записваш датата под формат 29.06.2012.След като я изведеш я explode-ваш - $date = explode(".",$row['date']); и примерно,за да работиш с деня ползваш $date[0] , с месеца $date[1] , с годината $date[2].Надявам се,че съм те разбрал и че това ще ти свърши работа(не ме бива много в обясненията).

Едит :
Извинявам се,но не съм видял какво представлява твоята форма.Искам само да кажа,че идеята е аналогична,както съм обяснил по-горе.
Това е добра идея утре ще я пробвам :) Чакам и други предложения !
 
записваш си датата в този формат в БДто (date)

година-месец-ден

пример

PHP:
$data = '2012-06-12';

и ако искаш да вземеш месеца става

PHP:
$mesec = date('M',$data);

за година

PHP:
$godina = date('Y',$data);

и така предполагам за ден се сещаш как е ;)
 
Нещо не го правя като хората въвеждането от селекта ---

$bday = addslashes(htmlspecialchars($_POST["bday"]));
$bmonth = addslashes(htmlspecialchars($_POST["bmonth"]));
$byear = addslashes(htmlspecialchars($_POST["byear"]));

$born = date('$byear-$bmonth-$bday');
// Въвеждам $born в полето с тип дата ...

Години : <option value='2002'>2002</option>
Дни : <option value='29'>29</option>
Месеци : <option value='10'>Октомври </option>

Какво не правя като хората за да се въведе датата в полето смисъл явно е при променливата $born проблема !
 
Код:
function zodia ($birthday)
  {
    list($day,$month,$year) = explode(".",$birthday);
    $day = intval($day);
    $month = intval($month);
    if (($day >= 22 && $month == 12) || ($day <= 20 && $month == 1)) { $zodiq = "Козирог"; }
    elseif (($day >= 21 && $month == 1) || ($day <= 19 && $month == 2)) { $zodiq = "Водолей"; }
    elseif (($day >= 20 && $month == 2) || ($day <= 21 && $month == 3)) { $zodiq = "Риби"; }
    elseif (($day >= 22 && $month == 3) || ($day <= 21 && $month == 4)) { $zodiq = "Овен"; }
    elseif (($day >= 22 && $month == 4) || ($day <= 22 && $month == 5)) { $zodiq = "Телец"; }
    elseif (($day >= 23 && $month == 5) || ($day <= 21 && $month == 6)) { $zodiq = "Близнаци"; }
    elseif (($day >= 22 && $month == 6) || ($day <= 22 && $month == 7)) { $zodiq = "Рак"; }
    elseif (($day >= 23 && $month == 7) || ($day <= 22 && $month == 8)) { $zodiq = "Лъв"; }
    elseif (($day >= 23 && $month == 8) || ($day <= 22 && $month == 9)) { $zodiq = "Дева"; }
    elseif (($day >= 23 && $month == 9) || ($day <= 22 && $month == 10)) { $zodiq = "Везни"; }
    elseif (($day >= 23 && $month == 10) || ($day <= 22 && $month == 11)) { $zodiq = "Скорпион"; }
    elseif (($day >= 23 && $month == 11) || ($day <= 21 && $month == 12)) { $zodiq = "Стрелец"; }

    return $zodiq;
  }
 
dakata__92 каза:
Radko каза:
dakata__92 каза:
$born = $byear.'-'.$bmonth.'-'.$bday;
Офф наистина бре ... а как примерно мога да изчисля на колко години е и коя зодия е примерно :)

за годините правиш

date('Y M D',strtotime('now'));

и изваждаш с датата от БДто
 
Как да исчисля годините правилно смисъм да премахна тиретата от въведената рожденна дата и да ги извадя от $today = date("Ymd"); ?
 
Май трябва да се получи така :)

$born = $r["born"];
$today = date("Ymd");
list($year,$month,$day) = explode("-",$born);
$year = intval($year);
$month = intval($month);
$day = intval($day);
$sum = "$year$month$day";
$minus = $today-$sum;
$old = substr("$minus", 0, 2);
 
PHP:
$date1 = "2007-03-24";
$date2 = "2009-06-26";

$diff = abs(strtotime($date2) - strtotime($date1));

$years = floor($diff / (365*60*60*24));
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

Не трябва да премахваш никакви тирета, нали търсиш точна стойност.
 
Radko каза:
PHP:
$date1 = "2007-03-24";
$date2 = "2009-06-26";

$diff = abs(strtotime($date2) - strtotime($date1));

$years = floor($diff / (365*60*60*24));
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

Не трябва да премахваш никакви тирета, нали търсиш точна стойност.

Не разбрах примера ти какви стойности ще изведе ...
 
в случая на теб ти трябва само $years това е разликата от датите в години, другото е остатъка в месеци и дни ако ти трябва.
 
А как да подкарам функцията за проверка на зодията ? Как да я извикам :)
 

Back
Горе