2010-06-02 31 views
0

我有一個MySQL查詢只運行一次,顯示它檢查是否一個迭代器等於1,則顯示這個div標題...如何得到的東西在while循環

if ($this->dliterator == 1) {echo "<div class='clientsection' id='downloads'>Downloads</div><br/>";};

問題是,dl迭代器可能不一定從1開始(它與數據庫中的downloadid直接相關)。

我怎樣才能得到這隻顯示第一次通過循環只有

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

    if ($row['download'] != null){ 
    if ($this->dliterator == 1) {echo "<div class='clientsection' id='downloads'>Downloads</div><br/>";}; 


    if ($editDownload == 1) { 
    echo "<div class='clientlink' style='margin-top: 15px;'>"; 
    echo "<input name='downloads[$this->dliterator][name]' type='text' id='download$this->dliterator' value='" . $row['download'] . "'/>"; 
    echo "<input name='downloads[$this->dliterator][title]' type='text' id='downloadtitle$this->dliterator' value='" . $row['downloadtitle'] . "'/>"; 
    echo "<img class='removelink' src='/images/deletelink.png' width='15' />"; 
    echo "<input id='downloadid' name='downloads[$this->dliterator][id]' type='hidden' value='".$row['downloadid']."' style='display: none'/>"; 
    echo "<br/><img id='uploaddownload$uploaditerator' class='uploaddownload' src='../images/upload.png' width='80'/>"; 
    echo "</div>"; 


    }; 

    }; 

    $this->dliterator++; 

    $uploaditerator++; 
}; 

感謝您的所有答案!這是我工作的解決方案感謝Zuul:

if ($row['download'] != null){ 
if (($this->dliterator != null) && ($check ==0)) {echo "<div class='clientsection' id='downloads'>Downloads</div><br/>"; 
$check++;}; 

回答

9

試試這個:

$check=0; 

if (($this->dliterator == 1) && ($check==0)) { 
    echo "<div class='clientsection' id='downloads'>Downloads</div><br/>"; 
    $check++; 
}; 

它將如果進入if聲明你dliterator==1如果$check沒有改變... 之後,它將更改$check,從而防止if語句再次運行!

希望它有幫助!

+0

我認爲'$ check'是一個布爾值可以讓示例更具可讀性,否則就是+1。 – 2010-06-02 21:37:07

0
$row = mysql_fetch_assoc($result); 

if ($row && $row['download'] != null) { 

    echo "<div class='clientsection' id='downloads'>Downloads</div><br/>"; 
} 

while ($row) { 

    // ... 

    $row = mysql_fetch_assoc($result); 
} 
+0

這看起來很奇怪 - 首先,$行也應該在此之前檢查,其次,您將跳過最後一次讀取的數據顯示到$行。 – 2013-01-23 22:19:30

+0

問題不明確。我的理解就是「只在第一次迭代時在循環的開始處做一個額外的步驟」。這可以通過像我這樣展開循環來實現。如果這不是目標,我不明白這個問題。 – erisco 2013-01-24 17:49:24

2

放一個標誌圈外的假$firstLineFetched = false;,那麼如果是假的,你把它真實的,做你的第一行處理

0

你可以只設置外循環的計數器爲0,這樣做:

if($i == 0) 
    printf("<div class=........>\n"); 

然後一定要在一段時間(的下一時間結束),並通過$ I($ I ++)增加它將通過printf()語句傳遞的循環。