Какие аргументы требуются? - PullRequest
0 голосов
/ 20 февраля 2011

У меня есть следующий код, и когда я вызываю <?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 ]

2 голосов
/ 20 февраля 2011

Ваша функция говорит:

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 голос
/ 20 февраля 2011

Параметр до compare_update()?

Вам нужно передать это $post_id.

0 голосов
/ 20 февраля 2011

Другими словами,

, где $ id был установлен на post_id, с которым вы хотите сравнить_update.

0 голосов
/ 20 февраля 2011

Похоже, это должен быть почтовый идентификатор?

0 голосов
/ 20 февраля 2011

Вы отправляете compare_update параметр? Как это:

compare_update($someNumber);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...