2011-06-04 52 views
1

所有我想做的是结束当前,并开始新的UL每10个结果结束和开始新的UL每10 MySQL的结果

继承人我的代码是不工作100%:

$sql1 = mysql_query("select * from `provinces` order by `name` asc"); 

    while ($row1 = mysql_fetch_assoc($sql1)) 
    { 
     echo '<li id="popup_'.strtolower(str_replace(' ', '_', $row1['name'])).'">'; 
     echo '<ul>'; 

     $sql2 = mysql_query("select * from `cities` where `id_province`='".$row1['id']."' order by `name` asc"); 
     $count = 1; 

     while ($row2 = mysql_fetch_assoc($sql2)) 
     { 
      if ($count % 10 == 0) 
       echo '</ul>'; 

      echo '<li>'.$row2['name'].'</li>'; 

      if ($count % 10 == 0) 
       echo '<ul>'; 

      $count++; 
     } 

     echo '</ul>'; 
     echo '</li>'; 
    } 
+0

那么什么是不工作? – lonesomeday 2011-06-04 19:55:19

+0

(($ count%10)== 0) – Ibu 2011-06-04 19:56:36

+0

你需要重写你的查询,可以合并成一个 – Ibu 2011-06-04 19:58:07

回答

5

替换此

if ($count % 10 == 0) 
     echo '</ul>'; 

if ($count % 10 == 0) 
      echo '</ul><ul>'; 

而完全地消除了第二次检查

 if ($count % 10 == 0) 
      echo '<ul>'; 

否则你的HTML砸了

//我花了一些时间来得到这个回答,因为这个问题是不容易indentify :)

+0

你摇滚。我知道这很简单。 – scarhand 2011-06-04 23:15:50

-1

所以应该使用新的ul AFTER 10结果...如果你想要在每隔10次结果之前你必须在li输出之前设置if块

$sql1 = mysql_query("select * from `provinces` order by `name` asc"); 

    while ($row1 = mysql_fetch_assoc($sql1)) 
    { 
     echo '<li id="popup_'.strtolower(str_replace(' ', '_', $row1['name'])).'">'; 
     echo '<ul>'; 

     $sql2 = mysql_query("select * from `cities` where `id_province`='".$row1['id']."' order by `name` asc"); 
     $count = 1; 

     while ($row2 = mysql_fetch_assoc($sql2)) 
     { 
      echo '<li>'.$row2['name'].'</li>'; 
      if ($count % 10 == 0) 
       echo '</ul><ul>'; 
      $count++; 
     } 

     echo '</ul>'; 
     echo '</li>'; 
    }