Я не уверен, что получаю информацию о том, что вы пытаетесь сделать, но кажется, что вам нужно сохранять ответы отдельных лиц на разные вопросы в БД, но каждый вопрос может иметь только ОДИН из, скажем,три возможных ответа.Что ж, в этом случае вы можете подумать о том, чтобы перестроить вашу БД, чтобы она выглядела примерно так:
Вы сохраняете данные пользователей в таблице пользователей, детали вопросов - в таблице вопросов.и разные ответы в таблице ответов.Пользователь сможет ответить на несколько вопросов, но может ответить только на один конкретный вопрос.Затем вы сохраняете ответ, например, в ОДНОМ поле с именем answer_value.Нет необходимости хранить ответ в нескольких полях, так как вы будете хранить VALUE для выбранной ими радиокнопки, т. Е. Вы будете хранить 10, 5 или -10 в зависимости от того, какая опция радио выбрана.
Также важно, чтобы в вашем HTML вы называли все переключатели для конкретного вопроса одинаковыми.Это гарантирует, что параметры радио действуют как переключатели, а не как флажки.Ваш HTML, скорее всего, будет выглядеть примерно так:
<div class="questionBox">
<p>1.Have I clearly defined my companies target market?</p>
<input type="radio" name="q1" value="10"/>
<label for="ca1">YES</label>
<input type="radio" name="q1" value="5"/>
<label for="ca1">SOMEWHAT</label>
<input type="radio" name="q1" value="-10"/>
<label for="ca1">NO</label>
</div>
<div class="questionBox">
<p>2.Have I clearly defined my companies product?</p>
<input type="radio" name="q2" value="10"/>
<label for="ca2">YES</label>
<input type="radio" name="q2" value="5"/>
<label for="ca2">SOMEWHAT</label>
<input type="radio" name="q2" value="-10"/>
<label for="ca2">NO</label>
</div>
.....
Обратите внимание, что у вопроса 1 есть 3 опции радио, все с именем "q1", а у вопроса 2 есть 3 опции радио, все с именем "q2".Следуйте той же конвенции для всех ваших вопросов.Тогда ваш PHP станет довольно простым и, вероятно, будет выглядеть примерно так:
$radioPost="INSERT INTO answers (user_name, question_name, answer_value)
VALUES (('$_POST[user_name]', 'q1', '$_POST[q1]),('$_POST[user_name]', 'q2', '$_POST[q2]), ....)
Если вы не уверены, как называются переключатели, вы можете использовать цикл foreach следующим образом:
$user = $_POST[user_name];
foreach ( $_POST as $key => $val )
{
If ($key <> 'user_name') //you might need to check that you only reading the radio options
{
$radioPost="INSERT INTO answers (user_name, question_name, answer_value)
VALUES ('$user', $key, '$val')"
....
}
}
Также имейте в виду, что даже если вы используете только параметры радиосвязи, вы все равно должны очистить входные данные, чтобы предотвратить атаки, такие как SQL-инъекции и т. Д. Я предлагаю вам найти дополнительную информацию о защите кода от атак.
КстатиЕсли вы поместите вопросы в собственную таблицу, вы можете динамически создать свою анкету из этой таблицы, которая затем позволит вам добавлять или удалять вопросы по своему желанию, что сделает ваше приложение более гибким.И сохраняя ваши ответы в одном поле вместо трех, вы удалите все значения NULL из таблицы, что упростит ваши запросы при выполнении вычислений.Я знаю, что MySQL обычно устанавливает ноль в качестве целочисленного значения по умолчанию, но все же лучше сохранить его в одном поле.Если вы хотите узнать, какой вариант пользователь выбрал для определенного вопроса, просто проверьте значение, хранящееся в этом поле.