Im зацикливается на некоторых результатах mysql и вам нужно добавить <span id=bottom></span>
к каждому из них, кроме последней строки, самый простой способ сделать это?
Мне нужно подсчитывать строки, а затем использовать счетчик и оператор if/else? Или есть более простой способ?
Попробуйте что-то вроде этого:
$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..
С наилучшими пожеланиями, Fabian
Я не эксперт PHP, но можете ли вы поместить каждую строку в массив? Таким образом, чтобы узнать длину, и вы можете пройти через массив.
Вы можете избежать копирования всех данных перед их обработкой, если вы предварительно заработаете запись перед ее печатью (или наоборот: обработайте ранее взятую запись)
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'];
}
$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..