php5: передавать объекты через форму? это можно сделать? - PullRequest
0 голосов
/ 10 мая 2011

У меня небольшая проблема с тестовым приложением.

Текущий вид:

<form>
<span>1:Question goes here </span>
<input type=hidden name=true_1 value=10>
<input type=hidden name=false_1 value=20>
<input type=hidden name=target_1 value=color>
<select name=answer_1[]><option>blah</option><option>etc</option></select>

<span>2:Question goes here </span>
<input type=hidden name=true_2 value=40>
<input type=hidden name=false_2 value=20>
<input type=hidden name=target_2 value=size>
<select name=answer_2[]><option>blah</option><option>etc</option></select>
</form>

В настоящее время я использую сценарий, который взрывается ("_", $ get); так что я могу обработать каждый вопрос с его собственными свойствами.

Текущий подход
1. Получить вопросы из базы данных. (Вопрос, цель, истинные, ложные, ответы)
2. перебери их и создай форму, похожую на ту, что я написал выше для всех вопросов 3.После публикации я взрываюсь, чтобы получить свойства каждого вопроса в одиночку 4. передать им функцию, которая оценивает, если ответ правильный или ложный, и дает оценку

что я пытаюсь сделать, это превратить это в упс
1.создание объекта для каждого вопроса и назначение его собственных свойств (вопрос, истина, ложь, цель, ответ) foreach ($ question) $ q [1] = новый вопрос ();

2. выведите $ q [] для ответа пользователя.

3. получить $ q [] после ответа пользователя и $ _POST их.

надеюсь, я правильно это описал. Но для меня очень важно динамически хранить все, поэтому мне нужно включить скрытые поля. это выполнимо?

1 Ответ

2 голосов
/ 10 мая 2011

Вы можете использовать тип данных json для такого рода задач (при условии, что ваши объекты просто хранят данные, а не методы и не требуют __sleep, __wakeup и т. Д.).

<input name="fooBar" value="<?php echo json_encode(/*some_array_with_data*/);?>">

После формы POST вы можете сделать что-то вроде

$_POST['fooBar'] = json_decode($_POST['fooBar']);

и начать итерацию результирующего массива.

NB. поскольку json_encode приводит к строке, содержащей символы типа ", вам также следует использовать base64_encode, url_encode или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...