#php #javascript #mysql
#php #JavaScript #MySQL
Вопрос:
Интересно, может ли кто-нибудь мне помочь, пожалуйста.
В настоящее время я использую приведенный ниже код для успешного преобразования ссылок на сетку ОС в координаты широты и долготы. Это делается с помощью события щелчка по кнопке в моей HTML-форме.
function converttolatlng() {
var gr = document.getElementById('osgridref').value;
var osgb = new GT_OSGB();
if (osgb.parseGridRef(gr)) {
var wgs84 = osgb.getWGS84();
document.getElementById('osgb36lat').value = wgs84.latitude;
document.getElementById('osgb36lon').value = wgs84.longitude;
}
else {
document.getElementById('osgb36lat').value = "n/a";
document.getElementById('osgb36lon').value = "n/a";
}
}
Теперь я хочу представить некоторые ссылки на сетку ОС (около 22 000) из внешнего XML-файла, который я хочу преобразовать перед загрузкой информации в базу данных MySQL (и, следовательно, не будет проходить через событие «щелчок» в обычной форме), но я действительно не уверен, как это сделать.
Может быть, кто-нибудь, пожалуйста, покажите мне, как я мог бы обойти необходимость события «щелчка» и выполнить преобразование автоматически.
Любая помощь будет с благодарностью принята.
Большое спасибо
Комментарии:
1. Какое это имеет отношение к PHP?
Ответ №1:
Если я правильно понял ваш вопрос, и вы действительно просто хотите избежать необходимости нажимать кнопку, вы можете просто вызвать свою функцию в a <script>
в нижней части вашего HTML. Скрипт будет выполнен, как только браузер отобразит его, поэтому, пока необходимые элементы уже находятся на странице над ним и XML загружен, он должен работать нормально.
<!-- after most of your HTML, but before the closing <body> -->
<script type='text/javascript'>
converttolatlng();
</script>
</body>
</html>
Если вам нужна полная загрузка страницы и у вас есть некоторые внешние зависимости, загруженные скриптами, которые должны быть на месте, используйте window.onload
свойство внутри <head>
тега HTML:
<script type='text/javascript'>
window.onload = converttolatlng();
</script>
Комментарии:
1. Привет, большое спасибо, что нашли время ответить на мой пост. В идеале я бы хотел полностью обойти HTML-форму, если смогу. Таким образом, его можно запускать как запланированное задание в часы, когда количество пользователей моего сайта будет очень низким. С уважением
Ответ №2:
Быстрый способ сделать это (и изучить инструмент, который будет очень полезен в будущем) — использовать инструмент ETL, такой как Pentaho Kettle. Это визуальный инструмент, который вы можете подключить к своей базе данных и к своему XML-файлу, выполнить пошаговые преобразования, а затем нажать «Выполнить». Он выполнит все преобразования за вас.
Если вам нужно, вы можете использовать библиотеку java OSGB в Pentaho, чтобы выполнить преобразование за вас, но вы также можете использовать библиотеки Javascript. Документации Pentaho немного не хватает, и к ней нужно немного привыкнуть, но как только вы поймете это, это ускорит любой ETL-проект, на который вам может потребоваться всего несколько минут вместо часов.
С другой стороны, если библиотека OSGB недоступна в PHP, я бы просто запустил ее как цикл через Javascript и с помощью jQuery.Функция Json, передает результаты в PHP для записи в БД. Таким образом, вы можете передавать асинхронные объекты и иметь дело только с теми преобразованиями / записями в БД, которые завершаются с ошибкой.
Проверьте PHPCoord