需要什么参数?

时间:2011-02-19 21:14:30

标签: php debugging syntax

我有以下代码,当我调用<?php compare_update ?>时,我得到一个PHP错误,告诉我我缺少参数1.查看代码可以有人告诉我参数1的变量应该是什么?

function compare_update( $post_id ) {
    //Assign Posts to Variables
    $start = $_POST['_date_start'];
    $end = $_POST['_date_end'];

    //Parse Start Date
    if($start):
        $start = explode('-', $start);
        $start = mktime($hour, $_POST['_date_minute'], 0, $start[0], $start[1], $start[2]);
        $compare = date('ymd', $start);
    endif;

    //Parse End Date
    if($end):
        $today = date('ymd');
        $end = explode('-', $end);
        $end = mktime($hour, $_POST['_date_minute'], 0, $end[0], $end[1], $end[2]);

        // If today's date is within the date range of an event that spans multiple days & the event is NOT YET PAST
        if ((date('ymd',$start) < date('ymd',$end)) && (date('ymd',$end) >= $today) ){
            // and the start date is before today
            if (date('ymd',$start) < $today){
                $compare = date('ymd'); //Overwrite start date $compare
            } else {
                $compare = date('ymd', $start);
            }
        } else {
            $compare = date('ymd', $start);         
        }
    endif;      

    //Check if values exist and then update
    if($end):
        update_post_meta( $post_id, '_date_end', $end);
    else:
        if($start)update_post_meta( $post_id, '_date_end', $start);
    endif;
    if($start)update_post_meta( $post_id, '_date_start', $start);
    if($compare)update_post_meta( $post_id, '_date_compare', $compare);

    if($echo): echo $compare; else: return $compare; endif;
}

5 个答案:

答案 0 :(得分:2)

你的功能说:

function compare_update( $post_id ) {

然而你并没有用任何论据来称呼它,比如:

compare_update('100'); // Or some number/id/whatnot,
                       // more than likely a $_POST['id']
                       // or $_GET['id'] variable

当您在PHP中使用参数创建函数,并且您没有在参数列表中给出默认值时,您必须在函数调用中为需要输入的每个参数提供相应的变量。

// $post_id is an argument
function compare_update( $post_id ) { 
    ... your code ...
}

所以现在你已经创建了一个函数,它需要在函数调用中传递一个参数,然后该函数可以在函数中使用。

$post_id = $_POST['id'];
compare_update($post_id); // This is passing a parameter

例如,你在功能结束时使用它:

//Check if values exist and then update
if($end):
    update_post_meta( $post_id, '_date_end', $end);
else:
    if($start)update_post_meta( $post_id, '_date_end', $start);
endif;
if($start)update_post_meta( $post_id, '_date_start', $start);
if($compare)update_post_meta( $post_id, '_date_compare', $compare);

if($echo): echo $compare; else: return $compare; endif;

此外,您的代码格式令人困惑。例如,上面的代码可以是:

//Check if values exist and then update
if ($end) {
    update_post_meta( $post_id, '_date_end', $end);
} else {
    if ($start) {
        update_post_meta( $post_id, '_date_end', $start);
    }
}
if ($start) {
    update_post_meta( $post_id, '_date_start', $start);
}
if ($compare) {
    update_post_meta( $post_id, '_date_compare', $compare);
}
if ($echo) {
    echo $compare;
} else {
    return $compare;
}

答案 1 :(得分:1)

compare_update()的参数?

您需要将$post_id

传递给它

答案 2 :(得分:0)

您是否正在发送compare_update参数?像这样:

compare_update($someNumber);

答案 3 :(得分:0)

看起来它应该是帖子ID?

答案 4 :(得分:0)

换句话说,

&lt;?php compare_update($ id); ?&GT;

其中$ id设置为你想要compare_update的post_id。