2017-09-13 17 views
-1

私はこのforeachスクリプトを手に入れました。結果が見つからない場合は、このメッセージ "No articles yet yet"を2回表示します。どうすれば修正できますか?私はforeachからそれを動かそうとしましたが、成功しませんでした。foreachから重複を取り除く

感謝

$query_show_groupmsg = mysqli_prepare($conn, "SELECT group_message_id, group_message_date, group_message_subject, group_message_body FROM group_messages WHERE group_message_refid = ? ORDER BY group_message_date DESC LIMIT 5"); 
       mysqli_stmt_bind_param($query_show_groupmsg, 'i', $data); 

     foreach ($id_gruppo as $data) { 

       mysqli_stmt_execute($query_show_groupmsg); 
       mysqli_stmt_bind_result($query_show_groupmsg, $group_message_id, $group_message_date, $group_message_subject, $group_message_body); 
       mysqli_stmt_store_result($query_show_groupmsg); 
       $groupmsg = mysqli_stmt_num_rows($query_show_groupmsg); 

       if ($groupmsg > 0) { 

       while (mysqli_stmt_fetch($query_show_groupmsg)) { 

        $new_mgsgroup_date = date('d/m/Y, \a\l\l\e h:i a', strtotime($group_message_date)); 

        ?> 
        <div class="item"> 
        <div class="item-head"> 
         <div class="item-details"> 
         <?php 
         echo ' <a class="item-name primary-link" href="client_blog_app/client_group_post_view.php?id='.$group_message_id.'"> '.ucfirst(strip_tags(mb_strimwidth($group_message_subject, 0, 350, "..."))).'</a> 

         '; 

         ?> 
         <br><span class="item-label font-blue small">Pubblicato il <?php echo "$new_mgsgroup_date"; ?></span> 
         </div> 
        </div> 
        <div class="item-body"> <?php echo strip_tags(mb_strimwidth($group_message_body, 0, 350,"...")); ?> </div> 
        </div> 
        <?php 
       } 

       }else{ 

       echo ' 

        <div class="alert alert-info">No articles yet</div> 

       '; 

      } 

      } 

答えて

0

これをforループの外側に追加し、既に持っているelse節を削除します。

if ($groupmsg < 1) 
{ 
    echo '<div class="alert alert-info">No articles yet</div>'; 
} 
0

は、このようなFOREACH外IF ELSE文を置く:あなたのif ($groupmsg > 0)条件はforeachサイクル内にあるので

$query_show_groupmsg = mysqli_prepare($conn, " 
    SELECT group_message_id, group_message_date, group_message_subject, group_message_body FROM group_messages 
    WHERE group_message_refid = ? 
    ORDER BY group_message_date 
    DESC LIMIT 5 
"); 
$article_count = 0; 

mysqli_stmt_bind_param($query_show_groupmsg, 'i', $data); 

foreach ($id_gruppo as $data) { 

    mysqli_stmt_execute($query_show_groupmsg); 
    mysqli_stmt_bind_result($query_show_groupmsg, $group_message_id, $group_message_date, $group_message_subject, $group_message_body); 
    mysqli_stmt_store_result($query_show_groupmsg); 
    $groupmsg = mysqli_stmt_num_rows($query_show_groupmsg); 

    if ($groupmsg > 0) { 

     while (mysqli_stmt_fetch($query_show_groupmsg)) { 

      $new_mgsgroup_date = date('d/m/Y, \a\l\l\e h:i a', strtotime($group_message_date)); 
      $article_count++; 
      ?> 
      <div class="item"> 
       <div class="item-head"> 
        <div class="item-details"> 
        <?php echo ' <a class="item-name primary-link" href="client_blog_app/client_group_post_view.php?id='.$group_message_id.'"> '.ucfirst(strip_tags(mb_strimwidth($group_message_subject, 0, 350, "..."))).'</a>'; ?> 
        <br> 
        <span class="item-label font-blue small">Pubblicato il <?php echo "$new_mgsgroup_date"; ?></span> 
       </div> 
      </div> 
      <div class="item-body"> <?php echo strip_tags(mb_strimwidth($group_message_body, 0, 350,"...")); ?> </div> 
      </div> 
      <?php 
     } 
    } 
} 

if ($article_count == 0){ 
    echo '<div class="alert alert-info">No articles yet</div>'; 
} 
0

elseブランチはcount($data)まで実行することができます回。 foreachループから条件を移動すると、これを修正する必要があります。 foreachの中の記事の数を保つことができます。

しかし、このコードは本当に読みにくいです(コメント、ランダムインデント)。最小限の作業例を作成し、不要な部分を削除し、必要に応じてコードにコメントを付ける必要があります。

関連する問題