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
1 Answer
Reset to default 0OK, 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.