2013-03-05 90 views
0

循環多次,想知道是否有這樣做的更簡單的方法...如何通過1 PHP/MySQL的結果

我有一個表與一幫行的,需要根據具體的值分別顯示出來1列名爲「page_group」。現在它確實工作,當我重置結果的指針回到零,但想知道是否更簡單的方法來編碼,因爲至少有15個不同的部分來分組結果...?

//this is the query 
$q_home = mysql_query("SELECT * FROM pages WHERE page_nav = 'No' ORDER BY page_group ASC"); 

//this would show results 1, showing all rows that have the value "sample1" 
<h3>Result 1</h3> 
<ul> 
<? 
    while($r_nav = mysql_fetch_assoc($q_home)){ 
     $group_folder = $r_nav['page_group']; 
     if ($r_access["$group_folder"] == "Yes" && $group_folder == 'sample1') { 
      $access = 'block;'; 
     } else { 
      $access = 'none;'; 
     } {; 
      echo '<li style="display:'.$access.'"><a href="'.$group_folder.'/'.$r_nav['page_url'].'.php">'.$r_nav['page_name'].'</a></li>'; 
     } 
    } 
?> 
</ul> 

//this would be result 2 showing all rows that have value "sample2" 
<h3>Result 2</h3> 
<ul> 
<? 
    mysql_data_seek($q_home, 0); 
    while($r_nav2 = mysql_fetch_assoc($q_home)){ 
     $group_folder = $r_nav2['page_group']; 
     if ($r_access["$group_folder"] == "Yes" && $group_folder == 'sample2') { 
      $access = 'block;'; 
     } else { 
      $access = 'none;'; 
     } {; 
      echo '<li style="display:'.$access.'"><a href="'.$group_folder.'/'.$r_nav2['page_url'].'.php">'.$r_nav2['page_name'].'</a></li>'; 
     } 
    } 
?> 
</ul> 
+0

將SQL與業務邏輯和HTML生成代碼放在一起並不好。你需要爲每個責任在那裏上課。一個回答你問存儲後端的問題,從而運行SQL。一個從一些愚蠢的數據結構生成視圖(即HTML)。這樣一個愚蠢的數據結構。還有一個用例類,它使用您的商店類運行查詢,然後從結果中構建一個數據對象並將其提供給視圖以將其可視化。至少有4種不同的責任。 – 2013-03-05 02:42:54

+0

你的代碼應該有語法錯誤。 – TNK 2013-03-05 02:56:32

回答

0

你必須在一個循環中mysql_fetch,所以纔不停止在特定$group_folder環路(刪除if從句的那部分):

<ul> 
<?php 
    while($r_nav = mysql_fetch_assoc($q_home)){ 
    $group_folder = $r_nav['page_group']; 
    if ($r_access["$group_folder"] == "Yes") 
     $access = 'block;'; 
    else 
     $access = 'none;'; 
    echo '<li style="display:'.$access.'"> 
    <a href="'.$group_folder.'/'.$r_nav['page_url'].'.php"> 
    '.$r_nav['page_name'].'</a></li>'; 
    } 
?> 
</ul> 
0

事情是這樣的循環會更好的解決方案:

$q_home = mysql_query("SELECT * FROM pages WHERE page_nav = 'No' ORDER BY page_group ASC"); 
$x = 1; 
<? while($r_nav = mysql_fetch_assoc($q_home)) { ?> 
<h3>Result <?= $x; ?></h3> 
<ul> 
<?php 
    $group_folder = $r_nav['page_group']; 
    if($r_access["$group_folder"] == "Yes" && $group_folder == 'sample1') { 
    $access = 'block;'; 
    } 
    else { 
    $access = 'none;'; 
    } 
    echo '<li style="display:'.$access.'"><a href="'.$group_folder.'/'.$r_nav['page_url'].'.php">'.$r_nav['page_name'].'</a></li>'; 
    } 
    $x++; 
?> 
</ul> 
<?php } ?>