2011-09-16 5 views
1

をドロップダウン。ただし、12月を過ぎると2012年は変わりません。カレンダーこれは非常にシンプルでなければなりませんが、私はそれを修正can`tバグ

はこちらをご覧ください: http://protekco.com/index.php/en/reservation.html

そして、それを呼び出すコードは:

 echo AHtml::getMonthsSelect('imonth', (int) $month, $year, $currentMonth, $currentYear, $config->calendarDeepMonth, 'onchange="Calendars.monthNavigation(this.value)"'); ?> 

$ currentYearは、サイト上に提示される実際の年間の変数です。私たちが今年の終わりを過ぎているなら、基本的には+1を追加する必要があります。何か案は?

ありがとう!

編集:

function getMonthsSelect($name, $selectedMonth, $selectedYear, $month, $year, $deep, $attribs = '') 
{ 
    $months = array(1 => JText::_('January') , 2 => JText::_('February') , 3 => JText::_('March') , 4 => JText::_('April') , 5 => JText::_('May') , 6 => JText::_('June') , 7 => JText::_('July') , 8 => JText::_('August') , 9 => JText::_('September') , 10 => JText::_('October') , 11 => JText::_('November') , 12 => JText::_('December')); 

    $stop = $month + $deep; 
    for ($i = $month; $i < $stop; $i ++) 
     $arr[] = JHTML::_('select.option', ($key = (! ($k = $i % 12) ? 12 : $k)) . ',' . ($y = (floor(($i - $month)/12) + $year)), ($months[$key] . '/' . $y)); 

    return JHTML::_('select.genericlist', $arr, $name, $attribs, 'value', 'text', $selectedMonth . ',' . $selectedYear); 
} 

編集3:最終的な解決策:ここでは、数ヶ月の配列です

function getMonthsSelect($name, $selectedMonth, $selectedYear, $month, $year, $deep, $attribs = '') 
{ 
    $months = array(1 => JText::_('January') , 2 => JText::_('February') , 3 => JText::_('March') , 4 => JText::_('April') , 5 => JText::_('May') , 6 => JText::_('June') , 7 => JText::_('July') , 8 => JText::_('August') , 9 => JText::_('September') , 10 => JText::_('October') , 11 => JText::_('November') , 12 => JText::_('December')); 

    $stop = $month + $deep; 
    $wheremonth = 12 - $month; 
    for ($i = $month; $i < $stop; $i ++, $wheremonth--) 

    if ($wheremonth >= 0) { 
     $arr[] = JHTML::_('select.option', ($key = (! ($k = $i % 12) ? 12 : $k)) . ',' . ($y = (floor(($i - $month)/12) + $year)), ($months[$key] . '/' . $y)); 
     } 
     else {   $arr[] = JHTML::_('select.option', ($key = (! ($k = $i % 12) ? 12 : $k)) . ',' . ($y = (floor(($i - $month)/12) + $year+1)), ($months[$key] . '/' . $y)); 
     } 
    return JHTML::_('select.genericlist', $arr, $name, $attribs, 'value', 'text', $selectedMonth . ',' . $selectedYear); 

     } 

答えて

0

入力がここで働いているが、あなたは翌月と前月を持っているかわかりません。次回のヒット時に加算し、前回ヒットしたときに減算するカウンタ変数を実装することができます。したがって、次のようなものがあります。

$i = 1; 

function datetracker() { 

if($nextbtnclicked = true) { 
    $i++; 
} elseif($prevbtnclicked = true) { 
    $i--; 
} 

if($i == 13) { 
    $i = 1; 
    $currentYear += 1; 
} 
} 

サンプル変数を使用していますが、Javascriptでカウンタを実装してJSでログインすることができます。

EDIT:実際にコードが正しく表示されます。なぜそれが動作していないのか分からないが、このようなものを試してみてください。

function getMonthsSelect($name, $selectedMonth, $selectedYear, $month, $year, $deep, $attribs = '') 
{ 
    $months = array(1 => JText::_('January') , 2 => JText::_('February') , 3 => JText::_('March') , 4 => JText::_('April') , 5 => JText::_('May') , 6 => JText::_('June') , 7 => JText::_('July') , 8 => JText::_('August') , 9 => JText::_('September') , 10 => JText::_('October') , 11 => JText::_('November') , 12 => JText::_('December')); 

    $stop = $month + $deep; 
    $newyear = false; 
    for ($i = $month; $i < $stop; $i ++) { 

     if($newyear) { 
     $arr[] = JHTML::_('select.option', ($key = (! ($k = $i % 12) ? 12 : $k)) . ',' . ($y = (floor(($i - $month)/12) + $year + 1)), ($months[$key] . '/' . $y)); 
     $newyear = false; 
     } else { 
     $arr[] = JHTML::_('select.option', ($key = (! ($k = $i % 12) ? 12 : $k)) . ',' . ($y = (floor(($i - $month)/12) + $year)), ($months[$key] . '/' . $y)); 

     } 
    if($i == 12) { $newyear = true; } 
    } 

    return JHTML::_('select.genericlist', $arr, $name, $attribs, 'value', 'text', $selectedMonth . ',' . $selectedYear); 
} 
+0

ありがとうございました。 CurrentmonthやNextYearなどの変数はすでに存在します。これらは大きなボトムカレンダーで動作します。カレンダーの一番下にある[Next Month]リンクをクリックすると、現在の月の値に+1が加えられ、12に達すると+1され、currentmonthが1にリセットされます。それをドロップダウン選択ボックスでプリロードする方法を確認していない! – Sherif

+0

それでは、すでに特定の月を使用したかどうかを調べる必要があります。あなたが月を追加するためにループするにつれ、$ monthの配列を作成するかもしれません。ループが繰り返されるたびに配列をチェックし、$ monthが存在すれば$ currentYear + 1を設定します。 –

+0

は完璧なソリューションのように聞こえます。私は本当にビルド配列に精通していませんが、もしあなたが1行または2行を削除できれば、それは大いに評価されるでしょう! – Sherif

関連する問題