У меня есть база данных, где каждая строка имеет широту / долготу информации для карт с очками.
каждый ряд впоследствии превращается в маркер. когда я нажимаю на этот маркер, появляется информационное окно.
Я хочу, чтобы в информационном окне была кнопка, чтобы при нажатии запись из базы данных удалялась. но моя кнопка не сработает. в частности, что-то в функции eraseEntry (), прикрепленной к событию onClick, не работает. когда я нажимаю кнопку, удаляется только последняя запись в базе данных, независимо от того, какой маркер я нажимаю.
var map=//make the google map
var markersArray = [];
var infoWindow = new google.maps.InfoWindow({content: ""});
var markers;
$.get("phpsqlajax_genxml.php", function(data)
{
markers = data.documentElement.getElementsByTagName("marker");
makeMarkersWithXMLinfo();
});
function makeMarkersWithXMLinfo()
{
for (var i = 0; i < markers.length; i++)
{
var name = markers[i].getAttribute("name");
var markerLocation = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng")));
var html = "<b>" + name + "</b> <br/>" +
"</b> <br/>" + "</b> <br/>" +
"<input type='button' value='Erase Entry' onclick='eraseEntry()'/>";
var markerWithLocation = new google.maps.Marker({position: markerLocation, map: map});
var markerWithInfo = createMarker(markerWithLocation,html);
eraseEntry = function ()
{
$.get("delete.php", { identifierVar: name } );
}
}
}
function createMarker(markerWithLocation, html) {
var markerWithInfo = google.maps.event.addListener(markerWithLocation, 'click', function(){infoWindow.setContent(html); infoWindow.open(map,markerWithLocation)});
return markerWithInfo;
}
Я могу вытащить из базы данных и создать маркеры просто отлично.
Я пытался заставить функцию eraseEntry () вызывать другую функцию, которая находится за пределами функции makeMarkersWithXMLinf (), но я все еще получаю ту же проблему. в зависимости от того, где я помещаю / вызываю эти функции, иногда JavaScript даже не думает, что моя функция существует ...
ниже моего файла delete.php
<?php
require("phpsqlajax_dbinfo.php");
// Opens a connection to a MySQL server
$connection = mysql_connect ('localhost', $username, $password);
if (!$connection) {
die('Not connected : ' . mysql_error());
}
// Set the active MySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die ('Can\'t use db : ' . mysql_error());
}
if(isset($_GET['identifierVar']))
{
$query = 'DELETE FROM markers WHERE name = '.(int)$_GET['identifierVar'];
$result = mysql_query($query);
}
?>
Я тестировал только с уникальными именами.
как 111, 222, 333 .. и т. д.
любая помощь приветствуется. спасибо.