PHP Нет возврата из функции в другом файле - PullRequest
0 голосов
/ 31 августа 2009

У меня есть один файл с формой, который включает другой для обработки этой формы. Файл с формой вызывает функцию из включенного файла для записи данных в базу данных, а затем я возвращаю $ insert_id из этого поста, чтобы я мог ссылаться на него в выводе.

Например, когда вы заполняете форму на странице, данные отправляются в базу данных из отдельного файла, затем я хочу сослаться на идентификатор, который был задан в исходном файле, из которого я вызвал функцию.

Фрагмент файла с формой, включающей файл процесса db:

if (isset($_POST['EC_doPost']))
{
    $statusPost = $_POST['EC_statusPost'];

    echo "HERE: " . $this->addEvent($title, $location, $linkout, $attendees, $description, $startDate, $startTime, $endDate, $endTime, $accessLevel, $postID) . "There.";

    $data = array
    (
        'post_content' => $output . "TESTING THIS: " . $event_id,
        'post_title' => $title,
        'post_date' => date('Y-m-d H:i:s'),
        'post_category' => $wpdb->escape($this->blog_post_author),
        'post_status' => $statusPost,
        'post_author' => $wpdb->escape($this->blog_post_author),
    );
}

А вот функция (во включенном файле), которая должна возвращать insert_id:

function addEvent($title, $location, $linkout, $attendees, $description, $startDate, $startTime, $endDate, $endTime, $accessLevel, $postID)
{
    $postID = is_null($postID) ? "NULL" : "'$postID'";
    $location = is_null($location) ? "NULL" : "'$location'";
    $description = is_null($description) ? "NULL" : "'$description'";
    $startDate = is_null($startDate) ? "NULL" : "'$startDate'";
    $endDate = is_null($endDate) ? "NULL" : "'$endDate'";
    $linkout = is_null($linkout) ? "NULL" : "'$linkout'";
    $attendees = is_null($attendees) ? "NULL" : "'$attendees'";
    $startTime = is_null($startTime) ? "NULL" : "'$startTime'";
    $accessLevel = is_null($accessLevel) ? "NULL" : "'$accessLevel'";
    $endTime = is_null($endTime) ? "NULL" : "'$endTime'";

    $sql = "INSERT INTO `$this->mainTable` (`id`, `eventTitle`, `eventDescription`, `eventLocation`, `eventLinkout`, `eventAttendees`,`eventStartDate`, `eventStartTime`, `eventEndDate`, `eventEndTime`, `accessLevel`, `postID`) VALUES (NULL , '$title', $description, $location, $linkout, $attendees, $startDate, $startTime, $endDate, $endTime , $accessLevel, $postID);";

    $this->db->query($sql);

    $landingpage = "'http://www.google.com'";
    $status = "'1'";
    $title = "'".$title."'";
    $addedon = "'".date("Y-m-d")."'";

    $sql = "INSERT INTO `$this->eventrTable` (`name`, `description`, `event_date`, `maximum_attendees`, `added_on`, `status`, `landing_page`) VALUES ($title, $description, $startDate, $attendees, $addedon, $status, $landingpage);"; 

    $this->db->query($sql);
    $event_id = $this->db->insert_id;

    return $event_id;
}

То, что я пытаюсь сделать, это заставить два плагина Wordpress работать вместе, но пока что это не так хорошо. Если я сделаю включенный файл с функцией echo переменной, это сработает, но тогда я не смогу заставить его работать в исходном файле ...

Я уверен, что это что-то глупое, но я в тупике.

1 Ответ

0 голосов
/ 31 августа 2009

Функция addEvent () не возвращает $ event_id;

У вас должно быть что-то вроде этого:

function addEvent(/*...*/)
{
    // ...

    $sql = "INSERT INTO `$this->eventrTable` ("
      ."`name`, `description`, `event_date`, `maximum_attendees`, `added_on`, `status`, `landing_page`) "
      ."VALUES ($title, $description, $startDate, $attendees, $addedon, $status, $landingpage);";

    $this->db->query($sql);
    $event_id = $this->db->insert_id;

    return $event_id;
}

Попробуйте сделать следующее:

var_dump($this->db->query($sql));
var_dump($event_id);

И опубликовать вывод.

...