У меня есть две разные таблицы. Для тех я выбираю некоторые результаты. Для первого на основе мин/макс, а для второго на основе широты/долготы. Это легко (не обращайте особого внимания на значения) и создается:
$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;
json_encode()
? - person Barmar   schedule 30.10.2012$sql1
, и в следующий раз нечего извлекать. Вам нужно сделатьmysql_data_seek($result1, 0);
перед внутренним циклом, чтобы сбросить его обратно в начало. - person Barmar   schedule 30.10.2012