Kelvin Punongbayan
Kelvin Punongbayan

Reputation: 65

delete data in sql using ajax and php in XDK

i want to delete a row of data in my sql when delete button is pressed in xdk. i searched for some codes but still doesnt delete the data.

this is the php file (delete.php)

<?php
include('dbcon.php');

$foodid = $_POST['foodid'];

$query = "DELETE FROM menu WHERE id ='$foodid'";
$result=mysql_query($query);

if(isset($result)) {
echo "YES";
} else {
echo "NO";
}
?>

and now here is my ajax code.

$("#btn_delete").click( function(){
alert("1");

    var del_id = $(this).attr('foodid');
    var $ele = $(this).parent().parent();

alert("2");

    $.ajax({
        type: 'POST',
        url: 'http://localhost/PHP/delete.php',
        data: { 'del_id':del_id },
        dataType: 'json',
        succes: function(data){
alert("3");
            if(data=="YES"){
                $ele.fadeOut().remove();
            } else {
                alert("Cant delete row");
            }
        }
    });
});

as you can see, i placed alerts to know if my code is processing, when i run the program in xdk. it only alerts up to alert("2"); . and not continuing to 3. so i assume that my ajax is the wrong part here. Im kind of new with ajax.

Upvotes: 3

Views: 147

Answers (2)

Waqar Khan
Waqar Khan

Reputation: 427

                            <?php
                                $sqli= "*select * from temp_salesorder *";
                                $executequery= mysqli_query($db,$sqli);
                                while($row = mysqli_fetch_array($executequery,MYSQLI_ASSOC))
                                {       
                            ?>                  

 //"class= delbutton" is use to delete data through ajax

<a href="#" **id =<?php echo $row['transaction_id']; ?>** class="**delbutton**" title="Click To Delete"><button> Cancel</button></a>





     <!-- language: lang-js -->

     //Ajax Code
        <script type="text/javascript">
        $(function() {


        $(".delbutton").click(function(){

        //Save the link in a variable called element
        var element = $(this);

        //Find the id of the link that was clicked
        var del_id = element.attr("id");

        //Built a url to send
        var info = 'id=' + del_id;

         $.ajax({
           type: "GET",
           url: "deletesales.php",
           data: info,
           success: function(){

           }
         });
                 $(this).parents(".record").animate({ backgroundColor: "#fbc7c7" }, "fast")
                .animate({ opacity: "hide" }, "slow");



        return false;

        });

        });
        </script>

//deletesales.php

<?php
$db_host        = 'localhost';
$db_user        = 'root';
$db_pass        = '';
$db_database    = 'pos'; 
$db = mysqli_connect($db_host,$db_user,$db_pass,$db_database);
    $id=$_GET['id'];  <!-- This id is get from delete button -->


    $result = "DELETE FROM temp_salesorder WHERE transaction_id= '$id'";
     mysqli_query($db,$result);

?>



    <!-- end snippet -->

Upvotes: 2

Daniel Brown
Daniel Brown

Reputation: 3062

A couple of things:

  1. You should be testing using console.log() instead of alert() (imo)
  2. If you open up your console (F12 in Google Chrome) do you seen any console errors when your code runs?
  3. Your code is susceptible to SQL Injection, you will likely want to look into PHP's PDO to interact with your database.
  4. Does your PHP file execute correctly if you change:

$foodid = $_POST['foodid'];

To

$foodid = 1

If number 4 works, the problem is with your javascript. Use recommendations in numbers 1 and 2 to diagnose the problem further.

Update:

To expand. There are a few reasons your third alert() would not fire. The most likely is that the AJAX call is not successful (the success handler is only called if the AJAX call is successful). To see a response in the event of an error or failure, you can do the following:

$.ajax({
  url: "http://localhost/PHP/delete.php",
  method: "POST",
  data: { del_id : del_id  },
  dataType: "json"
})
.done(function( msg ) {
  console.log(msg);
})
.fail(function( jqXHR, textStatus ) {
  alert( "Request failed: " + textStatus );
});

More information on AJAX and jQuery's $.ajax can be found here

My "best guess" is a badly formatted AJAX request, your request is never reaching the server, or the server responds with an error.

Upvotes: 1

Related Questions