php - Collect all events in one year

Hello can you help me I can't do this:2018event 1 event 2My current output:2018event 12018event 2I want do this wit

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.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745376135a4625007.html

相关推荐

  • php - Collect all events in one year

    Hello can you help me I can't do this:2018event 1 event 2My current output:2018event 12018event 2I want do this wit

    3小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信