Поддержка Проблемы и решения Не выводится информация из базы в шорткоде

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

    function last_remittance() {
        global $wpdb;
        $current_user_id = get_current_user_id();
        $query=$wpdb->query("SELECT datatime, sum, points FROM garfunkel_points_history WHERE user_id = " . $current_user_id . ";");
        $results=$wpdb->get_results($query);
        $remitans='<div>';
        foreach ($results as $result) {
            $remitans.=$result['datatime'];
            $remitans.=$result['sum'];
            $remitans.=$result['points'];
        }
        $remitans.='</div>';
        return $remitans;
    }
    add_shortcode('lastremittance', 'last_remittance');

    Подскажите, что у меня не правильно здесь?

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Модератор Yuri

    (@yube)

    Тип. get_results() по умолчанию возвращает массив объектов, а не массивов. См. https://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

    Спасибо за статью, Юрий, но видимо я что-то не понял. Я пробовал и так:

    function last_remittance() {
        global $wpdb;
        $current_user_id = get_current_user_id();
        $query=$wpdb->query("SELECT datatime, sum, points FROM garfunkel_points_history WHERE user_id = " . $current_user_id . ";");
        $results=$wpdb->get_results($query);
        foreach ($results as $result) {
            echo $result->datatime;
            echo $result->sum;
            echo $result->points;
        }
    }

    И вот так:

    foreach ($results as $result) {
    	$remitans.=$result->datatime;
    	$remitans.=$result->sum;
    	$remitans.=$result->points;
    }

    Но ничего не получилось. Можете мне подсказать/разжевать, как мне вывести эти три ячейки с каждой строки?

    Вообщем, мне подсказали на киберфоруме (http://www.cyberforum.ru/wordpress/thread1445671.html). Нужно было делать так:

    function last_remittance() {
        global $wpdb;
        $current_user_id = get_current_user_id();
        $query="SELECT datatime, sum, points FROM garfunkel_points_history WHERE user_id = $current_user_id");
        $results=$wpdb->get_results($query, ARRAY_A);
        $remitans='<div>';
        foreach ($results as $result) {
            $remitans.=$result['datatime'];
            $remitans.=$result['sum'];
            $remitans.=$result['points'];
        }
        $remitans.='</div>';
        return $remitans;
    }
    add_shortcode('lastremittance', 'last_remittance');

    Но в любом случае спасибо.

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «Не выводится информация из базы в шорткоде» закрыта для новых ответов.