0

現在、3 つの選択値を 1 つのフィールドに配置しようとしています。私は値を内破することでこれをやろうとしています。ただし、次のようなエラーが表示されます。

「警告: implode() [function.implode]: 無効な引数が渡されました」

更新版

<script>
function datepopulate(){
var day = document.getElementById('airdate_day').value;
var month = document.getElementById('airdate_month').value;
var year = document.getElementById('airdate_year').value;

var completedate = day+'-'+month+'-'+year;
document.getelementById('episode_airdate').value = completedate;
return true;
    }
</script>
        <?php
for($i=1910; $i<=2012; $i++)
    $years[]=$i;

    echo '<select id="airdate_year" onChange="javascript:datepopulate();" style="width:50px; float:left; margin-right:10px;">';
                        echo '<option value="">' . __("2012" ) . '</option>';
        foreach($years as $year){
                            $selected = '';
                            echo '<option value="' . $year . '" ' . $selected . '>' . $year . '</option>';
                        }
                    echo '</select>';


                    for($i=1; $i<=12; $i++)
                        $months[]=$i;

                    echo '<select id="airdate_month" onChange="javascript:datepopulate();" style="width:50px; float:left; margin-right:10px;">';
                        echo '<option value="">' . __("0" ) . '</option>';
                        foreach($months as $month){
                            $selected = '';
                            echo '<option value="' . $month . '" ' . $selected . '>' . $month . '</option>';
                        }
                    echo '</select>';


                    for($i=1; $i<=31; $i++)
                        $days[]=$i;

                    echo '<select name="airdate_day" id="airdate_day" onChange="javascript:datepopulate();"  style="width:50px; float:left; margin-right:10px;">';
                        echo '<option value="">' . __("10" ) . '</option>';
                        foreach($days as $day){
                            $selected = '';
                            echo '<option value="' . $day . '" ' . $selected . '>' . $day . '</option>';
                        }
                    echo '</select>';
                    ?> 
            <input type="hidden" name="episode_airdate[]" id="episode_airdate[]"  class="airdate regular-text" value="" />
4

2 に答える 2

1

あなたの $_POST['episode_airdate'] はここに配列として投稿されていません....

ここで日付を生成することをいとわないようです。したがって、日付ピッカーの PHP ライブラリの以下の URL を簡単に使用できます。

PHP 日付ピッカー

アップデート

この回答に対するあなたのコメントによると...隠しフィールドにデータを入力したい場合は、JavaScriptで作成された関数を使用する必要があります。これらの関数は、選択ボックスの値が変更されるたびに呼び出されます。 3 つの選択ボックスすべてから値を取得し、希望する形式で DD-MM-YYYY.. に分解し、この新しく作成された値を非表示フィールドに入力します。

以下はあなたの関数です。テストされたものではありません..しかし、次のようにする必要があります:

id='airdate_day'まず、日選択ボックス、id='airdate_month'月選択ボックス、id='airdate_year'年選択ボックスなど、選択ボックスのすべての id 属性を異なるものにします。

隠しフィールドIDを次のようid='episode_airdate'にしますname='episode_airdate'

Javascript 関数:

function datepopulate(){
    var day = document.getElementById('airdate_day').value;
    var month = document.getElementById('airdate_month').value;
    var year = document.getElementById('airdate_year').value;

   var completedate = day+'-'+month+'-'+year;
   document.getelementById('episode_airdate').value = completedate;
   return true;
}

すべての選択ボックスの onChange 属性は、この関数を次のように呼び出します。

<select name='airdate_day' id='airdate_day' onChange='javascript:datepopulate();'>

同様に、他の2つの選択ボックスはjavascript関数を呼び出します

フォームが投稿さ$_POST['episode_airdate']れると、完全な日付が含まれるため、関数を使用する必要がなくなり、関数を変数implode()に直接適用できますdatetime()$_POST['episode_airdate']

于 2012-04-20T05:35:31.720 に答える
0

implode 関数の 2 番目のパラメーターは配列でなければならず、POST 変数を指定します。

于 2012-04-20T05:38:11.337 に答える