logo   PHP - INSERT template.


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


Evt. link til CKeditor

Link til det installerede CKEditor-program når CKE skal anvendes i aktuelt program.

<script type="text/javascript" src="ckeditor/ckeditor.js"></script>


PHP start

<?php


Variabler

Definition af variabler for alle input-felter, der anvendes i "form"-en, samt visse andre generelle variabler. Glemmes definitionen af en variabel vil der forekomme en php-fejl. "Lokale" variabler i programforløbet kan defineres undervejs i koden efterhånden som der bliver brug for dem.

$fejlbeskeder  = "";
$fk_prodgr_id = "";
$fk_prod_id    = "";
$vare_navn    = "";
$vare_pris      = "";
$vare_tilbpris = "";
$vare_tilbakt  = "";
$vare_tilbfra  = "";
$vare_tilbtil   = "";
$vare_besk    = "";


$_POST start.

Undersøger om $_POST-array med det anførte navn findes.
Ved 'nej' (hvilket vil være tilfældet ved programmets start) springes til "Vis fejl" - der vil være tom i startsituationen.
Ved 'ja' fortsættes - når ingen fejl - ned igennem programmet til "exit". Ved fejl skiftes til "Vis fejl".

if (isset ($_POST['submit']))
   {


Indlæs fra form

Indlæser de data, der er sendt fra "form"-en. Der kan samtidig foretages visse modifikationer af dataene. Andre end de viste kan forekomme.

    $fk_prodgr_id = htmlentities (trim ($_POST['fk_prodgr_id']),ENT_QUOTES, "utf-8");
    $fk_prod_id    = htmlentities (trim ($_POST['fk_prod_id']),ENT_QUOTES, "utf-8");
    $vare_navn    = htmlentities (trim ($_POST['vare_navn']),ENT_QUOTES, "utf-8");
    $vare_pris      = htmlentities (trim ($_POST['vare_pris']),ENT_QUOTES, "utf-8");
    $vare_tilbpris  = htmlentities (trim ($_POST['vare_tilbpris']),ENT_QUOTES, "utf-8");
    if(isset($_POST['vare_tilbakt']))
       {$vare_tilbakt = 1;}
    $vare_tilbpris = htmlentities (trim ($_POST['vare_tilbpris']),ENT_QUOTES, "utf-8");
    $vare_tilbfra  = htmlentities (trim ($_POST['vare_tilbfra']),ENT_QUOTES, "utf-8");
    $vare_tilbtil   = htmlentities (trim ($_POST['vare_tilbtil']),ENT_QUOTES, "utf-8");
    $vare_besk    = htmlentities (trim ($_POST['vare_besk']),ENT_QUOTES, "utf-8");


Valideringer

Der foretages alle de logiske valideringer, det er muligt at foretage. Udgangspunktet er, at alle udefrakommende data så vidt praktisk muligt skal valideres for at sikre databasens integritet. Validering bør foretages selvom html har foretaget en måske korrekt "pre-validering" ved indtastning.

    if ($fk_prodgr_id == 0)
       {
       $fejlbeskeder .= "Navn på Prod. gruppe mangler<br />";
       }
   
    if ($fk_prod_id == 0)
       {
       $fejlbeskeder .= "Navn på mærke mangler<br />";
       }

    if ($vare_navn == "")
       {
       $fejlbeskeder .= "Navn på varen mangler<br />";
       }

    if ($vare_pris == "")
       {
       $fejlbeskeder .= "Varens pris mangler<br />";
       }
       else
       {
       if (!is_numeric($vare_pris)) {
          $fejlbeskeder .= "Prisen er ikke numerisk<br />";
          }
       }
    if ($vare_tilbpris != "")
       {
       if (!is_numeric($vare_tilbpris)) {
          $fejlbeskeder .= "Tilbudsprisen er ikke numerisk<br />";
          }
       }
    if ($vare_tilbakt == 1)
       {
       if (!is_numeric($vare_tilbpris)) {
          $fejlbeskeder .= "Tilbudsprisen er ikke numerisk<br />";
          }
          if ($vare_tilbfra == "") {
          $fejlbeskeder .= "Fradato mangler<br />";
          }
          if ($vare_tilbtil == "") {
          $fejlbeskeder .= "Fradato mangler<br />";
          }
       } // tilbakt slut

    if ($vare_besk == "")
       {
       $fejlbeskeder .= "Beskrivelse mangler<br />";
       }


Opdater database

Opdatering af databasen når ingen fejl.
Benyt den ønskede af de 3 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.




Procedure

   if ($fejlbeskeder == "")
       {
      $query = "
      INSERT INTO varestam
      ( fk_prod_id, vare_navn, vare_pris, vare_tilbpris, vare_tilbakt, vare_tilbfra, vare_tilbtil, vare_besk, vare_dato) VALUES
      ( '$fk_prod_id', '$vare_navn', '$vare_pris', '$vare_tilbpris', '$vare_tilbakt', '$vare_tilbfra', '$vare_tilbtil', '$vare_besk', NOW())
      ";
      $result = mysqli_query ($db_link, $query) or die (mysqli_error ($db_link));
      header ("Location: varestam_select.php");
      exit;
      }




"Mysqli_real_escape_string"

    if ($fejlbeskeder == "")
       {
       $fk_kat_id_a     = mysqli_real_escape_string($db_link, $fk_kat_id);
       $fk_prod_id_a    = mysqli_real_escape_string($db_link, $fk_prod_id);
       $vare_navn_a    = mysqli_real_escape_string($db_link, $vare_navn);
       $vare_pris_a      = mysqli_real_escape_string($db_link, $vare_pris);
       $vare_tilbpris_a = mysqli_real_escape_string($db_link, $vare_tilbpris);
       $vare_tilbakt_a = mysqli_real_escape_string($db_link, $vare_tilbakt);
       $vare_tilbfra_a  = mysqli_real_escape_string($db_link, $vare_tilbfra);
       $vare_tilbtil_a   = mysqli_real_escape_string($db_link, $vare_tilbtil);
       $vare_besk_a   = mysqli_real_escape_string($db_link, $vare_besk);

       $query = "
       INSERT INTO varestam
          ( fk_prod_id, vare_navn, vare_pris, vare_tilbpris, vare_tilbakt, vare_tilbfra, vare_tilbtil, vare_besk, vare_dato) VALUES
          ( '$fk_prod_id_a', '$vare_navn_a', '$vare_pris_a', '$vare_tilbpris_a', '$vare_tilbakt_a', '$vare_tilbfra_a', '$vare_tilbtil_a', '$vare_besk_a', NOW())
          ";
       $result = mysqli_query ($db_link, $query) or die (mysqli_error ($db_link));
       header ("Location: varestam_select.php");
       exit;
       }




Prepared

if ($fejlbeskeder == "")
    {
    $sql = "INSERT INTO varestam (fk_prod_id, vare_navn, vare_pris, vare_tilbpris, vare_tilbakt, vare_tilbfra, vare_tilbtil, vare_besk, vare_dato) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
    $query = $db_link->prepare($sql);
    $query->bind_param('isiiiiisi', $fk_prod_id, $vare_navn, $vare_pris, $vare_tilbpris, $vare_tilbakt, $vare_tilbfra, $vare_tilbtil, $vare_besk, NOW());
       $fk_prod_id    = $fk_prod_id;
       $vare_navn    = $vare_navn;
       $vare_pris      = $vare_pris;
       $vare_tilbpris = $vare_tilbpris;
       $vare_tilbakt = $vare_tilbakt;
       $vare_tilbfra  = $vare_tilbfra;
       $vare_tilbtil   = $vare_tilbtil;
       $vare_besk   = $vare_besk;
    $query->execute();
    $query->close();

    $insert_id = mysqli_insert_id($db_link);
    header ("Location: dokfil_update.php?dok_id=$insert_id");
    exit;
    }




$_POST slut.

   } //slut isset POST


