1

I want to delete a record from database on click and this is what I have tried:

delete.js

function oki(){
    mysql_query("DELETE FROM topics WHERE id='58'"); 
}

Button:

<script type="text/javascript" src="delete.js"></script>
<?php
    include_once("connect.php");
?>

<button onClick="oki();">Del</button>

Please help me I cant find out how to do this. Just tell me if you need any more information.

Radim Köhler
  • 122,561
  • 47
  • 239
  • 335
  • 3
    php and javascript do not work that way together – SubjectCurio Aug 31 '13 at 09:31
  • 1
    I would recommend you to use `ajax()` – user123_456 Aug 31 '13 at 09:33
  • Welcome to Stack Overflow! You should use **[`MySQLi`](http://cz1.php.net/manual/en/book.mysqli.php)** or **[`PDO`](http://cz1.php.net/manual/en/book.pdo.php)** instead of **[`mysql_*`](http://cz1.php.net/manual/en/book.mysql.php)** functions, which are deprecated and will be removed in the future versions of PHP. [More information avalible here](http://php.net/manual/en/mysqlinfo.api.choosing.php). – Petr R. Aug 31 '13 at 09:59
  • possible duplicate of [Reference: Why does the PHP (or other server side) code in my Javascript not work?](http://stackoverflow.com/questions/13840429/reference-why-does-the-php-or-other-server-side-code-in-my-javascript-not-wor) – Petr R. Aug 31 '13 at 10:00

6 Answers6

1

If you just want to delete from a link, don't care about page reload etc... then it's already answered here:

php delete mysql row from link

But it sounds like you want to click a button, and it'll delete the row without navigating you away from the page you're on, in which case you'll want to look into using some form of ajax.

You've not provided enough of your code so can't help you with updating the display after you've performed your action, but the basis would probably look something like this (untested)

delete.php

<?php

include_once("connect.php");

if ($_GET['mode'] == 'delete') {
  $row_id = (int)$_POST['row_id'];
  mysql_query("DELETE FROM topics WHERE id=" . $row_id); 
}

?>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1    /jquery.min.js"></script>
<script type="text/javascript">
  $(document).ready(function(){
    $('.delete-row').click(function() {
      $.post('delete.php?mode=delete', { row_id: $(this).data('row_id')}).done(function(data) {
        // Reload your table/data display
      });
    });
  });
</script>

<button class="delete-row" data-row_id="58">Delete</button>

I would HEAVILY advise against using mysql_ functions, use PDO or MySQLi instead. Go back to basics and learn how PHP and javascript can interact with each other, as there's something not right there in your knowledge.

Edit (additional OCD):

You should also be considering other things, can anyone delete any row? If only certain people should have permission, you should verify that the currently logged in user should be allowed to delete that particular row prior to deleting it.

Community
  • 1
  • 1
SubjectCurio
  • 4,702
  • 3
  • 32
  • 46
0
<input type="button" onclick="deleteme(<?php echo $row['id']; ?>)"> // fetch from database
<script language="javascript">
function deleteme(delid) 
{
        window.location.href='delete.php?del_id='+delid+'';
        return true;
}
</script>

delete.php

$select="delete from tbl_category where id='".$_GET['del_id']."'";
$query=mysql_query($select) or die($select);
chirag ode
  • 950
  • 7
  • 15
0

Sorry for my bad english First of all create file with php extensions and function you create its php's function not javascript, so code this one.

<a href="delete.php?id=58">Delete</a>

Create delete.php file and code this one

if(isset($_GET['id'])) {
   @mysql_query("DELETE FROM topics WHERE id = '".$_GET['id']."'");
   header("location: index.php");
   exit();
}
user2727841
  • 715
  • 6
  • 21
  • 1
    You should use mysql_real_escape_string so people will not inject SQL into a query. this will delete all entries `delete.php?id=58 or 1=1` – jcubic Aug 31 '13 at 09:53
  • Delete operations via a GET string should be avoided - its an instruction to do something not get something. Anyhow, imagine a spider going nuts on your site clicking every delete link ... – Cups Aug 31 '13 at 09:58
0

PHP

$ids = array_map('intval', json_decode($_GET['id']));
mysql_query("DELETE FROM topics WHERE id in (" . implode(',', $ids) . ")");

and in javascript (using jQuery)

function oki() {
    var checked = $('.row:checked');
    var ids = checked.map(function() { return $(this).val(); });
    $.get('delete.php', {id: JSON.stringify(ids)}, function(response) {
        checked.remove();
    });
}

and your html would be

Row with id 10: <input type="checkbox" class="row" value="10"/>
Row with id 20: <input type="checkbox" class="row" value="20"/>
Row with id 30: <input type="checkbox" class="row" value="30"/>
Row with id 40: <input type="checkbox" class="row" value="40"/>
<button onClick="oki();">Del</button>
jcubic
  • 61,973
  • 54
  • 229
  • 402
0

This is what I did to delete data without leaving page or reload page:

In some.php:

<?php
include"../connect.php";

// for simple security need change to improve
Session_start();
$n=rand(1,99);
$uid=md5($n);
$_SESSION['uid']=$uid
// end
?>
<script>
function getXMLHTTP() { //fuction to return the xml http object
    var xmlhttp=false;  
    try{
        xmlhttp=new XMLHttpRequest();
    }
    catch(e)    {       
        try{            
            xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e){
            try{
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch(e1){
                xmlhttp=false;
            }
        }
    }       
    return xmlhttp;
}

function getData(strURL) {      
    var req = getXMLHTTP();
    if (req) {
        req.onreadystatechange = function() {
            if (req.readyState == 4) {
                // only if "OK"
                if (req.status == 200) {                        
            document.getElementById('divResult').innerHTML=req.responseText;                        
                } else {
                    alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                }
            }               
        }           
        req.open("GET", strURL, true);
        req.send(null);
        }
    }
</script>
<input name="button" type="button" value="Clear Data" onClick="getData('deldata.php?id=58&uid=<?=$uid?>')">
<div id="divResult"></div>

In deldata.php:

<?php
Session_start();
include"../connect.php";
$idd=$_REQUEST['id'];
$uid=$_REQUEST['uid'];
$sc=$_SESSION['uid'];

//check for simple security
if($sc==$uid){
   mysqli_query("DELETE FROM topics WHERE id='$idd'");
echo "Data deleted":
}
?>

You can also use this for dynamic row for multiple "Delete" button.

Pang
  • 9,564
  • 146
  • 81
  • 122
Gumilar
  • 95
  • 2
  • 3
  • 12
0

Here is my solution:

 <?php
$query="select * from product limit ".$offset. " , " .$perpage;
$result=mysql_query($query);

?>
<center>
<table border="2">
<tr>
<th>Category Name</th>
<th>Product Name</th>
<th>Product Description</th>
<th>Product Image</th>
<th>Product Actual image</th>
<th>Product Discount</th>
<th>Product Selling Price</th>
<th>Update/Delete</th>
</tr>
<?php while ($row=mysql_fetch_array($result)){?>
<tr>
<td><?php echo $row['pro_catagory'];?></td>
<td><?php echo $row['pro_name'];?></td>
<td><?php echo $row['pro_des'];?></td>
<td><img src="Img/<?php echo $row['pro_image'];?>" width="100" height="100" ></td>
<td><?php echo $row['pro_actual'];?></td>
<td><?php echo $row['pro_dis'];?></td>
<td><?php echo $row['pro_price'];?></td>


<td<a href="delete.php?pid=<?php echo $row['pro_id'];?>">Delete</a></td>

?>

In delete.php

<?php
$con=mysql_connect('localhost','root','');
if(!$con)
{
die('could not connect' .mysql_error());
}
mysql_select_db("jaswinder", $con);
$Query="delete from product where pro_id=".$_REQUEST['pid'];
$result=mysql_query($Query);
?>
Jaswinder Kaur
  • 190
  • 1
  • 3
  • 10