2016-04-28 25 views
0

У меня есть PHP-скрипт на моем сайте Wordpress, где я хочу показать 10-летие со дня рождения всех зарегистрированных членов клуба. Если в текущем году нет юбилея, появится сообщение о том, что в этом году будет сказано «Нет юбилея». То, что я сделал до сих пор:PHP foreach if/else с таблицей

<?php 
$args2 = array(
'role' => '', 
'meta_key' => 'last_name', 
'orderby' => 'meta_value', 
'order' => 'ASC' 
); 

$members = get_users($args2); 

echo '<table cellpadding="0" cellspacing="0" style="margin-top:20px;">'; 
foreach ($members as $user) { 

$clubeintritt = new DateTime($user->club); // club entry date 
$jahre = $clubeintritt->diff(new DateTime); // no. of years in the club 
$jubi=('10'); // 10 years 

if($jahre->y == $jubi) { 

echo '<tr>'; 
echo '<td>' . $user->first_name . ' ' .$user->last_name .'</td>'; 
echo '</tr>'; 
} 
} 

if($jahre->y != $jubi) { 
echo 'No Aniversary this yeaar'; 
} 
echo '</table>'; 
?> 

Так прямо сейчас, я получаю список с членами мои 10 лет клуб, но и сообщение, что нет в этом году юбилей.

Я предполагаю, что должно быть что-то с «endforeach», но не могло прийти к решению.

Любая помощь очень ценится. Большое спасибо

ответ

0

Вы должны установить логическое значение «false» перед вашим циклом, что означает «Без юбилея». Если вы нашли какой-либо, вы установите его на "истинный":

echo '<table cellpadding="0" cellspacing="0" style="margin-top:20px;">'; 
$found = false; 
foreach ($members as $user) { 

    $clubeintritt = new DateTime($user->club); // club entry date 
    $jahre = $clubeintritt->diff(new DateTime); // no. of years in the club 
    $jubi=('10'); // 10 years 

    if($jahre->y == $jubi) { 
     $found = true; 
     echo '<tr>'; 
     echo '<td>' . $user->first_name . ' ' .$user->last_name .'</td>'; 
     echo '</tr>'; 
    } 
} 

if(!$found) { 
    echo 'No Aniversary this yeaar'; 
} 
echo '</table>'; 
0

Используйте счетчик прост:

<?php 
$args2 = array(
'role' => '', 
'meta_key' => 'last_name', 
'orderby' => 'meta_value', 
'order' => 'ASC' 
); 

$members = get_users($args2); 
$aCounter=0; 

echo '<table cellpadding="0" cellspacing="0" style="margin-top:20px;">'; 
foreach ($members as $user) { 

    $clubeintritt = new DateTime($user->club); // club entry date 
    $jahre = $clubeintritt->diff(new DateTime); // no. of years in the club 
    $jubi=('10'); // 10 years 

    if($jahre->y == $jubi) { 
    $aCounter++; 
    echo '<tr>'; 
    echo '<td>' . $user->first_name . ' ' .$user->last_name .'</td>'; 
    echo '</tr>'; 
    } 
} 

if($aCounter === 0) { 
echo 'No Aniversary this yeaar'; 
} 

echo '</table>'; 
?> 
0

Изменение:

echo '<table cellpadding="0" cellspacing="0" style="margin-top:20px;">'; 
foreach ($members as $user) { 

$clubeintritt = new DateTime($user->club); // club entry date 
$jahre = $clubeintritt->diff(new DateTime); // no. of years in the club 
$jubi=('10'); // 10 years 

if($jahre->y == $jubi) { 

echo '<tr>'; 
echo '<td>' . $user->first_name . ' ' .$user->last_name .'</td>'; 
echo '</tr>'; 
} 
} 

if($jahre->y != $jubi) { 
echo 'No Aniversary this yeaar'; 
} 
echo '</table>';   

в

$out = ''; 

foreach ($members as $user) { 

$clubeintritt = new DateTime($user->club); // club entry date 
$jahre = $clubeintritt->diff(new DateTime); // no. of years in the club 
$jubi=('10'); // 10 years 

if($jahre->y == $jubi) { 

$out .= '<tr>'; 
$out .= '<td>' . $user->first_name . ' ' .$user->last_name .'</td>'; 
$out .= '</tr>'; 
} 
} 

if(empty($out)) { 
echo 'No Aniversary this yeaar'; 
} 
else 
{ echo '<table cellpadding="0" cellspacing="0" style="margin-top:20px;">'; 
echo $out; 
echo '</table>';   

}

+0

3 различными способами вы можете выбрать тот, который вам больше нравится;) – Anonymus

0

Проверьте последнее значение $jahre->y. Он не будет равен $jubi. Таким образом, последняя итерация цикла for вызывает проблему.

0

линии изменения, как показано ниже:

$members = get_users($args2); 
$aniversary = false; 
echo '<table cellpadding="0" cellspacing="0" style="margin-top:20px;">'; 
foreach ($members as $user) { 

$clubeintritt = new DateTime($user->club); // club entry date 
$jahre = $clubeintritt->diff(new DateTime); // no. of years in the club 
$jubi=('10'); // 10 years 

if($jahre->y == $jubi) { 

echo '<tr>'; 
echo '<td>' . $user->first_name . ' ' .$user->last_name .'</td>'; 
echo '</tr>'; 
$aniversary = true; 
} 
} 

if(!$aniversary) { 
echo 'No Aniversary this yeaar'; 
} 
echo '</table>'; 
?> 
Смежные вопросы