我有两张不同的桌子。对于那些我选择一些结果。第一个基于最小/最大值,第二个基于 Lat/Lng。这很容易(不要太在意值)并且由以下人员创建:
$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."')";
现在我们已经缩小了结果,如果存在于第二个表中,我们希望匹配第一个表的行。'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;