2012-10-19 57 views
-1

我堅持這一點,如何過濾while循環PHP

我想創建一個表10行,每行有10個款產品「同一個下拉菜單」。但在每一行中選擇不同的產品。例如第一排第一產品排在第二排第二產品等等。波紋管代碼顯示每行中的下拉菜單,但每行都選擇了第一個產品。我如何爲下一行選擇下一個產品?

<table> 
    <tr> 
     <td> 
      <select> 
       <?php 
        $query = "SELECT * FROM table_name WHERE featured=1 LIMIT 10"; 
        $result = mysqli_query($connection, $query); 
        while($row = mysqli_fetch_array($result)){ 
         echo "<option>".$row["product_name"]."</option>" 
        } 
       ?> 
      </select> 
     </td> 
     <td> 
      <select> 
       <?php 
        $query = "SELECT * FROM table_name WHERE featured=1 LIMIT 10"; 
        $result = mysqli_query($connection, $query); 
        while($row = mysqli_fetch_array($result)){ 
         echo "<option>".$row["product_name"]."</option>" 
        } 
       ?> 
      </select> 
     </td> 
    </tr> 
</table> 
+0

請完整的PHP文件和數據庫字段也。 –

+0

$ query =「SELECT * FROM tbl WHERE featured = 1 LIMIT 10」;如果這就是你使用它的方式,那就不行了。 $ query = mysqli_query(「SELECT * FROM tbl WHERE featured = 1 LIMIT 10」); – DaveyLaser

+0

代碼看起來多餘的和非結構化的,你可能想通過縮進 –

回答

1
<? 
    //Only Once call to DB 
    $query = "SELECT * FROM tbl WHERE featured=1 LIMIT 10"; 
    $result = mysqli_query($connection, $query); 
    $pos = 0; 
    $currentRow = 0; 
    ?> 

    <table> 
     <tr> 
      </td> 
      <select> 
       <?php 

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

       if($pos==$currentRow) 
        echo "<option selected=\"selected\">".$row["product_name"]."      </option>"; 
       else 
        echo "<option>".$row["product_name"]."</option>"; 
       $pos++; 

       } 

       mysqli_data_seek($result, 0); 
       $pos = 0; 
       $currentRow++; 

       ?> 
      </select> 
      </td> 
     </tr> 
     <tr> 
      </td> 
      <select> 
       <?php 
       while($row = mysqli_fetch_array($result)){ 

       if($pos==$currentRow) 
        echo "<option selected=\"selected\">".$row["product_name"]."      </option>"; 
       else 
        echo "<option>".$row["product_name"]."</option>"; 
          $pos++; 

       } 

       mysqli_data_seek($result, 0); 
       $pos = 0; 
       $currentRow++; 
       ?> 

      </select> 
      </td> 
     </tr> 
     </table> 
+0

感謝您的答案,讓我檢查它是否有效。 – prototype

+0

不,它沒有工作。只有第一行與下拉菜單。和其他帶空白下拉菜單的行。 – prototype

+0

請再試一次我添加更改並重新產生的指針$ – Mate

0

你的第二個while循環

$i=0;  
while($row = mysqli_fetch_array($result)){ 
$i++; 
if($i==2) 
    echo "<option selected=\"selected\">".$row["product_name"]."</option>"; 
else 
echo "<option>".$row["product_name"]."</option>"; 
    } 
    ?> 
+0

你的代碼也可以工作,但我需要爲每一行進行查詢。意味着10個相同的查詢來顯示10個表格行。有沒有解決方案? – prototype

+0

你沒有循環查詢循環結果集。 –

+0

是的,我正在循環結果集。但是在循環每一行表中的每個結果集之前,我需要再次調用相同的查詢來循環其結果集。調用單個查詢,然後循環10次並沒有幫助。只顯示第一行。這就是爲什麼我必須爲每一行調用相同的查詢然後循環它。 – prototype