2009-12-05 41 views
0

Im循環訪問一些mysql結果,並且需要將<span id=bottom></span>添加到除最後一行之外的每個項目,最簡單的方法是什麼?將代碼應用於所有環形項目,但最後一個

我需要對行進行計數,然後使用計數器和if/else語句嗎?還是有更簡單的方法?

+9

html中的id字段應該是唯一的。考慮班級或名稱。 – Hogan 2009-12-05 02:04:49

+0

是JavaScript或jQuery的選項? – 2009-12-05 02:15:13

+0

你是什麼意思添加html到他們每個人? 它們剛剛被抓取? 他們在幾行,你必須追加一個字段到每一行? 是幾行,你必須包裝每一個? 你有沒有把所有的結果都包裹在一個單一的範圍內(這個解釋了id),但是最後一個? 請更清楚。 – Eineki 2009-12-05 02:26:56

回答

0

我不是PHP專家,但你可以把每一行放在一個數組中嗎?這樣才能知道長度,並且可以遍歷數組。

4

嘗試這樣:

$result = mysql_query($sql); 
$list = array(); 
while($row = mysql_fetch_assoc($result)) 
{ 
    $list[] = $row; 
} 
$lastItem = array_pop($list); 
foreach($list as $item) { 
    echo sprintf('<span id="bottom">%s</span>', $item['value']); 
} 
// do something with the last item.. 

不是很短,但會做的伎倆。或者你可以做你的建議:

$result = mysql_query($sql); 
$num = mysql_num_rows($result); 
for($i = 0; $i < $num-1; $i++) { 
    $element = mysql_fetch_assoc($result); 
    // echo here.. 
} 
$item = mysql_fetch_assoc($result); // fetch last item.. 

最良好的祝願, 費邊

+0

刪除我的答案,因爲你的答案是一樣的,但是你先發布。 :d – jeffff 2009-12-05 02:15:20

0
$result = mysql_query($sql); 
$list = array(); 
while($row = mysql_fetch_assoc($result)) 
    $list[] = $row; 

foreach(array_slice($list, 0, -1) as $item) { 
    echo sprintf('<span id="bottom">%s</span>', $item['value']); 
} 
// do something with the last item.. 
0

你能避免處理之前複製所有數據,如果你事先取一個記錄打印之前(或其他方式:處理先前提取的記錄)

foreach($pdo->query('SELECT x FROM foo') as $r) { 
    if (isset($row)) { 
    echo '<span>', $row['x'], '</span>'; 
    } 
    $row = $r; 
} 
if (isset($row)) { 
    echo $row['x']; 
} 
相關問題