eve_mf
eve_mf

Reputation: 825

deleting records from mysql table

Continuing with my simple CRUD, I'm stuck again...

So I have a table created called "usuaris" and a column called "id" which is my auto-increment and then another column called "usuari_nom". Now, I want to add "delete function", so when I am displaying the records of my table I've added a to delete it:

 <div id="main">
        <?php 

        global $conn;

    $query = "SELECT * FROM usuaris";

    if($grup_usuaris = mysqli_query($conn, $query)) {
         echo "<table>";
         echo "<tr><th>Usuaris</th><th>Accions</th></tr>";
             while($row = mysqli_fetch_assoc($grup_usuaris)) {
                 echo "<tr><td>" . $row['usuari_nom'] . "</td><td><a href=\"elimina_usuari.php?subject=" . $row['id'] . "\">Eliminar usuari</a></td></tr>";

             }
         echo "</table>";
         echo "<a href=\"nou_usuari.php\">+ Afegeix Usuari</a>";
         mysqli_free_result($grup_usuaris);
    } else {
        echo "query failed";
        echo("Error description: " . mysqli_error($conn));
    }                 
        ?>
    </div>

So now, If I click on "eliminar usuari" it goes to the file where I am adding the query to delete, plus the id of that user; for example: "http://localhost/calendario/elimina_usuari.php?subject=6". But then, in the file elimina_usuari.php, how do I select the id to know what record to delete?

I've thought with $_GET but it doesn't seems to work, either with $_POST:

elimina_usuari.php

<?php 

global $conn;

$usuari_id = $_GET['id'];
$query = "DELETE FROM subjects WHERE id = {$usuari_id} LIMIT 1";

$result = mysqli_query($conn, $query);

if ($result && mysqli_affected_rows($conn) == 1) {
     redirect_to("calendari.php");      
} else {
echo "no eliminat";
}
?>

Any clue how can I get its id? Should I take it from the url somehow?

Thanks

Upvotes: 1

Views: 82

Answers (5)

Mubin
Mubin

Reputation: 4425

you're doing fine.

just need to change this

$usuari_id = $_GET['id'];

to

$usuari_id = $_GET['subject'];

as you're setting subject instead of id in your url

http://localhost/calendario/elimina_usuari.php?subject=6
                                               ^  

and if you want to process id, like $_GET['id'], you need to change URL.

"http://localhost/calendario/elimina_usuari.php?id=6"
                                                ^ change here   

EDIT

as per your comment,

you can use any $variable to $_POST or $_GET, it has nothing to do with the database column name.

Like you can use following.

"http://localhost/calendario/elimina_usuari.php?eve_mf=6"

and on elimina_usuari.php page,

$id = $_GET['eve_mf'];

and second part, why can I do that and I don't need to call it id as it is called in my db table?

Again, it's not the issue what you call variables in you local environment, all you to do(and should take care of) is to put right parameters in your sql query.

$query = "DELETE FROM subjects WHERE id = {$usuari_id} LIMIT 1";

Here id is the name of your column name in your database. You can't change it here if you even want it to.

however, $usuari_id is your local variable, and you can change it whatever you want.

Hope I've explained what you're looking for :)

Upvotes: 3

Shaymol Bapary
Shaymol Bapary

Reputation: 458

You just need to Get the exact variable name or parameter name which you have sent with your url

I mean see your url contains subject=6 that means you have to get subject instead of id;

please replace this code

$usuari_id = $_GET['id'];

to

$usuari_id = $_GET['subject'];

Upvotes: 1

Osama Aftab
Osama Aftab

Reputation: 1181

<?php 

global $conn;
$usuari_id = $_GET['subject'];
$query = "DELETE FROM subjects WHERE id = {$usuari_id} LIMIT 1";
$result = mysqli_query($conn, $query);
if ($result && mysqli_affected_rows($conn) == 1) {
 redirect_to("calendari.php");      
} else {
echo "no eliminat";
}
?>

Upvotes: 1

Mihai Matei
Mihai Matei

Reputation: 24276

You can get the id with $_GET['subject'].

Please be aware about SQL injection as you are wrongly get the id of the user to be deleted:

$usuari_id = mysqli_real_escape_string($conn, $_GET['subject']);

Upvotes: 1

Syed mohamed aladeen
Syed mohamed aladeen

Reputation: 6755

try this in elimina_usurai.php

<?php 

global $conn;

$usuari_id = $_GET['subject'];
$query = "DELETE FROM subjects WHERE id = {$usuari_id} LIMIT 1";

$result = mysqli_query($conn, $query);

if ($result && mysqli_affected_rows($conn) == 1) {
     redirect_to("calendari.php");      
} else {
echo "no eliminat";
}
?>

Upvotes: 0

Related Questions