şöyle şeyler dene;

id : 1 kategorisinin formunu veritabanına girerken
$array[0] = array('label' => 'Şehir Seçiniz', 'name' => 'sehir', 'type' => 'selectbox', 'id' => 'sehir', 'width' => 'auto', 'options' => array()...);
$array[1] = array('label' => 'Formu Gönder', 'name' => 'submit', 'type' => 'submit', 'id' ...)
(bu verileri parçalayan oluşturan bir sınıf yazman da uygun olacaktır)
Bu sınıfa örnek :

class ...
function select_box($attributes)
{
    // multiple, olup olmadığı da burada kontrol edilebilir örneğin.
    return '<select .... >';
}

function text_box($attributes)
{
    ....
}
if($array[$key]['type'] == 'selectbox')
{
$class->select_box($array[$key]);
}

kodunu serialize edilmiş bir şekilde veritabanına girecek bir kod muhtemelen yönetim paneline bunu ekleyen formu yazarsın. (Array verilerini veritabanında serialize ederek saklarken ' " karakterlerinde hata alabilirsin. Buraya dikkat etmek gerekir)

çağırırkende kategori id'yi bulduktan sonra öncesinde oluşturmuş olduğun forms tablosundan bunları sırasıyla alırsın.

Güzelleştirilmiş şeklini e-ticaret sisteminde her kategoriye ait arama formunda kullanıyorum. Cep telefonu ile kiralık ev arama arasında kriter olarak fark var..