2012-01-13 18 views
0

私はもともと、一度開いたライトボックスを持っていただけで、リストにあったデータベースからすべてのブランドを取り出しました。問題はこのリストがかなり長いため、ブランドを10個のリストに分けて残りの部分をフロートさせて、約40個のブランドがあるのでライトボックスを垂直方向ではなく水平方向に塗りつぶしたからです。複数のクエリを使わずにデータベースに動的にオフセットとリミットを達成する最善の方法?

私のコードの最初の問題は、私のコードがそれらを考慮していないので、突然別の10のブランドがデータベースに追加された場合にはカバーしないということです。

他の問題は、私は誰もがもう少し優雅さと効率性を下記のをどのように達成するかについての指針を提供することができれば、私は思っていたので、自分が複数のクエリを使用したとうんざりと感じていることです:

$sql2 = "SELECT page_id, name, url 
      FROM " . DBTABLE_SITEMAP ." 
      WHERE parent_id=$frames 
      AND isActive=1 
      AND isDeleted=0 
      ORDER BY position ASC 
      LIMIT 10"; 

$result2 = mysql_query($sql2, $db_conn); 

if (mysql_num_rows($result2) > 0) { 
    echo '<ol class="subnav-glasses">'; 

    while ($myrow2 = mysql_fetch_array($result2)) { 
     $this_sub_page_id = $myrow2["page_id"]; 
     $this_sub_name  = htmlentities($myrow2["name"]); 
     $this_sub_url  = $myrow2["url"]; 


     echo "\n<li><a href=\"$this_sub_url\" title=\"$this_sub_name\">$this_sub_name</a>";         
     echo '</li>'; 
    } 
    echo "</ol>"; 
} 


$sql3 = "SELECT page_id, name, url 
      FROM " . DBTABLE_SITEMAP ." 
      WHERE parent_id=$sitemap_designer_frames 
      AND isActive=1 
      AND isDeleted=0 
      ORDER BY position ASC 
      LIMIT 10 
      OFFSET 10"; 

$result3 = mysql_query($sql3, $db_conn); 

if (mysql_num_rows($result3) > 0) { 
    echo '<ol class="subnav-glasses">'; 

    while ($myrow3 = mysql_fetch_array($result3)) { 
     $this_sub_page_id = $myrow3["page_id"]; 
     $this_sub_name  = htmlentities($myrow3["name"]); 
     $this_sub_url  = $myrow3["url"]; 


     echo "\n<li><a href=\"$this_sub_url\" title=\"$this_sub_name\">$this_sub_name</a>";         
     echo '</li>'; 
    } 
    echo "</ol>"; 
} 


$sql4 = "SELECT page_id, name, url 
      FROM " . DBTABLE_SITEMAP ." 
      WHERE parent_id=$sitemap_designer_frames 
      AND isActive=1 
      AND isDeleted=0 
      ORDER BY position ASC 
      LIMIT 10 
      OFFSET 20"; 

$result4 = mysql_query($sql4, $db_conn); 

if (mysql_num_rows($result4) > 0) { 
    echo '<ol class="subnav-glasses">'; 

    while ($myrow4 = mysql_fetch_array($result4)) { 
     $this_sub_page_id = $myrow4["page_id"]; 
     $this_sub_name  = htmlentities($myrow4["name"]); 
     $this_sub_url  = $myrow4["url"]; 


     echo "\n<li><a href=\"$this_sub_url\" title=\"$this_sub_name\">$this_sub_name</a>";         
     echo '</li>'; 
    } 
    echo "</ol>"; 
} 


    $sql5 = "SELECT page_id, name, url 
      FROM " . DBTABLE_SITEMAP ." 
      WHERE parent_id=$sitemap_designer_frames 
      AND isActive=1 
      AND isDeleted=0 
      ORDER BY position ASC 
      LIMIT 10 
      OFFSET 30"; 

$result5 = mysql_query($sql5, $db_conn); 

if (mysql_num_rows($result5) > 0) { 
    echo '<ol class="subnav-glasses">'; 

    while ($myrow5 = mysql_fetch_array($result5)) { 
     $this_sub_page_id = $myrow5["page_id"]; 
     $this_sub_name  = htmlentities($myrow5["name"]); 
     $this_sub_url  = $myrow5["url"]; 


     echo "\n<li><a href=\"$this_sub_url\" title=\"$this_sub_name\">$this_sub_name</a>";         
     echo '</li>'; 
    } 
    echo "</ol>"; 
} 

答えて

1

一部あなたのための擬似コード:

$sql2 = "SELECT page_id, name, url 
     FROM " . DBTABLE_SITEMAP ." 
     WHERE parent_id=$frames 
     AND isActive=1 
     AND isDeleted=0 
     ORDER BY position ASC"; 

$result2 = mysql_query($sql2, $db_conn); 

$i=0; 
while ($myrow = mysql_fetch_array($result2)) 
{ 
    if ($i % 10 === 0) 
    { 
    if ($i > 0) 
     echo "</ol>"; 

    echo "<ol>"; 
    } 

    echo "<li>dsoajda</li>"; 

    $i++; 
} 

if ($i > 0) 
    echo "</ol>"; 
+0

おかげで、それはほとんどそこだではなく、非常に - ここにHTML出力Iは取得しています:http://jsfiddle.net/3mqKP/1/ – martincarlin87

+0

はそれが動作するようになった、完璧な、ありがとう! – martincarlin87

関連する問題