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

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

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

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

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

! получаем количество предметов, оно равно размеру массива $object

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

number_obj=4
! вычисляем остаток от деления на number_obj

! таким образом мы поймём, будет ли у нас неполная строка

! и сколько предметов в ней окажется

number_half=kolvo mod number_obj
if number_half>0:
! если число предметов не разделилось на строки поровну,

! значит у нас получится неполная строка

! вычисляем число строк так

count_string=kolvo/number_obj+1
else
! в противном случае

!число строк ровно укладывается в число предметов

count_string=kolvo/number_obj
end

! теперь, когда подсчёты готовы, выводим предметы в таблице с помощью цикла

! в переменной i будем вести номера выводимых предметов

! открываем таблицу

*p '<table border=1>'
! цикл строк. Счётчиком служит count_string

loop while count_string>0 step count_string-=1:
! пока счётчик выше нуля

! открываем строку

*p '<tr>'
! цикл ячеек. Счётчиком служит count_obj

count_obj=0
loop local count_obj, i = 0, 0 while count_obj<number_obj step count_obj+=1 & i+=1:
! пока счётчик меньше предельного числа ячеек в строке

! (счётчик идёт от нуля, поэтому используем "строго меньше")
! открываем ячейку

*p '<td>'
! проверяем не достиг ли номер предмета размера массива

if i<kolvo:
! если не достиг

! выводим предмет в ячейке

*p $object[i]
else
! в противном случае

! выводим в ячейке пробел

! (пустая ячейка)

*p '&amp;nbsp;'
end
! закрываем ячейку

*p '</td>'
end
! закрываем строку

*p '</tr>'
end
! закрываем таблицу

*p '</table>'

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