最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

php - Collect all events in one year

programmeradmin1浏览0评论

Hello can you help me I can't do this:

  • 2018
    • event 1
    • event 2

My current output:

  • 2018
    • event 1
  • 2018
    • event 2

I want do this without GROUP_CONCAT() without 2018 repeat

My code:

while($myrow=mysqli_fetch_array($result)){
$var = $myrow['event_date'];
    echo"
<p><b>" . date("Y", strtotime($var)) . "</b></p>
   <p> " . date("d.m.Y", strtotime($var)) ."
   "?>
    <a class="link" href="article.php?event_id=<?php echo $myrow['event_id'];?>"><?php echo $myrow['article_title'];?></a>
<b><a class="link" href="speaker.php?speaker_id=<?php echo $myrow['speaker_id'];?>"><?php
    echo"
    ".$myrow['speaker_degree']."
    ".$myrow['speaker_name']."
    ".$myrow['speaker_surname']."
    ".$myrow['speaker_patronymie']."
    </a></b></p>
";}

my query:

SELECT * FROM event_t\n" . "JOIN event_speaker_article_t ON event_t.event_id=event_speaker_article_t.event_id\n" . "JOIN article_t ON event_speaker_article_t.article_id=article_t.article_id \n" . "JOIN speaker_t ON event_speaker_article_t.speaker_id=speaker_t.speaker_id\n" . "ORDER by event_date

Hello can you help me I can't do this:

  • 2018
    • event 1
    • event 2

My current output:

  • 2018
    • event 1
  • 2018
    • event 2

I want do this without GROUP_CONCAT() without 2018 repeat

My code:

while($myrow=mysqli_fetch_array($result)){
$var = $myrow['event_date'];
    echo"
<p><b>" . date("Y", strtotime($var)) . "</b></p>
   <p> " . date("d.m.Y", strtotime($var)) ."
   "?>
    <a class="link" href="article.php?event_id=<?php echo $myrow['event_id'];?>"><?php echo $myrow['article_title'];?></a>
<b><a class="link" href="speaker.php?speaker_id=<?php echo $myrow['speaker_id'];?>"><?php
    echo"
    ".$myrow['speaker_degree']."
    ".$myrow['speaker_name']."
    ".$myrow['speaker_surname']."
    ".$myrow['speaker_patronymie']."
    </a></b></p>
";}

my query:

SELECT * FROM event_t\n" . "JOIN event_speaker_article_t ON event_t.event_id=event_speaker_article_t.event_id\n" . "JOIN article_t ON event_speaker_article_t.article_id=article_t.article_id \n" . "JOIN speaker_t ON event_speaker_article_t.speaker_id=speaker_t.speaker_id\n" . "ORDER by event_date
Share Improve this question edited Jun 23, 2019 at 13:54 norman.lol 3,2313 gold badges30 silver badges35 bronze badges asked Jun 23, 2019 at 9:25 Nikita KaganNikita Kagan 33 bronze badges 2
  • Why do you use mysqli_fetch_array and not wpdb? What does your SQL query look like? – Krzysiek Dróżdż Commented Jun 23, 2019 at 10:44
  • @Krzysiek Dróżdż♦ my query is SELECT * FROM event_t\n" . "JOIN event_speaker_article_t ON event_t.event_id=event_speaker_article_t.event_id\n" . "JOIN article_t ON event_speaker_article_t.article_id=article_t.article_id \n" . "JOIN speaker_t ON event_speaker_article_t.speaker_id=speaker_t.speaker_id\n" . "ORDER by event_date – Nikita Kagan Commented Jun 23, 2019 at 13:41
Add a comment  | 

1 Answer 1

Reset to default 0

OK, your events are already sorted by date, so all you have to do is to ignore header, previous event had the same year.

Let's also try to avoid all that spaghetti code, you've posted in question:

<?php
    $previous_year = false;
    while ( $myrow = mysqli_fetch_array($result) ) :
        $event_datetime = strtotime($myrow['event_date']);
?>
    <?php if ( date('Y', $event_datetime) != $previous_year ) : ?>
    <p><b><?php echo date('Y', $event_datetime); ?></b></p>
    <?php endif; ?>

    <p><?php echo date('d.m.Y', $event_datetime); ?>
        <a class="link" href="article.php?event_id=<?php echo esc_attr($myrow['event_id']); ?>">
            <?php echo esc_html($myrow['article_title']); ?>
        </a>
        <b><a class="link" href="speaker.php?speaker_id=<?php echo esc_attr($myrow['speaker_id']); ?>">
            <?php echo esc_html($myrow['speaker_degree']); ?>
            <?php echo esc_html($myrow['speaker_name']); ?>
            <?php echo esc_html($myrow['speaker_surname']); ?>
            <?php echo esc_html($myrow['speaker_patronymie']); ?>
        </a></b>
    </p>
<?php
        $previous_year = date('Y', $event_datetime);
    endwhile;
?>

Another thing is... You shouldn't use mysqli_* functions in WP. There already is WPDB class to connect to DB and perform DB queries and you really should be using it instead.

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论