2013-03-05 60 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 } ?>