Добрый день, подскажите как перенести переменные из ява скрипт в php. Есть пример яндекса, php файл и js. Как можно перенести переменные из js в php (выделил жирным), или вообще можно эту конструкцию только в php исполнять, для того что б с результатом запроса из базы данных не перекидывать в js. PHP: <!DOCTYPE html> <?php $mysqli = new mysqli('127.0.0.1', 'user', '123456', 'gpstracker'); $sql ="select gd211.TIMESTAMP_UTC, gd211.LATITUDE, gd211.LONGITUDE, gd211.SPEED, gd211.FUEL1 from gpsdata as gd211 WHERE DI2 > 0 ORDER BY id DESC LIMIT 1;"; if (!$result = $mysqli->query($sql)) {exit;} $data = $result->fetch_assoc(); $LATITUDE = $data['LATITUDE']; $LONGITUDE = $data['LONGITUDE']; $fuel= $data['FUEL1']; $speed= $data['SPEED']; mysqli_free_result($result); $mysqli->close(); ?> <html> <head> <title>БашУралМонолит</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script> var LATITUDE = <?php echo $LATITUDE ?>; var LONGITUDE = <?php echo $LONGITUDE ?>; var fuel = <?php echo $fuel ?>; var speed = <?php echo $speed ?>; </script> <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=<Яkey>" type="text/javascript"></script> <script src="icon_sprites.js" type="text/javascript"></script> <style> html, body, #map { width: 100%; height: 100%; padding: 0; margin: 0; } </style> </head> <body> <div id="map"></div> </body> </html> Код (Javascript): ymaps.ready(init); function init () { var myMap = new ymaps.Map('map', { center: [55.5517, 54.9584], type: 'yandex#hybrid', zoom: 7 }), От сих [B] myPlacemark1 = new ymaps.Placemark([LATITUDE, LONGITUDE], { hintContent: "Ларгус", balloonContentHeader: "Ларгус", balloonContentBody: '<img src="img/largus100b.png" height="70" width="150">' + '<br>' + '<b>Топливо: ' + fuel/100 + ' литров,<br>Скорость: ' + speed +' км/ч,<br>Датчик1: 12345 арбузов </b> <br/>' }, { iconLayout: 'default#image', iconImageHref: 'img/largus100.png', iconImageSize: [75, 31], iconImageOffset: [0, 0], hideIconOnBalloonOpen: false, }), myPlacemark2 = new ymaps.Placemark([55.56, 54.96], { hintContent: "Копейка", balloonContentHeader: "Копейка", balloonContentBody: '<img src="img/ac577b.png" height="90" width="150">' + '<br/>' + '<b>Топливо: ' + fuel/100 + ' литров,<br>Скорость: ' + speed +' км/ч,<br>Датчик1: 12345 арбузов </b> <br/>' }, { iconLayout: 'default#image', iconImageHref: 'img/ac577.png', iconImageSize: [75, 31], iconImageOffset: [0, 0], hideIconOnBalloonOpen: false, }), myPlacemark3 = new ymaps.Placemark([55.5517, 54.9584], { hintContent: "Лада 07", balloonContentHeader: "Лада 07", balloonContentBody: '<img src="img/ac577b.png" height="90" width="150">' + '<br>' + '<b>Топливо: ' + fuel/100 + ' литров,<br>Скорость: ' + speed +' км/ч,<br>Датчик1: 12345 арбузов </b> <br/>' }, { iconLayout: 'default#image', iconImageHref: 'img/ac577.png', iconImageSize: [75, 31], iconImageOffset: [0, 0], hideIconOnBalloonOpen: false, });[/B] до сих myMap.geoObjects.add(myPlacemark1) .add(myPlacemark2) .add(myPlacemark3); }
1. Если вы хотите отображать на карте мониторинг геопозиций транспорта в реальном времени, то сначала прочтите - https://tech.yandex.ru/maps/jsapi/doc/2.1/terms/index-docpage/ п.6 2. Схема такая. html документ с ЯндексКартой, там работает таймер (например 1 раз в минуту, который ajax запросом идет в в БД (через php в вашем случае) и получает координаты, отображает эти координаты на карте 3. Реализация п 2, так же должна соблюдать все п из ссылки в п1, в том числе на кол-во запросов в сутки Если будет именно диспетчеризация, мониторинг транспорта - даже если сначала будет работать, как только дойдет до проверки на выполнение пунктов соглашения - от 1 часа до пары недель - доступ к api будет заблокирован Яндексом (попадал в такую ситуацию, знаю)
тогда п. 2 но 100 запросов неделю непонятно..... что вы вообще хотите в этом случае сделать, показ координат водителя только в момент показы страницы?
Есть недвижимые механизмы и 10 машин, с терминалов (Омником) данные прилетают в MSQL, и там храняться, в момент Х, необходимо глянуть, где находятся это все хозяйство для оценки масштаба трагедии, и показания датчиков не движимых механизмов в случае аларма..... 100 запросов в неделю это я погорячился, в самом редком случае так будет.....
а в чем вопрос тогда? у вас и так из php -> js передается все HTML: var LATITUDE = <?php echo $LATITUDE ?>; var LONGITUDE = <?php echo $LONGITUDE ?>; var fuel = <?php echo $fuel ?>; var speed = <?php echo $speed ?>;
Дак вот щас хочу вывести след как машина ехала, из точек с запроса, т.е. надо передать не пару переменных а весь запрос. И попал в ступор, как на js его распарсить... PHP: <!DOCTYPE html> <?php $mysqli = new mysqli('127.0.0.1', 'user', '123456', 'gpstracker'); $sql ="SELECT `TIMESTAMP`, `LONGITUDE`,`LATITUDE`,`FUEL1` FROM gpsdata WHERE `TIMESTAMP` BETWEEN '2020-03-06' AND '2020-03-07' ORDER BY `TIMESTAMP` ASC;"; $data = $result->fetch_assoc(); mysqli_free_result($result); $mysqli->close(); ?> <html> <head> <title>БашУралМонолит</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script> var data = <?php echo $data ?>; </script> <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=<Яkey>" type="text/javascript"></script> <script src="icon_sprites.js" type="text/javascript"></script> <style> html, body, #map { width: 100%; height: 100%; padding: 0; margin: 0; } </style> </head> <body> <div id="map"></div> </body> </html>
Знаете как массивы в js выглядят? Можете просто как json_encode($data); Вывести и дальше в js делать что хотите
Подскажите пожалуйста, как записать одним запросом, с while вот так работает: PHP: <!DOCTYPE html> <?php $mysqli = new mysqli('127.0.0.1', 'user', '123456', 'gpstracker'); $sql ="SELECT LONGITUDE, LATITUDE, SPEED, FUEL1 FROM gpsdata WHERE FUEL1 > 0 AND `DEVICE_ID` = 354007390 ORDER by ID desc limit 1;"; if (!$result = $mysqli->query($sql)) {} $data = $result->fetch_assoc(); $LATITUDE = $data['LATITUDE']; $LONGITUDE = $data['LONGITUDE']; $fuel= $data['FUEL1']; $speed= $data['SPEED']; $sql ="SELECT LONGITUDE, LATITUDE, SPEED, FUEL1 FROM gpsdata WHERE FUEL1 > 0 AND `DEVICE_ID` = 326004211 ORDER by ID desc limit 1;"; if (!$result = $mysqli->query($sql)) {} $data1 = $result->fetch_assoc(); $LATITUDE1 = $data1['LATITUDE']; $LONGITUDE1 = $data1['LONGITUDE']; $fuel1= $data1['FUEL1']; $speed1= $data1['SPEED']; mysqli_free_result($result); $mysqli->close(); ?> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script> var LATITUDE = <?php echo $LATITUDE ?>; var LONGITUDE = <?php echo $LONGITUDE ?>; var fuel = <?php echo $fuel ?>; var speed = <?php echo $speed ?>; var LATITUDE1 = <?php echo $LATITUDE1 ?>; var LONGITUDE1 = <?php echo $LONGITUDE1 ?>; var fuel1 = <?php echo $fuel1 ?>; var speed1 = <?php echo $speed1 ?>; </script> <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=<яkey>" type="text/javascript"></script> <script> ymaps.ready(init); function init () { var myMap = new ymaps.Map('map', { center: [55, 54], type: 'yandex#hybrid', zoom: 7 }), myPlacemark1 = new ymaps.Placemark([LATITUDE, LONGITUDE], { hintContent: "ГАЗ Соболь", balloonContentHeader: "ГАЗ Соболь", balloonContentBody: '<img src="img/sobol100b.png" height="70" width="150">' + '<br>' + '<b>Топливо: ' + fuel/10 + ' литров,<br>Скорость: ' + speed +' км/ч,<br>Гос. номер: a456ab </b> <br/>' }, { iconLayout: 'default#image', iconImageHref: 'img/sobol100b.png', iconImageSize: [75, 31], iconImageOffset: [0, 0], hideIconOnBalloonOpen: false, }), myPlacemark2 = new ymaps.Placemark([LATITUDE1, LONGITUDE1], { hintContent: "Лада Ларгус", balloonContentHeader: "Лада Ларгус", balloonContentBody: '<img src="img/largus100b.png" height="90" width="150">' + '<br>' + '<b>Топливо: ' + fuel1/100 + ' литров,<br>Скорость: ' + speed1 +' км/ч,<br>Гос. номер: a123ab</b> <br/>' }, { iconLayout: 'default#image', iconImageHref: 'img/largus100b.png', iconImageSize: [75, 31], iconImageOffset: [0, 0], hideIconOnBalloonOpen: false, });; myMap.geoObjects.add(myPlacemark1) .add(myPlacemark2); } </script> <style> html, body, #map { width: 100%; height: 100%; padding: 0; margin: 0; } </style> </head> <body> <div id="map"></div> </body> </html> --- Добавлено --- запрос я сделал вот так Код (Text): (SELECT name_mashine.name, name_mashine.gos_numer, name_mashine.img, gpsdata.LONGITUDE, gpsdata.LATITUDE, gpsdata.SPEED, gpsdata.FUEL1 FROM name_mashine, gpsdata WHERE name_mashine.id_devise = gpsdata.DEVICE_ID and gpsdata.FUEL1 > 0 AND `DEVICE_ID` = 354007390 ORDER by gpsdata.ID desc limit 1) UNION (SELECT name_mashine.name, name_mashine.gos_numer, name_mashine.img, gpsdata.LONGITUDE, gpsdata.LATITUDE, gpsdata.SPEED, gpsdata.FUEL1 FROM name_mashine, gpsdata WHERE name_mashine.id_devise = gpsdata.DEVICE_ID and gpsdata.FUEL1 > 0 AND `DEVICE_ID` = 326004211 ORDER by gpsdata.ID desc limit 1)
вот так чот не работает, экран пустой ошибок нет... PHP: <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=<яkey>" type="text/javascript"></script> <script> ymaps.ready(init); function init () { var myMap = new ymaps.Map('map', { center: [55, 54], type: 'yandex#hybrid', zoom: 7 }), <?php $link = mysqli_connect('127.0.0.1', 'user', '123456', 'gpstracker') or die("Ошибка " . mysqli_error($link)); mysqli_query($link,"SET CHARACTER SET 'utf8'"); mysqli_query($link,"SET SESSION collation_connection ='utf8mb4_general_ci'"); $query ="(SELECT name_mashine.name, name_mashine.gos_numer, name_mashine.img, gpsdata.LONGITUDE, gpsdata.LATITUDE, gpsdata.SPEED, gpsdata.FUEL1 FROM name_mashine, gpsdata WHERE name_mashine.id_devise = gpsdata.DEVICE_ID and gpsdata.FUEL1 > 0 AND `DEVICE_ID` = 354007390 ORDER by gpsdata.ID desc limit 1) UNION (SELECT name_mashine.name, name_mashine.gos_numer, name_mashine.img, gpsdata.LONGITUDE, gpsdata.LATITUDE, gpsdata.SPEED, gpsdata.FUEL1 FROM name_mashine, gpsdata WHERE name_mashutf8mb4_general_ciine.id_devise = gpsdata.DEVICE_ID and gpsdata.FUEL1 > 0 AND `DEVICE_ID` = 326004211 ORDER by gpsdata.ID desc limit 1) "; $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link)); if ($result = mysqli_query($link, $query)) { $table = ''; while ($row = mysqli_fetch_assoc($result)) { ?> myPlacemark1 = new ymaps.Placemark([.'row['LATITUDE'].', .'row['LONGITUDE'].'], { hintContent: .'row['name'].', balloonContentHeader: .'row['name'].', balloonContentBody: '<img src="img/.'row['img'].'" height="70" width="150">' + '<br>' + '<b>Топливо: ' + .'row['FUEL1'].'/10 + ' литров,<br>Скорость: ' + .'row['SPEED'].' +' км/ч,<br>Гос. номер: a456ab </b> <br/>' }, { iconLayout: 'default#image', iconImageHref: 'img/sobol100b.png', iconImageSize: [75, 31], iconImageOffset: [0, 0], hideIconOnBalloonOpen: false, }), <?php } mysqli_free_result($result); } mysqli_close($link); ?> ; myMap.geoObjects.add(myPlacemark1) .add(myPlacemark2); } </script> <style> html, body, #map { width: 100%; height: 100%; padding: 0; margin: 0; } </style> </head> <body> <div id="map"></div> </body> </html>