Handling af data i udskrift
Indrømmet - jeg har ikke helt overblik over det der med prepared statements (og sikkert heller ikke ' og ")Nedenstående kode virker - næsten (ingen fejlkoder). Den sletter ikke den record jeg trykker på, men den sidst udskrevne. Hvordan får jeg recordens ID-nummer med over via knappen?
<?php
// Snippet nr 15, øvelse i datahandling af een simpel tabel (vis, ret, slet, indsæt)
// Alt skal laves i denne snip, og der må kun bruges html- og php-koder
// php skal være prepared statement
Function forbind_til_database() {
$servername = "host";
$username = "hosthost";
$password = "snøft";
$dbname = "aargh";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {die("Connection failed: " . $conn->connect_error);} else {echo "<br> Forbindelse er ok";}
return $conn;
}
function vis_tillidshverv($conn) {
$sql_select = "SELECT * FROM fvf2_cer_tillidshverv ORDER BY fvf2_cer_tillidshverv.sortering";
$result = $conn->query($sql_select);
if ($result->num_rows > 0) {
// Udskriv overskrifter
// Denne lidt mærkelige konstruktion, er et quick-fix for lidt pænere format - tilrettes når alt andet virker
echo "<table>" .
"<tr>" .
"<td>" . ID . "</td>" . "<td>" . Sort . "</td>" . "<td>" . Hverv . "</td>" . "<td>" . Beskrivelse . "</td>" . "<td>" . Hidden . "</td>" . "<td>" . Edit . "</td>" . "<td>" . Slet . "</td>" .
"</tr>" .
"<tr>" .
"<td>" . "" . "</td>" . "<td>" . "" . "</td>" . "<td>" . "" . "</td>" . "<td>" . "" . "</td>" . "<td>" . "" . "</td>" . "<td>" . "" . "</td>" . "<td>" . "" . "</td>" .
"</tr>";
// Udskriv data
// echo "<FORM method='GET' action='$PHP_SELF'>";
echo "<FORM method='POST' action='$PHP_SELF'>";
while($row = $result->fetch_array()) {
echo "<tr>" .
"<td width='5%'>" . "<input type=text name=ID value=" . $row[ID] . " style='width: 50px;'>" . "</td> " .
"<td width='10%'>" . "<input type=text name=sortering value=$row[sortering] style='width: 50px;'>" . "</td>" .
"<td width='20%'>" . "<input type=text name=sortering value=$row[tillidshverv] style='width: 150px;'>" . "</td>" .
"<td width='45%'>" . "<textarea name=beskrivelse style='width: 250px; height: 85px;'>$row[beskrivelse]</textarea>" . "</td>" .
"<td width='10%'>" . "<input type='submit' name='knap' value='Edit'/>" . "</td>" .
"<td width='10%'>" . "<input type='submit' name='knap' value='Slet'/>" . "</td>" .
"</tr>";
}
echo "</table>";
echo "</FORM>";
} else {
echo "0 results";
}
}
// Foreløbig kodning af funktion for redigering af data
function rediger_record($ID){
echo "<br> Funktionen REDIGER_RECORD er kaldt med ID = " . $ID;
}
function slet_record($sql, $ID) {
$slet = "DELETE FROM fvf2_cer_tillidshverv WHERE fvf2_cer_tillidshverv.ID = '$ID' LIMIT 1";
$run = @mysqli_query($sql, $slet);
if (mysqli_affected_rows($sql) == 1) {
// Hvis det kører
echo "<br> Record er slettet";
} else {
// Hvis det ikke kører
echo "<br> FEJL: Linien (tabel-recorden) kunne ikke slettes pga. system-fejl"; // Public message.
echo "<br> Debug: " . mysqli_error($sql) . "<br />Query: " . $slet; // Debugging message.
}
}
// ----------------------------------------------------------------------------------
if(isset($_POST[knap])) {
if($_POST[knap] == 'Slet') {
echo "<br> Forsøger at slette " . $_GET[ID];
// slet_record
$mysqli = forbind_til_database();
echo "<br> Kalder funktionen slet-record med ID = " . $_POST[ID];
slet_record($mysqli, $_POST[ID]);
}
if($_POST[knap] == 'Edit') {
echo "<br> Forsøger at rette ID " . $_POST[ID];
rediger_record($_POST[ID]);
}
}
$mysqli = forbind_til_database();
vis_tillidshverv($mysqli);
$mysqli->close();
?>