2012-08-14 75 views
0

Hy。我知道有類似的答案,但我無法完成。這裏是我的鱈魚:在循環外顯示變量

<?php include 'header.php'; ?> 
<?php include 'connect.php'; 

$q = mysqli_query($link, $aaa = 'SELECT * FROM agentii LEFT JOIN orase ON agentii.oras=orase.oras_id WHERE orase.oras_id = \'' .$_GET['id']. '\'') or die(mysqli_error($link)); 
$row = mysqli_fetch_assoc($q); 
?> 

<h2>Title <em><?php echo $row['oras'];?></em></h2> 

<div class="div_view"> 
    <table cellspacing="0" cellpadding="5" border="0" width="100%"> 
     <tr> 
      <th>Agentie</th> 
      <th>Adresa</th> 
     </tr> 

     <?php while ($row = mysqli_fetch_assoc($q)) { ?> 

     <tr> 
      <td><?php echo $row['agentie'];?></td> 
      <td><?php echo $row['adresa'];?></td> 
     </tr> 

     <?php }?> 

    </table> 
</div> 

<?php include 'footer.php'; ?> 

此輸出(我不能把圖像,因爲是一個新的帳戶 - 所以我把一個鏈接到一個PRT SRC): http://postimage.org/image/w9zsexz91/

在我的數據庫,我有3個行和代碼輸出只有2. 我知道這是因爲2 mysqli_fetch_assoc,但我想顯示所有的行,並且我想在外面顯示標題(<?php echo $row['oras'];?>)。

有人可以幫助我嗎? Thx提前!

回答

1

強制性警告第一:切記小Bobby Tables! (或:你的代碼很容易受到SQL注入攻擊)

然後:你在while循環只有兩行,因爲你要求的行外循環首先,增加結果中的內部遊標。

如果你想獲得冠軍和行一氣呵成,你需要緩存的結果,例如:

$resultArray = array(); 
while ($row = mysqli_fetch_assoc($q)) { 
    $resultArray[] = $row; 
} 
//.... 
?> 
<h2><?php echo $resultArray[0]['oras']; ?></h2> 

<?php // ... ?> 

<?php foreach($resultArray as $row) { 
    <tr> 
    <td><?php echo $row['agentie'];?></td> 
    <td><?php echo $row['adresa'];?></td> 
    </tr> 
} ?> 

這只是一個存根,你當然應該執行檢查,如果你有一排在所有等...

+0

是的!這工作。 Thx男人!兩個答案都很好,但我會堅持你的答案 - 這對我來說更有意義。 – Luna84 2012-08-14 08:20:29

0

嘗試:

<?php do { ?> 

<tr> 
    <td><?php echo $row['agentie'];?></td> 
    <td><?php echo $row['adresa'];?></td> 
</tr> 

<?php } while ($row = mysqli_fetch_assoc($q)); ?> 

這個循環的第一次迭代將打印第一讀取行。我只更改了while子句的位置,強制循環的代碼在獲取新行之前運行。

+0

Thx人 - 爲快速和良好的答案!有用! – Luna84 2012-08-14 07:53:01