2014-01-22 219 views
0

我試圖在2列中的表中打印mysql查詢的結果。通過我的for循環做到這一點,我做了以下操作:在for循環中打印2列

$num = 1; 
      while($r = $qry->fetch()) 
      { 
        if (!fmod($num,2)) echo '<tr>'; 
        echo "<td>" . $num . "</td>"; 
        if (!fmod($num,2)) echo '</tr>'; 
        $num++; 
      } 

但是,每行都在表中獲取自己的行。即使$ num被打印並顯示1,2,3,4等等。我錯過了什麼?

回答

1

你得到它幾乎是正確的,但每一次迭代需要要麼顯示<tr></tr>這樣:

https://eval.in/93455

$num = 1; 
     while($num < 11) 
     { 
       if (fmod($num,2)) echo '<tr>'; 
       echo "<td>" . $num . "</td>"; 
       if (!fmod($num,2)) echo '</tr>'; 
       $num++; 
     } 

注意我改變了你的,而條件測試目的

+0

這不起作用,因爲第一個fmod正在檢查它是否可以被二整除,所以它不會顯示第一次。它們不匹配。看看我的答案。 – SyntaxLAMP

+0

你可以清楚地看到我的語法正確的工作eval.in鏈接,並以''開始,所以我猜你是倒退的,呃?至於你的第二條評論,我已經在最後一行中提到了這一點,因爲DB循環與答案沒有密切關係。 –

0

我會建議你這樣做,而不是。它創建一個表,併爲每一行列出column1和column2。

$result 
     ?> 
     <table> 
      <tr> 
      <th> Data for column 1</th> 
      </tr> 
     <tr> 
     <? 
     while($row = mysqli_fetch_assoc($result)) 
     { 

      echo "<td>".$row['dataforcolumn1']."</td>"; 
     } 
    ?> 
</tr> 
    </table> 
+0

我的SQL結果是1列,項目列表。我不想在自己的行上打印每個項目。它留下一噸的額外的空間,我想:​​第一個項目​​第二項 ....等.... – bart2puck

+0

這將是方便,如果你從結果中的每一行是在一排HTML,但我懷疑HTML表格中的每一列對應於結果中的一行。如顯示圖庫或其他內容的圖像。 – SyntaxLAMP

+0

將其更改爲一列後,應爲每個結果創建一個新的表格數據​​。然後在while循環結束之後,它會封閉單行並關閉表格。 – WreithKassan

0

我會做這個簡化它:

$num = 1; 
      while($r = $qry->fetch_array()) 
      { 
        if(fmod($num,2)) echo "</tr>\n"; 
        echo "<td>" . $r['columnName'] . "</td>\n"; 
        if(!fmod($num,2)) echo '</tr>'; 
        $num++; 
      } 

主要是,這種情況正在改變的FMOD命令是整除,只要你想它來添加有後2結束標籤是兩個標籤添加(這意味着它應該被2整除)。

+0

這也是使用fetch_array代替,因爲我覺得它對我的目的很有用。 – SyntaxLAMP

+0

givin複選框數字,因爲他擊敗了你幾秒:)謝謝! – bart2puck

+0

他的回答不正確,fmod不匹配。 – SyntaxLAMP