【问题标题】:Order results of a query by values按值排序查询结果
【发布时间】:2015-10-17 09:17:03
【问题描述】:

我正在尝试创建一个函数来使用事件填充 ajax 日历。 我正在从我的 wordpress 数据库中的自定义字段中查询日期(格式 Ymd)。

        $metakey2 = 'jour';
        $jours = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey2) );
        if ($jours) {
            $years = substr($jours, 0, 4); // OUTPUT YEAR FROM DATE
            $months = substr($jours, 5, 2);  // OUTPUT MONTH FROM DATE
            $days = substr($jours, 7, 2); // OUTPUT DAY FROM DATE

                foreach $years as $year {
                    foreach $months as $month {

                        if ($y == $year AND $m == $month) {
                            $events = array(
                                foreach $days as $day {
                                    $day => array(
                                        0 => array(
                                            "0" => "Lorem ipsum dolor 111", 
                                        )
                                    );
                                }
                            );
                        }
                    }
                }   
        }

    `

我绝对不是专家,我已经尝试了几个小时来完成这项工作......有人可以指出我正确的方向吗? 谢谢, 手动

【问题讨论】:

  • 你使用custom_post吗?您查询什么类型的帖子以获取 post_meta?你能解释一下它是如何工作的吗?
  • 我使用来自 woocommerce 的产品和自定义字段。对于每个产品,我在自定义字段中输入了一个日期。我需要的是在日历中输出这些产品,因此是数组。

标签: php arrays wordpress


【解决方案1】:
$metakey2 = 'jour';
$jours = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey2) );

// Chaeck the data returned isn't null, blank, 0-length array, etc.
if (!empty($jours)) {
    // Initialize events array
    $events = array();

    // Loop through the data
    foreach ($jours as $jour) {
        $year  = substr($jour, 0, 4); // OUTPUT YEAR FROM DATE
        $month = substr($jour, 5, 2); // OUTPUT MONTH FROM DATE
        $day   = substr($jour, 7, 2); // OUTPUT DAY FROM DATE

        // PROCESS YOUR DATA HERE
        ...
    }
}

关键是空检查后的foreach循环。您需要遍历从 db 作为数组返回的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多