Перейти к основному содержимому

16.06. Как сделать вывод предметов магазина не длинным списком, а в виде таблицы?

В: Как сделать вывод предметов магазина не длинным списком, а в виде таблицы?

О: Собственно, в вопросе уже заключён ответ. Необходимо использовать табличную вёрстку. Например, список предметов хранится в массиве $object, а мы хотим, чтобы они выводились на экран по четыре предмета в строке:

! вычисляем число необходимых строк, для этого

! получаем количество предметов, оно равно размеру массива $object
local kolvo=arrsize('$object')

! задаём число предметов в строке
local number_obj = 4

! вычисляем остаток от деления на number_obj
! таким образом мы поймём, будет ли у нас неполная строка
! и сколько предметов в ней окажется
local number_half = kolvo mod number_obj

local count_string
if number_half>0:
! если число предметов не разделилось на строки поровну,
! значит у нас получится неполная строка
! вычисляем число строк так
count_string = kolvo/number_obj+1
else
! в противном случае
!число строк ровно укладывается в число предметов
count_string = kolvo/number_obj
end
*clr
*pl "Это пример вывода предметов в виде таблицы в окне основного описания."

! теперь, когда подсчёты готовы, выводим предметы в таблице с помощью цикла
! в переменной i будем вести номера выводимых предметов
! открываем таблицу
*p '<table border=1>'
! цикл строк. Счётчиком служит count_string
loop local i while count_string>0 step count_string-=1:
! пока счётчик выше нуля
! открываем строку
*p '<tr>'
! цикл ячеек. Счётчиком служит count_obj
count_obj=0
loop local count_obj = 0 while count_obj<number_obj step count_obj+=1 & i+=1:
! пока счётчик меньше предельного числа ячеек в строке
! (счётчик идёт от нуля, поэтому используем "строго меньше")
! открываем ячейку
*p '<td>'
! проверяем не достиг ли номер предмета размера массива
if i<kolvo:
! если не достиг
! выводим предмет в ячейке
*p $object[i]
else
! в противном случае
! выводим в ячейке пробел
! (пустая ячейка)
*p '&nbsp;'
end
! закрываем ячейку
*p '</td>'
end
! закрываем строку
*p '</tr>'
end
! закрываем таблицу
*p '</table>'

В qSpider то же самое можно сделать, используя блоки <div> и гриды.

Рабочий пример: скачать.