3

I'm able to delete one entry at a time using AJAX. Now I've made the possibility to select entries using a checkbox and delete them all simultaneously, this works great without AJAX. Now I'm trying to delete multiple entries using AJAX. This is what I have so far:

the ajax:

`$(function() {
$(".checkbox_button_del").click(function() {
var id = $(this).attr("id");
var dataString = 'id='+ id ;
var parent = $(this).parents('tr:first');

                        var notice = '<div class="notice">'
                                  + '<div class="notice-body">' 
                                      + '<img src="core/displays/notify/delete-icon.png" alt="" />'
                                      + '<h3>Deleted item</h3>'
                                      + '<p>The item has been succesfully deleted.</p>'
                                  + '</div>'
                                  + '<div class="notice-bottom">'
                                  + '</div>'
                              + '</div>';

                        $ny( notice ).purr(
                            {
                                usingTransparentPNG: true
                            }
                        );
$.ajax({
type: "POST",
url: "core/actions/delete_multiple.php",
data: dataString,
cache: false,

success: function()
{
parent.fadeOut('300', function() {$(this).remove();});
    $("#load_tasklist").load("core/statistics/stats_brackets.php")
    $("#load_tweets").load("response.php")
    $("#load_mod_day_summary").load("core/displays/mod_day_summary.php")
    $("#load_mod_task_selector").load("core/displays/mod_task_selector.php")
}
});

return false;
});
});`

the external deleting script:`

include('../../core/additional/connect-db.php');

    for($i=0;$i<count($_POST["chkDel"]);$i++)
    {
        if($_POST["chkDel"][$i] != "")
        {
            $strSQL = "DELETE FROM players ";
            $strSQL .="WHERE id = '".$_POST["chkDel"][$i]."' ";
            $objQuery = mysql_query($strSQL);
        }
    }



    header('Location: ' . $_SERVER['HTTP_REFERER']);`

and the result list with the delete button: `

<form name="frmMain" id="myForm" method="post" OnSubmit="return onDelete();">


<?php 

 $connection = mysql_connect($server, $user, $pass)  or die ("Could not connect to server ... \n" . mysql_error ());
 mysql_select_db($db) or die ("Could not connect to database ... \n" . mysql_error ());

    $result = mysql_query("SELECT * FROM players WHERE (userid = '$username' AND done = '0' AND measure = 'task' AND day = '$user_mydate') ORDER BY id DESC")
                    or die(mysql_error());

     echo '<div id="checkbox_button_div">
    <input class="checkbox_button_del" type="submit" id="buttondel" value="Delete" />
    <input class="checkbox_button_done" type="submit" id="buttondone" value="Done" />
    <input class="checkbox_button_done" type="submit" id="buttonfavorite" value="Favorite" />
    <input class="checkbox_button_done" type="submit" id="buttonmove" value="+1 day" />
    </div>';

     echo '

            <table id="tableOne" cellpadding="0" cellspacing="0" width="760" border="0" class="yui">    
        <thead>

            <tr>                                    

                <th><a href="#" title="Click Header to Sort">Task</a></th>

                <th><a href="#" title="Click Header to Sort">Minutes</a></th>
                <th><a href="#" title="Click Header to Sort">Time</a></th>

                <th><a href="#" title="Click Header to Sort">Category</a></th>
                <th> <input type="checkbox" class="check" value="check all" /></th>

            </tr>

        </thead>
     <tbody> ';    

        $i = 0;
        while($row = mysql_fetch_array( $result )) {   
        $i++;
            include ('core/additional/params_tasks.php');

            echo ' 

            <tr class="handcursor" onmouseover="' .($mouseover). '" onmouseout="' .($mouseout). '">         

                <td class="editable" id="' .($id). '" width="180">' .($task). ' </td>
                <td class="editable" id="' .($id). '">' .($minutes). '</td>
                <td onClick="' .($onclick). '">' .($hours_start). '.' .($minutes_start). ' - ' .($hours_due2). '.' .($minutes_due2). ' </td>
                <td onClick="' .($onclick). '">' .($categorie). ' </td>         
                <td align="center"><input type="checkbox" class="cb-element" name="chkDel[]" id="chkDel<?=$i;?>" value="' .($id). '"></td>

            </tr> ';

            }
            // close table>
            echo '</tbody>
        <tfoot>
                <tr style="display:none;">
                <td style="border: 0px;" colspan="4">
                    No matching results..
                </td>
            </tr>           
        </tfoot>
     </table>

      '; 

     ?>

    <input type="hidden" name="hdnCount" value="<?=$i;?>">

    </form>`

I think the AJAX script should pass the "$i" values as well, but I don't know how to do this. Please tell me if the problem isn't clear to you. Looking forward to your answer!

6
  • Does FireBug give you any errors? Commented Jan 23, 2012 at 14:54
  • the problem isn't clear, what's the question? Commented Jan 23, 2012 at 14:54
  • Hello, the AJAX is being executed (and gives a success message) but nothing is being deleted. My question is: how should I modify the AJAX script so it passes the right form information? Thanks :) Commented Jan 23, 2012 at 14:56
  • 2
    Why dont you create an array of ID's from the check boxes. pass that to your script, and delete records using - delete from table where id in(....) ? It should be simple enough. Commented Jan 23, 2012 at 15:01
  • sound like a good solution, pity enough I'm not skilled enough yet to write this on my own, can you help me out (if this doesn't consume too much time) ?:) Commented Jan 23, 2012 at 15:06

1 Answer 1

0

yout jquery would be somthing like this.

$("#Submit1").click(function () {

            var arr = new Array();


            $("input:checked").each(function () {

                arr.push($(this).attr("id"));

            }); //each

            $.ajax({
             type: "POST",
       url: "core/actions/delete_multiple.php",
       data: arr ,//pass the array to the ajax call
       cache: false,

       success: function()
             {   }
       });//ajax

            }); //each


        }); //click

since the PHP function will get a JSON object. you will need to do a JSON decode to ge the array.... see JSON decode... use this array to create your query like..

   delete from SalesLT.Customer
where CustomerID in (1,2,3,4);
Sign up to request clarification or add additional context in comments.

1 Comment

couldn't get it to work :( need some help with the json (docu pages are offline btw) can you rewrite the delete_multiple.php file for me? (only if it costs u a few minutes!) thanks in advance

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.