Похоже, вам нужно подумать о своей схеме, чтобы убедиться, что она масштабируема для ваших целей.
Один из способов сделать это - вот так (вроде как у вас сейчас):
Таблица: сообщения
id messagetext категория1 категория2 категория3 категория 4
Это удобнее, когда у вас есть огромные наборы данных, поскольку это устраняет необходимость выполнения нескольких объединений. Проблема в том, что происходит, когда вы хотите иметь пятую категорию?
Другой вариант будет таким:
Таблица: сообщения
текст сообщения id
Таблица: категории
идентификатор категории
Таблица: messages_categories
идентификатор сообщения идентификатор категории ID
таким образом, вы можете иметь столько категорий, сколько хотите, и вам не нужно указывать категорию для каждого сообщения.
Так что, если вы предпочитаете использовать существующую опцию, вы можете попробовать вызвать функцию javascript для добавления полей.
<select name="num_cat" onchange="addField(this.value)">...
function addField(num) {
for (i=0; i<num; i++) {
var newinput = document.createElement('text');
/* If you use bracket notation like this (only on the name parameter), it will treat it like an array*/
newinput.name = 'Cat[]';
}
}
<?php
//This will now be an array you can loop over
$_POST['Cat'];
?>