I am making a very simple movie database, with the possibility to update the movies that are in it. All you have to do is fill in the fields underneath the table. However, when you fill in the id and only one other field, like film_id, the description etc. are erased from the table. How do i make sure that it's possible to change only one thing?
The code for the page:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<?php
session_start(); //Start sessie.
function is_logged() {
if (isset($_SESSION['username'])) return true;
return false; //De gebruikersnaam wordt gecontroleerd
}
if(!is_logged()){
header("Location: sign-in.php"); //Als de gebruiker naar overzichtlogin.php
gaat, zonder dat hij of zij is ingelogd, worden ze doorgestuurd naar de
login pagina.
}
require_once('db_const.php'); //De gegevens voor het maken van de verbinding
met de database staan in dit bestand gedeclareerd.
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if (!$mysqli){
die("Connection failed: ".mysqli_connect_error()); //Als de verbinding niet
lukt zal deze niet werken.
}
?>
<?php $current = 'secured'; ?> <!-- Om aan te geven dat men zich op de
beveiligde overzichtspagina bevindt, wordt gebruik gemaakt van deze
variabele. Current krijgt nu de waarde 'secured', waardoor de button waar
'secured' staat een kleur krijgt. -->
<div class="header">
<?php
if(isset($_SESSION['username'])){
require_once("headersecured.php"); //Indien de gebruiker ingelogd is, wordt
'headersecured.php' gebruikt als header.
}else{
require_once("header.php"); //Indien de gebruiker niet is ingelogd, wordt
header.php gebruikt als header.
}
?>
</div>
<h1>Filmoverzicht</h1>
<?php
$sql = "SELECT film_id, title, description, release_year, rating FROM
films"; //De gewenste gegevens uit de database worden geselecteerd.
$result = $mysqli->query($sql);
if ($result->num_rows > 0) {
echo "<table style='border: solid 1px grey; margin-left: auto; margin-right:
auto; margin-top:50px;'><tr><th>ID</th> <th>Titel</th> <th>Beschrijving</th>
<th>Jaar</th> <th>Rating</th> <th> </th></tr>";
while($row = $result->fetch_assoc()) {
echo "<tr><td>" .$row["film_id"] . "<td>" .$row["title"] . "<td>" .
$row["description"] . "<td>" . $row["release_year"]. "<td> " .
$row["rating"]. "<td> " . '<td><a class="alert" href="deletemovie.php?
id='.$row['film_id'].'" >
</i>'?> VERWIJDER <?php '</a></td>';
} //De beschikbare gegevens worden weergegeven.
echo "</table>";
} else {
echo "0 results";
}
?>
<br><br>
<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>"> <!--De
bewerkfunctie wordt op dezelfde pagina uitgevoerd.-->
<h2>Films bewerken</h2>
<input name="film_id" required="required" placeholder="ID">
<input name="title" placeholder="Titel film">
<textarea id="textarea" name="description" cols="20" rows="5"
placeholder="Beschrijving"></textarea>
<input name="release_year" placeholder="Uitkomstjaar">
<input name="rating" placeholder="Beoordeling">
<input id="submit" name="submit" type="submit" value="Wijzigen"> <!-- In
deze
invulvelden kunnen nieuwe gegevens worden ingevoerd, zodat de films worden
aangepast. -->
<?php
if (isset($_POST['submit'])) {
$film = $_POST["film_id"]; //Slaat de gegevens voor het ingevoerde ID op in
een
variabele.
$title = $_POST["title"]; //Slaat de gegevens voor de ingevoerde titel op in
een
variabele.
$description = $_POST["description"]; //Slaat de gegevens voor de ingevoerde
beschrijving op in een variabele.
$year = $_POST["release_year"]; //Slaat de gegevens voor het ingevoerde jaar
op
in een variabele.
$rating = $_POST["rating"]; //Slaat de gegevens voor de ingevoerde rating op
in een variabele.
$sql = "UPDATE films SET film_id = '$film', title = '$title', description =
'$description', release_year = '$year', rating = '$rating' WHERE film_id =
$film"; //De tabel 'films' in MySQL wordt geselecteerd, de gegevens die in
de
variabelen zijn opgeslagen worden gewijzigd in de database.
if (mysqli_query($mysqli, $sql)) { // Voert de actie uit
echo "<br>"; // Wit ruimte
echo "<br>"; // Wit ruimte
echo "<br>"; // Wit ruimte
echo "Succesvol aangepast!"; // Geeft aan dat het aangepast is
echo "<br>"; // Wit ruimte
echo "<a href='overzichtspagina.php'>Terug naar de vorige pagina.</a>"; //
een link waar de gebruiker terug kan gaan naar de vorige pagina
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($mysqli); // geef fout
melding aan de gebruiker als het mis gaat
}
}
?>
</form>
<?php
$mysqli->close(); //Verbinding wordt verbroken.
?>
<div class="footer">
<?php include 'footer.php';?> <!-- De footer wordt opgehaald. -->
</div>
</body>
</html>