【问题标题】:Implode 3 select values into one field error将 3 个选择值内爆到一个字段错误中
【发布时间】:2012-05-01 17:12:10
【问题描述】:

我目前正在尝试将 3 个选择值放入一个字段中。我试图通过内爆值来做到这一点;但是我收到一条错误消息:

“警告: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="" />

【问题讨论】:

  • print_r($_POST['episode_airdate']).是数组吗?
  • $date = implode('-', $_POST['episode_airdate']); date('Y-m-d', strtotime($_POST['episode_airdate'])); 您尝试将其视为$date var 中的数组,然后将其视为date() 函数中的字符串?
  • 您如何使用日期、月份和年份填充隐藏字段?我猜您希望您的隐藏字段发布您从选择框中选择的完整日期,对吗?或者我说的对吗?
  • @OMTheEternity 感谢您迄今为止的帮助,由于某种原因,我仍然遇到问题。我已经上传了新代码,请您再看看。

标签: php select form-submit implode


【解决方案1】:

您的 $_POST['episode_airdate'] 未在此处作为数组发布....

似乎您愿意在这里生成一个日期,因此为了方便您使用下面给出的日期选择器 PHP 库的 url....

PHP Date Picker

更新

根据您对此答案的评论...如果您想填充隐藏字段,那么您必须使用 javascript 创建的函数,只要选择框的值发生变化,就会调用这些函数,该函数将从所有三个选择框中获取值并以您想要的格式将它们内爆为 DD-MM-YYYY.. 并用这个新创建的值填充隐藏字段

下面将是您的功能,它不是经过测试的功能.. 但您必须这样做:

首先使选择框的所有 id 属性都不同,例如 id='airdate_day' 用于日期选择框,id='airdate_month' 用于月份选择框,id='airdate_year' 用于年份选择框

并将隐藏字段 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属性都会调用这个函数

&lt;select name='airdate_day' id='airdate_day' onChange='javascript:datepopulate();'&gt;

其他两个选择框也会以类似的方式调用javascript函数

现在,当表单发布时,您的$_POST['episode_airdate'] 将包含一个完整的日期,因此您不必在其中使用implode() 函数,并且可以直接在$_POST['episode_airdate'] 变量上应用您的datetime() 函数

【讨论】:

  • 感谢您的建议,但我不想使用插件,我知道这样做会更困难,但我更喜欢它。您对如何填充隐藏字段有任何建议吗?
  • @Craig 检查最新的更新答案
  • 感谢您所做的一切,但我仍然遇到问题,选择和隐藏字段仅在表格中而不是在表格中,这可能是我遇到困难的原因吗?我在实施您的代码后上传新版本
【解决方案2】:

implode函数的第二个参数必须是一个数组,你给一个POST变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多