sql >> Databasteknik >  >> RDS >> Mysql

PHP MySQL Delete-funktion i while-loop

Du måste meddela PHP-skriptet att du vill ta bort posten. En lösning skulle vara att använda en dold ingång som ställs in när du anropar removeRow, t.ex.

function removeRow(el) {
    // get the table row
    var row = $(el).parents('tr:first');

    // disable the input fields for the row
    $('input', row).attr('disabled', 'disabled');

    // rename update_id to delete_id and re-enable the field
    $('input[name="update_id[]"]', row).attr('name', 'delete_id[]').removeAttr('disabled');

    // hide the row
    row.hide();
}

Denna metod tar inte längre bort tabellraden från DOM. Det kommer dock att inaktivera inmatningsfälten i raden och lägga till en dold inmatning med namnet beskrivelse_delete .

När formuläret har skickats in har din PHP nu ett sätt att veta vilka poster som måste raderas.

foreach ($_POST['delete_id'] as $deleteId) {
    $deleteId = (int)$deleteId;
    $db->query("DELETE FROM faktura_materialer WHERE id = $deleteId");
}

Uppdatering:Jag har skapat en phpfiddle som har några förbättringar som du kanske vill lära dig mer om. Dessa punkter inkluderar:

  • Stöder radering där JavaScript inte är aktiverat
  • Använda förberedda uttalanden (föredraget till add_slashes )
  • Escape output genom att använda htmlspecialchars
  • Explicit definiera indata-ID för att undvika gissningar baserat på en inkrementell räknare



  1. Hur man installerar MariaDB 10 på Debian och Ubuntu

  2. Cachingstrategi, när blir cachning meningslös?

  3. fel:'Kan inte ansluta till lokal MySQL-server via socket '/var/run/mysqld/mysqld.sock' (2)' -- Saknar /var/run/mysqld/mysqld.sock

  4. När du kör en lagrad procedur, vad är fördelen med att använda CommandType.StoredProcedure jämfört med att använda CommandType.Text?