Jag har ett problem med min uppgift i skolan. Ett tips för att öka sannolikheten att få ett svar är att inkludera lite mer info än "det funkar inte". Det är t.ex. intressant att veta huruvida sidan visas ok men inget händer i databasen vid edit/delete, eller ifall sidan visar ett felmeddelande (och i så fall vilket).Skapa en form med tabell för att lägga till, redigera och ta bort från SQL
Jag ska skapa ett formulär för att lagra filmer på min databas. Jag har lyckats att skapa formuläret och att få det att spara info om filmer. Men jag lyckas inte få ordning på funktionen edit och delete. Har ni tips på hur jag kan göra?
Min kod:
index.php:
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<h1>Min filmsamling</h1>
<?php
// Connects to mySQL
$db_hostname = "localhost";
$db_database = "film";
$db_username = "film";
$db_password = "film";
$tbl_name="film"; // Table name
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());
// Selecting the database
mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());
$query = "SELECT * FROM film";
// Accesing the results
$result = mysql_query($query);
if (!$result) die("Database access failed: " . mysql_error());
$row = mysql_num_rows($result);
// Building table
echo "<table border='1'><tr><th>Title</th><th>Director</th><th>Year</th><th>Category</th><th>Update</th><th>Delete</th></tr>";
// Tar emot POST-inmatning från index.php och lagrar det på databasen
//$id = $_GET['id'];
// get value of id that sent from address bar
$id=isset($_GET['id']);
$id = $_POST['id'];
// Building array with data in <td>
for ($j = 0 ; $j < $row ; ++$j)
{
$row = mysql_fetch_row($result);
echo "<tr>";
for ($k = 1 ; $k < 5 ; ++$k) echo "<td>$row[$k]</td>";
echo "<td>edit</td><td>delete</td>";
echo "</tr>";
}
echo "</table>";
?>
<!-- adds film record to the database -->
<!-- start -->
<form action="insert.php" method="post">
<p> Choose a movie category </p>
<input type="radio" name="category" Value="Triller"> Thriller
<br />
<input type="radio" name="category" value="Romantik"> Romantic
<br />
<input type="radio" name="category" value="Svenskt"> Swedish
<br />
<input type="radio" name="category" value="Animerat"> Animated
<br />
<input type="radio" name="category" value="Komedi"> Comedy
<br /><br />
Title: <br/><input type="text" name="title">
<br />
Director: <br/><input type="text" name="director">
<br />
Year: <br/><input type="text" name="year">
<br /><br />
<input type="submit" value="Store">
</form>
<!-- end -->
</body>
</html>
insert.php:
<?php
// Connects to mySQL
$con=mysqli_connect("localhost","film","film", "film");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// escape variables for security - Atackvecktorer
$title = mysqli_real_escape_string($con, $_POST['title']);
$director = mysqli_real_escape_string($con, $_POST['director']);
$year = mysqli_real_escape_string($con, $_POST['year']);
$category = mysqli_real_escape_string($con, $_POST['category']);
// Tar emot POST-inmatning från index.php och lagrar det på databasen
$title = $_POST['title'];
$director = $_POST['director'];
$year = $_POST['year'];
$category = $_POST['category'];
$sql="INSERT INTO film (title, director, year, category)
VALUES ('$title','$director','$year','$category')";
// if failed to add record
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
// if record has been added
echo "1 record added";
mysqli_close($con);
?>
Tillbaka
update.php:
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<?php
// Connect to server and select database.
mysql_connect("localhost", "film", "film")or die("cannot connect");
mysql_select_db("film") or die("cannot select DB");
// get value of id that sent from address bar
$id=isset($_GET['id']) && $_GET['id'] == $row['id'];
// Retrieve data from database
$sql="SELECT * FROM film WHERE id = '$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
?>
<body>
<!-- update film recordin the database -->
<!-- start -->
<table width="1200" border="0" cellspacing="1" cellpadding="0">
<tr>
<form name="form1" method="post" action="update-form.php">
<td>
<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr>
<td> </td>
<td colspan="6"><strong>Update films Details</strong> </td>
</tr>
<tr>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
</tr>
<tr>
<td align="center"> </td>
<td align="center"><strong>Title</strong></td>
<td align="center"><strong>Director</strong></td>
<td align="center"><strong>Year</strong></td>
<td align="center"><strong>Category</strong></td>
</tr>
<tr>
<td> </td>
<td align="center">
<input type="hidden" name="id" value="<?php echo $rows['id']; ?>">
<input name="title" type="text" id="title" value="<?php echo $rows['title']; ?>" size= "15" />
</td>
<td align="center">
<input name="director" type="text" id="director" value="<?php echo $rows['director']; ?>" size="15" />
</td>
<td align="center">
<input name="year" type="text" id="year" value="<?php echo $rows['year']; ?>" size="15" />
</td>
<td align="center">
<input name="category" type="text" id="category" value="<?php echo $rows['category']; ?>" size="15" />
</td>
<tr>
</table>
<input name="id" type="hidden" id="id" value="<?php echo $rows['id']; ?>" />
<input type="submit" name="Submit" value="Submit" /></td>
<td align="center"> </td>
</td>
</form>
</tr>
</table>
<!-- end -->
</body>
</html>
update-form.php:
<?php
// Connect to server and select database.
mysql_connect("localhost", "film", "film")or die("cannot connect");
mysql_select_db("film")or die("cannot select DB");
// get value of id that sent from address bar
$id=isset($_GET['id']) && $_GET['id'] == $row['id'];
// update data in mysql database
$sql="UPDATE film SET title='".$_POST['title']."', director='".$_POST['director']."', year='".$_POST['year']."', category='".$_POST['category']."' WHERE id='".intval($_REQUEST['id'])."''" or die ("this stuffed up");
$result=mysql_query($sql) or die ("this stuffedup");
// if successfully updated.
if($result){
echo "Successful";
echo "<BR>";
echo "View result";
}
// if error
else {
echo "ERROR";
}
?>
delete.php:
<?php
// Needs to server and select database.
$db_hostname="localhost"; // Host name
$db_database = "film";
$db_username="film"; // Mysql username
$db_password="film"; // Mysql password
$db_name="film"; // Database name
// connect database
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to MySQL: " .mysql_error());
// Selecting the database
mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());
// get value of id that sent from address bar
$id=isset($_GET['id']) && $_GET['id'] == $row['id'];
// To delete row from the database
// Delete row id = $id,
$id = $_POST['id'];
$query = "DELETE from film WHERE id='" . $id . "'";
mysql_query($query, $db_server);
echo "Back to main page";
?>
update.php och delete.php funkar ej. Dessutom har jag hela tiden underfined id som kommer fram. Uppskattar om någon kan hjälpa mig. Sv: Skapa en form med tabell för att lägga till, redigera och ta bort från SQL
Spontant skulle jag chansa på att du bör se över de här raderna
// vad har $row för värde här? Vad har $id för värde efter denna rad körts? Vad vill du att $id ska ha för värde?
$id=isset($_GET['id']) && $_GET['id'] == $row['id'];
// Vad har $id för värde efter detta? (hint: använder du POST eller GET för att komma åt edit/delete-sidorna?)
$id = $_POST['id'];