そのため、MySQLからJSONにエンコードしようとしていますが、[pagenumber] [id、type、description] [answerid、answerdescription]形式で必要です。これの目標は、マルチステップポーリングを生成するjavascriptファイルのデータを読み取ることです。
ここで、どのように表示するかについて擬似コードを描画してみます。
{"pages":
[{1:
[{"id":1,"text":"U mad?","options":
[{"opt_id":1,"option":"yes","answer:''"},
{"opt_id":2,"option":"no","answer:''"},
{"opt_id":3,"option":"perhaps","answer:''"}]},
{"id":2,"text":"Got it?","options":
[{"opt_id":1,"option":"yes","answer:''"},
{"opt_id":2,"option":"no","answer:''"}]
}]
},
{2:
[{"id":3,"text":"Help me?","options":
[{"opt_id":1,"option":"yes","answer:''"},
{"opt_id":2,"option":"no","answer:''"},
{"opt_id":3,"option":"perhaps","answer:''"}]},
{"id":4,"text":"Please?","options":
[{"opt_id":1,"option":"yes","answer:''"},
{"opt_id":2,"option":"no","answer:''"}]
}]
}]
}
これは私がこれまでに得たものですが、これに3番目の「次元」を追加する方法を考えることができないようです。[id =>(int)、description =>(string)]の配列を添付する必要があります各質問に。そして、各質問には、それらに関連するいくつかの回答のための余地が必要です。Answers / Options配列の最後の列はテキスト文字列用です(ほとんどの回答はID番号で回答されますが、一部は文字列全体を必要とするテキストエリアです)。おそらくシリアル化することでフォームの結果を送り返すことができるので、これは必要ないかもしれません。
$rows = array();
while($r = mysql_fetch_assoc($sth))
{
$Qid = $r['id'];
$page=$r['page'];
$type=$r['type'];
$Qdesc=$r['description'];
$rows[$page][] = array(
'id' => $Qid,
'type' => $type,
'description' => $Qdesc);
}
この結果は次のとおりです(最初の3ページ)。
{
"1":[
{"id":"2","type":"1","description":"U mad?"},
{"id":"3","type":"1","description":"Got it?"},
{"id":"4","type":"1","description":"Help me?"}],
"2":[
{"id":"5","type":"1","description":"Please?"},
{"id":"6","type":"1","description":"Any clues?"}],
"3":[
{"id":"7","type":"2","description":"Foobar?"}]}