Php Variable declaration error - MySQL

100 views Asked by At

I am very new to php. I have a simple website that loops through a mysql database and draws polygons for every row. It also assigns a custom attribute (name) to every polygon that the user can see when he clicks the polygon.

When a user clicks the polygon, he should see the value of variable "bname"

The code works perfectly when I assign bname to a coordinate:

var bname = ('.$row[coord1].');

The code fails when I assign bname to another column that is a string:

var bname = ('.$row[name].');

All data in the database is text format, I suspect that maybe I am using the wrong syntax to return a string value from the database? I need to assign bname to the name column in the database..

This is the full code:

$findmap= 'SELECT * FROM build2';

if(!$result = $con->query($findmap)){
die('There was an error running the query 
    [' . $con->error . ']');
} else {
while ($row = $result->fetch_assoc()) {

  echo '        
        var polypath = [new google.maps.LatLng('.$row[coord1].'),
                new google.maps.LatLng('.$row[coord2].'),
                new google.maps.LatLng('.$row[coord3].'),
                new google.maps.LatLng('.$row[coord4].'),
                new google.maps.LatLng('.$row[coord5].'),
                new google.maps.LatLng('.$row[coord6].'),
                new google.maps.LatLng('.$row[coord1].')
                ];


        var bname = ('.$row[name].');

        var dxbmap = new google.maps.Polygon({
        custom: bname,
        path:polypath,
        strokeColor:"#0000FF",
        strokeOpacity:0.8,
        strokeWeight:1,
        fillColor:"#0000FF",
        fillOpacity:0.1

        });

        dxbmap.setMap(map);

        google.maps.event.addListener(dxbmap, "click", function() {
        alert(this.custom);

    });

';
}
}
?>
1

There are 1 answers

0
chris85 On BEST ANSWER

You need to check your console in the browser for JS errors which I think is what you are encountering. Try this

$findmap= 'SELECT * FROM build2';

if(!$result = $con->query($findmap)){
die('There was an error running the query 
    [' . $con->error . ']');
} else {
while ($row = $result->fetch_assoc()) {

  echo '        
        var polypath = [new google.maps.LatLng('.$row[coord1].'),
                new google.maps.LatLng('.$row[coord2].'),
                new google.maps.LatLng('.$row[coord3].'),
                new google.maps.LatLng('.$row[coord4].'),
                new google.maps.LatLng('.$row[coord5].'),
                new google.maps.LatLng('.$row[coord6].'),
                new google.maps.LatLng('.$row[coord1].')
                ];


        var bname = \''.$row[name].'\';

        var dxbmap = new google.maps.Polygon({
        custom: bname,
        path:polypath,
        strokeColor:"#0000FF",
        strokeOpacity:0.8,
        strokeWeight:1,
        fillColor:"#0000FF",
        fillOpacity:0.1

        });

        dxbmap.setMap(map);

        google.maps.event.addListener(dxbmap, "click", function() {
        alert(this.custom);

    });

';
}
}
?>

With your current code your console log I think would be displaying something like

Uncaught ReferenceError:

The parenthesis don't encapsulate a string, is that what you were trying to do with those?