[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Многомерный массив циклом for из MYSQL
dima4321
Всем снова привет )

Вот кусок кода.
Код:
$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


Спустя 4 минуты, 1 секунда (17.03.2011 - 12:22) Trianon написал(а):
Перед тем, как считать количество элементов массива, стоит научиться его корректно создавать.

при такой организации цикла 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");

Спустя 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 написал(а):
Решил проблему так:

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 написал(а):
laugh.gif


_____________
Работаю за еду ! __))
И за плюсики !
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.