Вот кусок кода.
Код:
$on_page=6;
while ( $postrow[] = mysql_fetch_array($result))
for($i = 0; $i < $on_page; $i++)
{
if(!empty($postrow[$i]['text_tracklist']) )
{
if($i<($on_page-1))
{
echo $postrow[$i]['text_tracklist'].", ";
}
else
{
echo $postrow[$i]['text_tracklist'].". ";
}
}
Задача состоит в том. чтобы последний элемент массива заканчивался точкой, а не запятой.
Код работает корректно , если в массиве 6 элементов. А если меньшке, то заканчивается запятой.
Что можно придумать.??
Может foreach или другое условие ??
Спустя 18 минут, 52 секунды (17.03.2011 - 11:49) Trianon написал(а):
for ($separator = ''; $row = mysql_fetch_assoc($result); $separator = ', ')
echo $separator . $row['text_tracklist'];
echo '.';
если список короткий:
for ($elems = array(); $row = mysql_fetch_assoc($result); )
$elems[] = $row['text_tracklist'];
echo implode(', ', $elems).'.';
Спустя 5 минут, 42 секунды (17.03.2011 - 11:55) Игорь_Vasinsky написал(а):
подсчитай кол-во элементов в массиве, везде ставь запитую - а на последнем - точку
Спустя 23 минуты, 19 секунд (17.03.2011 - 12:18) dima4321 написал(а):
Игорь_Vasinsky
Мне нравится твоя идея, только я не понимаю как счтать кол-о элементов массива в данном случае.
ведь
count($postrow)
дает мне просто набор цифр 123456
либо в случае последней странице например 12345
Мне нравится твоя идея, только я не понимаю как счтать кол-о элементов массива в данном случае.
ведь
count($postrow)
дает мне просто набор цифр 123456
либо в случае последней странице например 12345
Спустя 4 минуты, 1 секунда (17.03.2011 - 12:22) Trianon написал(а):
Перед тем, как считать количество элементов массива, стоит научиться его корректно создавать.
при такой организации цикла while ( $postrow[] = mysql_fetch_array($result))
в массив будет падать как минимум лишний элемент (со значением false)
при такой организации цикла while ( $postrow[] = mysql_fetch_array($result))
в массив будет падать как минимум лишний элемент (со значением false)
Спустя 2 минуты, 5 секунд (17.03.2011 - 12:25) dima4321 написал(а):
Trianon
почему научи ??))
сам запрос к базе такой :
$result = mysql_query("SELECT `text_tracklist`,`list` FROM `names` INNER JOIN `tracklist` ON `name_id` = `names`.`id`
WHERE `name`='$name' LIMIT $start, $on_page");
почему научи ??))
сам запрос к базе такой :
$result = mysql_query("SELECT `text_tracklist`,`list` FROM `names` INNER JOIN `tracklist` ON `name_id` = `names`.`id`
WHERE `name`='$name' LIMIT $start, $on_page");
Спустя 5 минут, 22 секунды (17.03.2011 - 12:30) Trianon написал(а):
я показал, как оможно собрать строки в массив во втором примере.
От вида запроса это не зависит.
Можно накидать в массив записи целиком. Нужно ли?
От вида запроса это не зависит.
Можно накидать в массив записи целиком. Нужно ли?
for ($rows = array(); $row = mysql_fetch_assoc($result); )
$rows[] = $row;
Спустя 1 час, 14 минут, 45 секунд (17.03.2011 - 13:45) dima4321 написал(а):
Решил проблему так:
ктстати а никто не может мне объяснить почему, когда я применяю
count($postrow) он мне говорит. что у меня 7 элементов массива , а не 6. ))
кстати тот баг с count, про кторый я писал выше получался из-за этого
а правильней так:
for($i = 0; $i < $on_page; $i++)
{
if(!empty($postrow[$i]['text_tracklist']) )
{
if($i<mysql_num_rows($result)-1)
{
echo $postrow[$i]['text_tracklist'].", ";
}
else
{
echo $postrow[$i]['text_tracklist'].". ";
}
}
}
ктстати а никто не может мне объяснить почему, когда я применяю
count($postrow) он мне говорит. что у меня 7 элементов массива , а не 6. ))
кстати тот баг с count, про кторый я писал выше получался из-за этого
<?
$result = mysql_query("SELECT `text_tracklist`,`list` FROM `names` INNER JOIN `tracklist` ON `name_id` = `names`.`id`
WHERE `name`='$name' LIMIT $start, $on_page");
while ( $postrow[] = mysql_fetch_array($result))
echo count($postrow);// соотв-о выводились цифры 123456 (
?>
а правильней так:
PHP:
<?
$result = mysql_query("SELECT `text_tracklist`,`list` FROM `names` INNER JOIN `tracklist` ON `name_id` = `names`.`id`
WHERE `name`='$name' LIMIT $start, $on_page");
while ( $postrow[] = mysql_fetch_array($result))
?>
<?
echo count($postrow);// но почему-то выводится 7 )) никак не врубаюсь...
?>
Спустя 1 час, 1 минута, 1 секунда (17.03.2011 - 14:46) Trianon написал(а):
бесполезно.
Спустя 9 минут, 21 секунда (17.03.2011 - 14:55) Invis1ble написал(а):

_____________
Работаю за еду ! __))
И за плюсики !