Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su
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 ' '
end
! закрываем ячейку
*p '</td>'
end
! закрываем строку
*p '</tr>'
end
! закрываем таблицу
*p '</table>'
! получаем количество предметов, оно равно размеру массива $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 ' '
end
! закрываем ячейку
*p '</td>'
end
! закрываем строку
*p '</tr>'
end
! закрываем таблицу
*p '</table>'
В qSpider то же самое можно сделать, используя блоки `<div>`.