У меня есть база данных, в которой хранятся клиенты и сотрудники. Передняя часть для этой базы данных использует очень старое программное обеспечение (закодированное в vb6 с конца 90-х годов, поэтому я не могу просто геокодировать адреса для вставки при записи, если только я не хочу делать какую-нибудь причудливую работу sql). Я создаю еще более надежное программное обеспечение для передачи данных. Я хочу включить функции карты google в программное обеспечение, которое показывает, где живут клиенты и сотрудники. Когда создается список текущих сотрудников или клиентов, я также хочу, чтобы он проверял новые добавления, а затем геокодировал их адреса в таблицу базы данных, чтобы я мог ссылаться на них в последующих отчетах. У меня нет проблем с распознаванием новых записей или геокодированием их местоположений.Возврат результатов javascript для использования в php
Как работает скрипт php, он проверяет, есть ли у клиентов информация о широте и долготе, а если нет, получите файл lat/lng, а затем вставьте его в базу данных. Если есть несколько новых клиентов/сотрудников, я хочу, чтобы он прошел через результирующий набор и вставлял относительную информацию. Проблема заключается в том, что google api получает lat/lng через javascript, поэтому я не могу передать эту информацию обратно в php-скрипт, чтобы сохранить его в базе данных, и я действительно не хочу использовать javascript для его вставки.
Так что мне интересно, как это сделать. Я изучаю и тестирую пару часов. Я решил, что могу, вероятно, передать переменные с помощью методов ajax, но разве это не вызовет проблему, когда вы делаете это в середине цикла?
Вот пример кода, и я приношу свои извинения за такой нарисованный вопрос!
Javascript фрагмент Геокодировать:
function codeAddress(address) {
geocoder.geocode({ 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var newlat = results[0].geometry.location.lat();
var newlng = results[0].geometry.location.lng();
alert(results[0].geometry.location);
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
PHP фрагмент:
$address = "";
$num = 0;
//Google geocode limits requests to 10 per second, limit to 5 total requests at a time.
//If more theres more than 10 clients who have yet to be geocoded, running the database insertion code
//---should provide long enough delay to geocode again and not hit the overflow limit
while ($row = mssql_fetch_array($result) and $num < 5) {
if ($row['lat'] == "") {
//Create address string
$address = $row['Address1'] . " " . $row['City'] . ", NY " . $row['Zip'];
$address = str_replace("'", "", $address);
//Test to show addresses without lat/lng were pulled
echo "<script>codeAddress('" . $address . "');</script>" . $address . "<br />";
$num = $num + 1;
}
}
Почему вы говорите «поэтому я не могу передать эту информацию обратно в php-скрипт, чтобы сохранить его в базе данных»? – geocodezip
Поскольку я понимаю, что php сначала запускается на стороне сервера, поэтому его запуск выполняется до кода javascript, который затем запускается после. Поэтому я не могу просто сказать javascript, чтобы вставить «этот кусок php-кода», а затем продолжить скрипт php. Разве это не так? – jfive
Это правда, но вы можете отправить результаты на PHP-скрипт на своем сервере и использовать этот скрипт для публикации данных в своей базе данных (как вы говорите в своем сообщении, я не считаю это «использованием методов AJAX», если вы не используют XML, и вы не возвращаете результат клиенту ...). Вы можете решить проблему «loop», включив в возвращаемые данные идентификатор. – geocodezip