私は2つの異なるテーブルを持っています。それらのために、私はいくつかの結果を選択します。1 つ目は最小/最大に基づいており、2 つ目は緯度/経度に基づいています。これは簡単で (値にはあまり注意を払わないでください)、以下によって作成されます。
$sql1="SELECT * FROM events WHERE value BETWEEN '".$min2d."' AND '".$max2d."'";
$sql2="SELECT * FROM locations WHERE (lng BETWEEN ".$wl." AND ".$el.") AND (lat BETWEEN '".$sl."'AND'".$nl."')";
結果を縮小したので、最初のテーブルの行が2 番目のテーブルに存在する場合に一致'id'
させたいと考えています。成功すると、結果が作成されます。
それでは、最初にいくつかの数値を取得しましょう。
$result1 = mysql_query($sql1);
$result2 = mysql_query($sql2);
$numRows1 = mysql_num_rows($result1);
$numRows2 = mysql_num_rows($result2);
$loopCount1 = 1;
$loopCount2 = 1;
(ユーザーからの) JSONをより効率的に解析するために、場所を「ホルダー」としてイベントを JSON 配列に作成することにより、イベントを並べ替えたいと考えています。つまり、各場所には複数のイベントがある可能性があります。
一部の場所にはイベントがない場合がありますが、一部のイベントは場所に対応していない場合もあります。私たちの唯一の比較方法は同じ'id'
です。
私の次の試みでは、もちろんバグがあり、イベントのない場所であっても、すべての(それは間違っています) 場所の結果が作成されます。そして、それが私があなたの貴重な助けを必要とするところです.
$json = '{"markers":[';
while ($row2 = mysql_fetch_array($result2)){
$json .= '{"coordinates": { "lat":'. $row2['lat'] .', "lng" : ' . $row2['lng'] .'},'
.'{"events" : [';
while ($row1 = mysql_fetch_array($result1)){
if ($row1['id']=$row2['id'])
$json .= '{ '
.'"title": "'.$row1['title'].'",'
.'"info": "'.$row1['info'].'",'
.'"}';
// add comma for Json if not final row
if ($loopCount1 < $numRows1) {
$json .= ', ';
$loopCount1++;}
}
$json .= ']}}';
// add comma for Json if not final row
if ($loopCount2 < $numRows2) {
$json .= ', ';
$loopCount2++;}
}
$json .= ']}';
そして最後にエコー:
echo $json;