|
<script type="text/javascript" src="ckeditor/ckeditor.js"></script> |
<?php |
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 = ""; |
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æ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"); |
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 />"; } |
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.
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; } |
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; } |
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; } |
} //slut isset POST |
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>"; } |
SELECT af data til drop-down menu, når sådan skal anvendes i "form".
// 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']; } |
// 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']; } ?> |
Start-tag for "form"-en. Som hovedregel er det nok at indsætte parameteren "method='post' ".
<form method='post'> <table> |
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 |
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>'; ?> |
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> |
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> |
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> |
</table> </form> |