PHP работа с датами

Discussion in 'PHP' started by namak, 1 Apr 2010.

  1. namak

    namak Member

    Joined:
    29 Jan 2009
    Messages:
    66
    Likes Received:
    8
    Reputations:
    0
    в общем как грамотно сделать такую щтуку:
    в форме выбирается две даты(день,месяц,год) (дата1 всегда меньше дата2). обработчик же должен вывести разницу дней между этими датами.

    использовать селект в форме будет правильно?
     
  2. Hobba

    Hobba New Member

    Joined:
    30 Mar 2010
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    PHP:
    <?php 

    function date_diff$date_last$date_new)

        
    $date_last=explode('.',$date_last); 
        
    $date_new=explode('.',$date_new); 

        
    $count_day=1
        
    $count_month=0
        
    $kk=true
        
    $nn=true

        while (
    $kk)  { 
            
    $count_month=$count_month+1
            if ((
    mktime(0,0,0,$date_last[1]+$count_month,$da te_last[0],$date_last[2]))>(mktime(0,0,0,$date _new[1],$date_new[0],$date_new[2]))) { 
                
    $count_month=$count_month -1
                while (
    $nn) { 
                    if ((
    mktime(0,0,0,$date_last[1]+$count_month,$da te_last[0]+$count_day,$date_last[2]))==(mktim e(0,0,0,$date_new[1],$date_new[0],$date_new[]))) $nn=false;
                    else 
    $count_day=$count_day+1
                } 
            } 

            if ((
    mktime(0,0,0,$date_last[1]+$count_month,$da te_last[0]+$count_day,$date_last[2]))==(mktim e(0,0,0,$date_new[1],$date_new[0],$date_new[]))) $kk=false
        } 

        
    $arr[]=$count_month
        
    $arr[]=$count_day
        return 
    $arr


    $gg=date_diff('10.10.2001','11.11.2010'); 
    print_r($gg); 

    ?>
     
  3. Hobba

    Hobba New Member

    Joined:
    30 Mar 2010
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    Вопрос про селект непонятен
     
  4. namak

    namak Member

    Joined:
    29 Jan 2009
    Messages:
    66
    Likes Received:
    8
    Reputations:
    0
    как вводить дату в форму?
    я имел ввиду чтоб юзер не вводил, а выбирал день, месяц, год
    3 параметра. а обработчик уже из трех переменных делал дату и вычитал из второй первую.
     
  5. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Календарь какой-нибудь прикрутите к форме.
     
    1 person likes this.
  6. Hobba

    Hobba New Member

    Joined:
    30 Mar 2010
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    PHP:
    <html>
    <
    form action="select1.php" method="post">
        <
    select name="d">
            <
    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>
        </
    select>
        <
    select name="m">
            <
    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>
        </
    select>
        <
    select name="y">
            <
    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>
        </
    select>
        <
    input type="submit" value="Отправить"></p>
    </
    form>
    PHP:
    if (!empty($_POST) && is_numeric($_POST['m']) && is_numeric($_POST['d']) && is_numeric($_POST['y'])) {
        
    $date "{$_POST['d']}.{$_POST['m']}.{$_POST['y']}";
    }
     
    1 person likes this.
  7. namak

    namak Member

    Joined:
    29 Jan 2009
    Messages:
    66
    Likes Received:
    8
    Reputations:
    0
    вот получили две даты в переменных текстового типа.
    дальше конвертирую с помощью strtotime и все получается)
    спасибо!!


    другой вопрос, вот есть переменная в ней число. как мне значение этой переменной в обработчик отправить? чтоб юзер не видел.
     
  8. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    <input type="hidden" name="secret" value="ya_ebu_sobak" />
     
    1 person likes this.
  9. namak

    namak Member

    Joined:
    29 Jan 2009
    Messages:
    66
    Likes Received:
    8
    Reputations:
    0
    даа, точно! но спс что написал)