logo   PHP - DELETE template.




Nedenfor vises (i kasserne) koden for et anvendt program. Teksterne er sat ind for at lave naturlige opdelinger og forklaringer undervejs.


PHP start

<?php


Variabler

Der vil oftest kun være behov for at definere en enkelt eler ingen variabler.

$fejlbeskeder = "";


$_GET start

Et UPDATE program skal vide, hvilken record i databasen der skal vedligeholdes. Identen for den pågældende record - og til tider en eller flere yderlige oplysninger - tilføres normalt som URL-parametre fra det program, hvorfra beslutningen om sletning foretages (ofte et SELECT-program).
URL-parametre læses med "$_GET".


Til $_GET knyttes en if-sætning, der omringer hele DELETE-programmet og af sluttes nederst med en "else".

if (isset ($_GET['rol_id'])) // start GET
   {
    $rol_id = $_GET['rol_id'];


Validering - kun når validering

Før sletning af en record i databasen er det ofte nødvendigt at afklare, om den stadig er i brug i en anden tabel (f.eks. som leverandør af tekst til stamdata). Af hensyn til funktionaliteten i et sådant program, er det væsentligt at en ident ikke slettes "i utide".

    $query = "SELECT * FROM rolle_rettighed where fk_rol_id = $rol_id";
    $result = mysqli_query($db_link, $query)or die (mysqli_error ($db_link));
    $antal = mysqli_num_rows ($result);
    if($antal > 0){
       $fejlbeskeder .= "Rollen er stadig knyttet til en eller flere rolle/rettigheder.<br />";
       }


Opdater database

Opdatering af databasen når ingen fejl.
Benyt den ønskede af de 2 kodemåder.
Der skiftes til næste program med "header".

Ved forekomst af fejl foretages ingen opdatering af databasen, men der skiftes til visning af fejlliste og "form", der nu viser de sidst indtastede data.


Det er vigtigt, at der ikke er fejl i SQL-sætningen. Er der det, risikerer man ikke, at der ikke slettes nogen record, men at alle records i tabellen slettes.




MySQLi

    if ($fejlbeskeder == "")
       {
       $query = "DELETE FROM rolle WHERE rol_id = $rol_id ";
       $result = mysqli_query ($db_link, $query) or die (mysqli_error($db_link) );
       header ("Location: roller_select.php");
       exit;
       }




Prepared

    if ($fejlbeskeder == "")
      {
      $sql = "DELETE FROM rolle WHERE rol_id = ?";
       $query = $db_link->prepare($sql);
       $query->bind_param('i', $rol_id);
       $query->execute();
       $query->close();
       }




Vis fejl - kun når validering

Viser fejl, når sådanne er registreret under validering.

    if (isset ($fejlbeskeder) && $fejlbeskeder != "")
       {
       $fejlbeskeder .= "aktuelt programnavn";
       echo "<fieldset class='red'>";
       echo "<legend>Fejltekster</legend>";
       echo $fejlbeskeder;
       echo "</fieldset>";
       }


$_GET slut.

Afslutning af $_GET-funktionaliteten.

   }
   else // GET
   {
    echo "<p>Der problemer med URL-parameter i adresselinien</p>";
    echo "<p><a href='index.php'>Gå tilbage til oversigtssiden</a></p>";
   } // slut isset GET


PHP slut.

?>






















x
x