2016-08-23 2 views
2

그래서 내 foreach 루프 또는 수정해야하는 내 SQL 쿼리,하지만 필자는 "categoryname"에 의해 아무 소용이 그룹화했는지 모르겠다. 범주 이름 ($ qs [ 'name'])을 한 번만 표시하고 해당 범주에 속한 모든 li을 표시하려고합니다. 어떤 도움이라도 좋을 것입니다.UL에서 dulicate 테이블 값을 그룹화하는 방법은 무엇입니까?

NEW HAMPSHIRE <--This is $state_name--> 
Personal auto <--This is $qs['name']--> 
    • Your young drivers—help them play it safe 
    • The dangers of drunken driving 
    • How to keep your vehicle safe from car thieves 
ETC.... 

CODE :

$sql = mysql_query(
"SELECT qs, state, title, link, category, categoryid, categoryname 
FROM `irc_consumer_content` 
JOIN `irc_consumer_content_category` 
ON irc_consumer_content.category=irc_consumer_content_category.categoryid 
ORDER BY categoryname ASC;"); 

$row = mysql_fetch_assoc($sql); 

$states_array = array( "AL"=>"Four-state topics", 
         "CT"=>"Connecticut topics", 
         "NH"=>"New Hampshire topics", 
         "NJ"=>"New Jersey topics", 
         "NY"=>"New York topics"); 

do { 
    $qs_array[$row['state']][] = array( "qs"=>$row['qs'], 
             "title"=>$row['title'], 
             "link"=>$row['link'], 
             "name"=>$row['categoryname']); 
} while ($row = mysql_fetch_assoc($sql)); 

<div> 
    <h1>Topics available</h1> 
    <? //==== GET STATE ====================================  
    foreach ($states_array as $state => $state_name) { ?> 
    <h2><? echo $state_name; ?></h2> 
    <? //==== GET STATE TOPICS ====================== 
    foreach ($qs_array[$state] as $i => $qs) { ?> 
    <h3><? echo $qs['name']; ?></h3> 
     <ul class="first-level"> 
      <li class="list" id="<? echo $qs['qs']; ?>">  
       <div class="selected-list-item"> 
        <div id="title-text"> 
         <? echo iconv('Windows-1252', 'UTF-8', $qs['title']); ?> 
        </div> 
        <div class="ideas-div"> 
         <div class="ideas-top"> 
         </div> 
         <div class="idea-images"> 
         </div> 
         <div class="ideas-bottom"> 
         </div> 
        </div> 
       </div> 
      </li> 
     </ul> 
     <? } ?> 
     <? } ?> 
</div> 

CODE : (업데이트)

<div> 
    <h1>Topics available</h1> 
    <? //==== GET STATE ==================================== 
     foreach ($states_array as $state => $state_name) { ?> 
     <h2><? echo $state_name; ?></h2> 
     <? $category = "";?> 
      <? //==== GET STATE TOPICS ====================== 
       foreach ($qs_array[$state] as $i => $qs) { 
        if ($category != $qs['name']){ 
         $category = $qs['name']; 
       ?> 
       <h3><? echo $category; //echo $qs['name']; ?></h3> 
       <ul class="first-level"> 
       <li class="list" id="<? echo $qs['qs']; ?>">  
       <? }else { ?> 
        </li> 
        </ul> 
        <ul class="first-level"> 
        <li class="list" id="<? echo $qs['qs']; ?>"> 
        <? }?> 
<!--ALL ELSE IS THE SAME--> 

NEW HAMPSHIRE <--This is $state_name--> 
Personal auto <--This is $qs['name']--> 
    • Your young drivers—help them play it safe 
Personal auto <--This is $qs['name']--> 
    • The dangers of drunken driving 
Personal auto <--This is $qs['name']--> 
    • How to keep your vehicle safe from car thieves 
ETC.... 

그리고 내가 무엇 looinkg하고있어 이것이다 : 내가 가지고있는 것은 이것이다

답변

1

현재 고양이가 있는지 확인할 수 있습니다. egory는 이전 것과 같습니다. 따라서 ul을 적절하게 열고 닫을 수 있습니다.

<div> 
    <h1>Topics available</h1> 
    <? //==== GET STATE ====================================  
    foreach ($states_array as $state => $state_name) { ?> 
    <h2><? echo $state_name; ?></h2> 
    <?php $old_name = ''; ?> 

    <ul> 

    <? //==== GET STATE TOPICS ====================== 
    foreach ($qs_array[$state] as $i => $qs) { ?> 

    <?php if ($old_name != $qs['name']) : ?> 
     <?php $old_name = $qs['name']; ?> 

    </ul><--Close previous item ul--> 
    </ul><--Open ul for new item--> 

    <?php endif; ?> 

    <h3><? echo $qs['name']; ?></h3> 
    <ul class="first-level"> 
     <li class="list" id="<? echo $qs['qs']; ?>">  
      <div class="selected-list-item"> 
       <div id="title-text"> 
        <? echo iconv('Windows-1252', 'UTF-8', $qs['title']); ?> 
       </div> 
       <div class="ideas-div"> 
        <div class="ideas-top"> 
        </div> 
        <div class="idea-images"> 
        </div> 
        <div class="ideas-bottom"> 
        </div> 
       </div> 
      </div> 
     </li> 
    <? } ?> 

    </ul> 

    <? } ?> 
</div> 

또한 mysql* 함수는 더 이상 사용되지 않습니다. 대신 PDO을 사용하십시오.

+0

감사합니다. 이 아이디어는 효과가있었습니다. 원래의 설정과 다른 점을 보여주는 코드를 추가했습니다 (업데이트 참조). –

관련 문제