2011-09-24 18 views
0

drupal形式のdate_popupから選択した日付を取得できるようにする関数が必要です。これは私の試行したコードです。Imは妊娠計算機用のフォームを作成しています。私が選択した値を読み取るための機能を書かれたが、それは私にdrupal形式で日付を計算する

 <?php 

      /* 
      *Implementing hook_menu 
      */ 
      function Pregnancy_menu() { 
      $items['form/Pregnancy'] = array(
      'title' => 'Pregnancy Calculator', 
      'page callback' => 'drupal_get_form', 
      'page arguments' => array('Pregnancy_form'), 
      'access callback' => TRUE, 
     ); 
     return $items; 
      } 

     function Pregnancy_form($form_type) { 

     $form['Pregnancy_Period'] = array(
     '#type' => 'date_popup', 
     '#title' => 'Date of your last menstrual period', 
     '#date_format' => 'Y-m-d', 
     '#date_text_parts' => array('year'), 
     '#date_increment' => 30, 
     '#date_year_range' => '-1:0', 
     '#default_value' => date(Y) . date(M) . date(D), 
     ); 



      $form['Calculate_Forward'] = array(
      '#type' => 'submit', 
      '#value' => t('Calculate Forward'), 
      ); 

     $form['Reset_form'] = array(
     '#type' => 'submit', 
     '#value' => t('Reset this Form'), 
     ); 

     $form['Conception_result'] = array(
     '#type' => 'textfield', 
     '#title' => t('Conception Occurred:(about two weeks after last menstrual period)'),  
     '#prefix' => '<div style="float:left;">', 
     '#suffix' => '</div>', 
    ); 

    $form['First_trimester_Ends'] = array(
    '#type' => 'textfield', 
    '#title' => t('First Trimester Ends :(12 weeks)'),  
    '#prefix' => '<div style="float:left;">', 
    '#suffix' => '</div>', 
); 
$form['Second_trimester_Ends'] = array(
'#type' => 'textfield', 
'#title' => t('Second Trimester Ends :(27 weeks)'),  
'#prefix' => '<div style="float:left;">', 
'#suffix' => '</div>', 
); 

    $form['Due_Date'] = array(
    '#type' => 'date_popup', 
    '#title' => 'Estimated Due Date (40 weeks)', 
    '#date_format' => 'Y-m-d', 
    '#date_text_parts' => array('year'), 
    '#description' => t('Plus or Minus 2 weeks'), 
    '#date_increment' => 30, 
    '#date_year_range' => '+1:+1', 
    '#default_value' => date(Y) . date(M) . date(D), 
); 

    $form['Calculate_Backward'] = array(
     '#type' => 'submit', 
     '#value' => t('Calculate Backward'), 
    ); 


    return $form; 
    } 

    function Pregnancy_form_submit($form, &$form_state) { 

//私はここで何を書くべき1970-01-01日付を与えている私のform.Asテストで日付の計算を実装する方法を知っておく必要があるのDrupal選択された日付の値を取得し、特定の時間を追加します。使用してテストするには:

答えて

0

DrupalのフォームAPIを使用しているときに、$ _POST変数に直接アクセスしたくない場合は、$form_state変数、具体的にはvaluesキーを使用してください。

送信機能では、$form_state['values']['Due_Date']にはテキストボックスに入力された値が含まれ、$form_state['values']['Second_trimester_Ends']にはそのフィールドの入力などが含まれます。 strtotimemktimeの組み合わせを使用してその値に時間の量を追加するには

list($year, $month, $day) = explode('-', $form_state['values']['Due_Date']); 

// Prepare a timestamp based on the received date at 00:00:00 hours 
$date = mktime(0, 0, 0, $month, $day, $year); 
$new_date = strtotime('+2 hours', $date); 
$new_date_formatted = date('Y-m-d', $new_date); 

多くのオプションがありますが、あなたが使用することができ、個々の日付部分を取得するには

strtotime関数の場合は、上にリンクされたドキュメントページを見てください。

希望すること

+0

どのように日付の各部分を取ることができますか? – sally

+0

私は上記の答えで更新しました – Clive

+0

私はJavaScriptで計算を行う必要がある場合はどうすればよいでしょう – sally