Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме 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 '&nbsp;'
                    end
                
! закрываем ячейку
                *p '</td>'
            end                    
        
! закрываем строку
        *p '</tr>'
    end
! закрываем таблицу
*p '</table>'

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