2010-11-12 43 views
0

嘗試從mysql結果中創建DIV容器,每個容器包含的大塊。合併代碼和循環顯示

$ balloon_count =每個div應該容納的記錄數量。

$ ui =循環計數器。

功能很簡單,不想要模板引擎。

試圖使用模塊運算符來簡化分割。

不起作用。任何方向都不勝感激。


示例代碼

 $ui=1; 
     $balloon_holds = 10; 

     while($row = mysql_fetch_array($result)) 
     {    


      if($ui==1||$ui%$balloon_holds != 0) 
       {      
       echo '<div><table style="width:400px;border:2px solid gray;border-style:dashed;"><tr>'; 
       echo "<td style=\"font-size:small;vertical-align:text-top;\">"; 
       } 


       echo '<input disabled type="checkbox" value="$row[id]"'; $this->ischecked($uid,$row[id]); echo "/>".$row['name'].'<br>'."\r\n"; 


       if($ui==10||$ui%$balloon_holds != 0){    
       echo '</td></tr></table></div>';     
       } 



      $ui++; 

     } 

樣品應爲 「HTML」 輸出

<div><table style="width:400px;border:2px solid gray;border-style:dashed;"><tr> 
<td style="font-size:small;vertical-align:text-top;">   
Record1 
Record2 
Record3 
Record4 
Record5 
Record6 
Record7 
Record8 
Record9 
Record10  
</td></tr></table></div> 

<div><table style="width:400px;border:2px solid gray;border-style:dashed;"><tr> 
<td style="font-size:small;vertical-align:text-top;">   
Record11 
Record12 
Record13 
Record14 
Record15 
Record16 
Record17 
Record18 
Record19 
Record20  
</td></tr></table></div>   
+0

爲什麼不發佈期望的輸出和實際的輸出...... – ircmaxell 2010-11-12 21:10:25

+0

實際輸出真的很混亂。我已經接近了,但仍在戰鬥。我已經添加了一個示例輸出。 – Codex73 2010-11-12 21:16:04

+0

嘗試查看計數器是否可以被10分或10的增量(10,20 + 1,30 + 1,在這種情況下分配給$ balloon_count。因此div可以正確啓動並切割。 – Codex73 2010-11-12 21:20:50

回答

0

如果我理解正確的問題,你想要的< DIV>開門紅在$ ui = 1,11,21,31,...和</DIV>接近上10,20,30,40,...

如果這是正確的,你的模量運營商應該改變這樣:

if($ui%$balloon_holds == 1) 
{      
    ... 
} 

... 

if($ui%$balloon_holds == 0) 
{ 
    ... 
} 
+0

這樣做的竅門!我只在while循環後面添加了一個結束div來處理最後一個容器,真的很感謝你的幫助和其他人的幫助 – Codex73 2010-11-12 21:28:50

0
$ui=0; 
$balloon_holds = 10; 

while($row = mysql_fetch_array($result)) 
{    

     $exit = 0; 
    if($ui==1||$ui%$balloon_holds != 0) 
      {      
      echo '<div><table style="width:400px;border:2px solid gray;border-style:dashed;"><tr>'; 
      echo "<td style=\"font-size:small;vertical-align:text-top;\">"; 
      } 


     echo '<input disabled type="checkbox" value="$row[id]"'; $this->ischecked($uid,$row[id]); echo "/>".$row['name'].'<br>'."\r\n"; 

$ui++; 


     if($ui%$balloon_holds == 0){    
    echo '</td></tr></table></div>';   
     $exit = 1; 
     } 





} 

if($exit == false){ 
    echo '</td></tr></table></div>'; 
} 
+0

謝謝,我真的很感激它 – Codex73 2010-11-13 14:39:07

0
if($ui==1||$ui%$balloon_holds != 0) 

這永遠會除非$ ui是10的倍數,否則是真的,所以你會輸出你的頁眉/頁腳塊的所有行,除了0,10,20等...和$ ui是1的情況。

最有可能這樣會更容易理解:

$row_cnt = 0; 
$max_rows = 10; 

while($row = ...) { 
    if ($row_cnt == 0) { 
     // output header 
    } 
    // output row data 
    if ($row_cnt == 9) { 
     // output row footer 
    } 
    $row_cnt++; 
    $row_cnt %= $max_rows; // ($row_cnt resets to 0 when it reaches 10) 
} 
+0

我看到的一個問題是,如果總共$ row = 15 ,輸出執行兩次,頁腳只執行一次 – 2010-11-12 21:31:46

+0

我同意這可能是一個問題 – Codex73 2010-11-12 21:33:22

+0

真的很容易在循環結束後檢查$ row_cnt並輸出頁腳如果需要 – 2010-11-12 21:33:25

0

這是我的建議,它也更易讀/維護。

$ui=0; 
    $balloon_holds = 10; 

    while ($row = mysql_fetch_array($result)) 
    { 
     if ($ui % $balloon_holds) 
     { 
      if ($ui >= 10) 
      { 
       echo '</td></tr></table></div>'; 
      } 

      echo '<div><table style="width:400px;border:2px solid gray;border-style:dashed;"><tr>'; 
      echo "<td style=\"font-size:small;vertical-align:text-top;\">"; 
     } 

     echo '<input disabled type="checkbox" value="$row[id]"'; 
     $this->ischecked($uid,$row[id]); 
     echo "/>".$row['name'].'<br>'."\r\n"; 

     $ui++; 
    } 

    if ($ui > 0) 
    { 
     echo '</td></tr></table></div>'; 
    } 
+0

謝謝,我真的很感激它。 – Codex73 2010-11-12 21:31:12