Vis fejl

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

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


Dataudtræk til drop-down menuer

SELECT af data til drop-down menu, når sådan skal anvendes i "form".


Dataudtræk til drop-down menu 1

// DROP DOWN produktgruppe
// Data til drop-down menu
$sek_query = "SELECT * FROM prodgrupper ORDER BY prodgr_navn asc";
$sek_result = mysqli_query($db_link, $sek_query) or die(mysqli_error($db_link));
$sek_antal = mysqli_num_rows ($sek_result);

// Data til tekst i "input"-taggen
if ($fejlbeskeder != "")
   {
   $sek2_query = "SELECT * FROM prodgrupper WHERE prodgr_id = $fk_prodgr_id";
   $sek2_result = mysqli_query($db_link, $sek2_query) or die(mysqli_error($db_link));
   $sek2_row = mysqli_fetch_assoc ($sek2_result);
   $prodgr_navn = $sek2_row['prodgr_navn'];
   }


Dataudtræk til drop-down meny 2

// DROP DOWN produkter
// Data til drop-down menu
$sek_query_2 = "SELECT * FROM produkter ORDER BY prod_navn asc";
$sek_result_2 = mysqli_query($db_link, $sek_query_2) or die(mysqli_error($db_link));
$sek_antal_2 = mysqli_num_rows ($sek_result_2);

