Search code examples
phpmysqldelete-row

Delete Row From MySQL


I wonder whether someone may be able to help me please.

I'm using the section of code below to create a table which correctly list records pertinent to the current user.

/* display row for each user */ 


echo "<tr>\n"; 
$theID = $row['locationid']; 
echo " <td style='text-align: Center'>{$row['locationname']}</td>\n";
echo " <td style='text-align: Left'>{$row['returnedaddress']}</td>\n"; 
echo " <td style='text-align: Center'>{$row['totalfinds']}</td>\n"; 
echo " <form action= locationsaction.php  method= 'post'><input type='hidden' name='lid' value=$theID/>                                             <td><input type= 'submit' name= 'type' value= 'Details'/></td>
<td><input type= 'submit' name= 'type' value= 'Images'/></td>
<td><input type= 'submit' name= 'type' value= 'Add Finds'/></td>
<td><input type= 'submit' name= 'type' value= 'View Finds'/></td>
<td><input type= 'submit' name = 'type' value= 'Delete'/></td></form>\n";

At the end of each table row there are a selection of buttons which via locatiosnaction.php shown below , navigate the user to other pages, all linked back to the main table record.

'locationsaction.php'

<?php 
session_start();
$_SESSION['lid'] = $_POST['lid'];
if (isset($_POST['type'])) {
    $urls = array(
        'Details' => 'viewlocation.php',
        'Add Finds' => 'addfinds.php',
        'Images' => 'addimages.php',
        'View Finds' => 'locationfinds.php',
        'Delete' => 'deletelocation.php'
    );
    $url = $urls[$_POST['type']];
    header("Location: " . $url);
}
?>

The problem I'm having revolves around the deletion of the record. This is the query I'm using:

'deletelocation.php'

<?php

    $lid = $_SESSION['lid'];
            $query = "DELETE FROM detectinglocations WHERE locationid='$lid'";
            $result = mysql_query($query);

?>

The functionality of the button works fine, as it takes the user to the deletelocation.php script, but it's not deleting the record.

I've been using several scripts as reference and I'd thought I'd followed them correctly, but clearly not.

I just wondered whether someone could possibly take a look at this please and let me know where I'm going wrong.

Many thanks and kind regards


Solution

  • You're missing the session_start(); at the beginning of deletelocation.php.

    You have to call this on every page, that wants to use the session.

    So in your case $_SESSION['lid'] is not resolvable, which will invalidate your SQL query.

    PHP docu:

    session_start() creates a session or resumes the current one ...