Stephen
Stephen

Reputation: 537

Delete PHP (mysqli) row - with HTML/Javascript button

Using google maps, I have events saving to a database using mysqli. These events are then displayed as markers on the map and when clicked the relevant data is displayed in an info box (Name, date, etc). I want the option to delete an event event by deleting a row from the DB when the Remove (remove-event) button is clicked. The button is contained in the data displayed with the javascript:

var eventContent = $('<div class="event-info">' + '<h4 class="event-name">' +     point.name + '</h4><hr>' +
        '<span><h5>Date: </h5>' +
        '<p class="event-date">' + point.edate + '</p></span>' +
        '<p class="event-description">'+point.description+'</p>' +
        '</span><button id="remove-event" name="remove-event" class="remove-event btn btn-danger btn-sm" onclick="tidy_maps.delete()" title="Remove Event">Remove Event</button>'+
        '</div>');

    // Display Event details on marker click
    google.maps.event.addListener(event_markers[i], "click", function () {
        infowindow.setContent(eventContent[0]);
        infowindow.open(map, event_markers[i]);

The script that sends it to the php (removedata.php):

tidy_maps.delete = function() {
    $.ajax({
        type:'POST',
        url:'removedata.php',
        success:function(data) {
            if(data) {
                alert("Are you sure?");
            }
            else {
                alert("ERROR!!!!");
            }
        }
    });
}

The removedata.php is:

$con = mysqli_connect("localhost", "root", "password", "gmaps1");
if (!$con) {
die("Can not connect: " .mysql_error());
}

$sql = "DELETE FROM events WHERE id = 'id' ";

$query = mysqli_query($con, $sql);

if(mysqli_affected_rows($con)) {
    echo "Record deleted successfully";
}

mysqli_close($con);

As it is, it does not delete the row in the DB, but when i change the line:

$sql = "DELETE FROM events WHERE id = 'id' ";

to a specific ID No. Example:

$sql = "DELETE FROM events WHERE id = '5' ";

And i run the removedata.php in the browser, it deletes the row with ID=5 from the DB. There seems to be no errors when the console when clicking the remove button so it must be sending to PHP script ok.

I would like when the Remove button is clicked that it asks are you sure and then it deletes that specific Row form the DB.

Upvotes: 0

Views: 1380

Answers (4)

Vijay
Vijay

Reputation: 431

Try this

var id = 5;
var request = $.ajax({
  url:'removedata.php',
  type: "POST",
  data: "id="+id,
  success: function(data){
     console.log(data);
  }
});

get post value in removedata.php

 //get post value
 $id = intval($_POST["id"]);
 $sql = "DELETE FROM events WHERE id = " . $id;

Upvotes: 0

msfoster
msfoster

Reputation: 2572

As far as I can tell you don't pass the ID of the row to be deleted. You can send data two ways, either as a url parameter, or post it using the data tag:

$.ajax({
    type:'POST',
    url:'removedata.php',
    data: {id : 5}
});

Access the ID in removedata.php:

$id = intval($_POST["id"]);
$sql = "DELETE FROM events WHERE id = " . $id;

Upvotes: 1

Stephen
Stephen

Reputation: 537

Ok I've played around a little and amended the JS slightly:

tidy_maps.delete = function() {
var confirm_remove = confirm("Do You Want to Remove This Event?")
if(confirm_remove) {
    $.ajax({
        type:'POST',
        url:'removedata.php',
    });
    window.location = "http://www.google.com/";
}
else {
    alert("ERROR!!!!");
}
}

So when Confirm is YES, i threw in a redirect to Google just to see what happens. When YES is clicked in the confirm box, it redirects the page to Google but does not delete the row from the DB

Upvotes: 0

Alex R
Alex R

Reputation: 45

WHERE id = 'id' you need to remove the '' and add the $ symbol if you want id to be a variable.

Upvotes: 0

Related Questions