// Data til tekst i "input"-taggen
if ($fejlbeskeder != "" and $fk_prod_id != 0)
   {
   $sek2_query_2 = "SELECT * FROM produkter WHERE prod_id = $fk_prod_id";
   $sek2_result_2 = mysqli_query($db_link, $sek2_query_2) or die(mysqli_error($db_link));
   $sek2_row_2 = mysqli_fetch_assoc ($sek2_result_2);
   $prod_navn = $sek2_row_2['prod_navn'];
   }
?>


Form start

Start-tag for "form"-en. Som hovedregel er det nok at indsætte parameteren "method='post' ".

<form method='post'>
<table>


Drop-down menu 1

Kode til indsættelse og afvikling af drop-down menu i "form"-en.

<?php
// drop-down kategori
//Input linie
if ($fejlbeskeder != "")
    {
    echo '<tr><td>Prod. gruppe</td><td>*</td><td>';
    echo '<select name="fk_prodgr_id">';
    if ($fk_prodgr_id == "")
       {
       $fk_prodgr_id = $sek2_row['fk_prodgr_id'];
       }
    echo '<option value="'. $fk_prodgr_id . ' " > '. $prodgr_navn . ' </option> ' ;
    }
    else
    {
    echo '<tr><td>Prod. gruppe</td><td>*</td><td>';
    echo '<select name="fk_prodgr_id"><option value="0">Vælg fra menuen</option>';
    }
//Drop-down menu
while ($sek_row = mysqli_fetch_assoc ($sek_result))
    {
    echo '<option value=" '. $sek_row ['prodgr_id'] .' "> '. $sek_row['prodgr_navn'] .' </option>';
    }
    echo '</select></td></tr>'; //select slut


Drop-down menu 2

Kode til indsættelse og afvikling af drop-down menu i "form"-en.

// drop-down prod
//Input linie
if ($fejlbeskeder != "")
    {
    echo '<tr><td>Mærke</td><td>*</td><td>';
    echo '<select name="fk_prod_id">';
    if ($fk_prod_id == "")
       {
       $fk_prod_id = $sek2_row_2['fk_prod_id'];
       }
    echo '<option value="'. $fk_prod_id . ' " > '. $prod_navn . ' </option> ' ;
    }
    else
    {
    echo '<tr><td>Mærke</td><td>*</td><td>';
    echo '<select name="fk_prod_id"><option value="0">Vælg fra menuen</option>';
    }

//Drop-down menu
while ($sek_row_2 = mysqli_fetch_assoc ($sek_result_2))
    {
    echo '<option value=" '. $sek_row_2 ['prod_id'] .' "> '. $sek_row_2['prod_navn'] .' </option>';
    }
echo '</select></td></tr>';
?>


Alm. input felter

Kode til de almindelige input-felter, der skal indgå i formen. (Her incl. en checkbox).

<tr><td>Varenavn</td><td>*</td><td><input type='text' name='vare_navn' value="<?php echo $vare_navn; ?>" /></td></tr>
<tr><td>Pris</td><td>*</td><td><input type='numeric' name='vare_pris' value="<?php echo $vare_pris; ?>" /></td></tr>
<tr><td>Tilbudspris</td><td></td><td><input type='numeric' name='vare_tilbpris' value="<?php echo $vare_tilbpris; ?>" /></td></tr>
<tr><td>Tilbud aktivt</td><td></td><td><input type='checkbox' name='vare_tilbakt' value="<?php echo $vare_tilbakt; ?>" /></td></tr>
<tr><td>Tilbud fra dato</td><td></td><td><input type='date' name='vare_tilbfra' value="<?php echo $vare_tilbfra; ?>" /></td></tr>
<tr><td>Tilbud til dato</td><td></td><td><input type='date' name='vare_tilbtil' value="<?php echo $vare_tilbtil; ?>" /></td></tr>


Textarea med CKeditor

Kode til indsættelse og brug af CKEditor.

<tr><td>Beskrivelse</td><td>*</td><td><textarea name="vare_besk" id="cke" cols="30" rows="5"><?php echo $vare_besk ?></textarea></td></tr>
<script type="text/javascript">
CKEDITOR.replace('cke');
</script>


Submit

Knap til at sende "form"-en til $_POST start. Det er at foretrække altid at bruge "name='submit' " fremfor situationstilpassede navne. Knappen kan placeres hvorsomhelst indenfor "form"-ens område, men det er sjældent at se andre placeringer end til sidst.

<tr><td><input type='submit' name='submit' value='Opret varestamdata' /></td><td></td><td></td></tr>


Form slut

</table>
</form>




















x
x