With this issue I am having trouble get the script to update or add new records. It produces no error messages:
My DB:
Column Type Null Default
id int(11) No Autoincrement
page varchar(255) Yes NULL
title varchar(255) Yes NULL
description varchar(255) Yes NULL
keywords varchar(255) Yes NULL
The code:
view.php
PHP Code:
<?php // connect to the database include("connect.php"); // A function that is easily reusable function renderForm($page = '', $title = '', $description = '', $keywords = '', $error = '', $id = '') { ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title> <?php if ($id != '') { echo "Edit Record"; } else { echo "New Record"; } ?> </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body> <h1><?php if ($id != '') { echo "Edit Record"; } else { echo "New Record"; } ?></h1> <?php if ($error != '') { echo "<div style='padding:4px; border:1px solid red; color:red'>" . $error . "</div>"; } ?> <form action="" method="post"> <div> <?php if ($id != '') { ?> <input type="hidden" name="id" value="<?php echo $id; ?>" /> <p>ID: <?php echo $id; ?></p> <?php } ?> <strong>Page: *</strong> <input type="text" name="page" value="<?php echo $page; ?>"/><br/> <strong>Title: *</strong> <input type="text" name="title" value="<?php echo $title; ?>"/><br/> <strong>Description: *</strong> <input type="text" name="description" value="<?php echo $description; ?>"/><br/> <strong>Keywords: *</strong> <input type="text" name="keywords" value="<?php echo $keywords; ?>"/> <p>* required</p> <input type="submit" name="submit" value="Submit" /> </div> </form> </body> </html> <?php } /* EDIT RECORD */ // if the 'id' variable is set in the URL, if (isset($_GET['id'])) { // if the form's submit button is clicked, we need to process the form if (isset($_POST['submit'])) { // make sure the 'id' in the URL is valid if (is_numeric($_POST['id'])) { // get variables from the URL/form $id = $_POST['id']; $page = htmlentities($_POST['page'], ENT_QUOTES); $title = htmlentities($_POST['title'], ENT_QUOTES); $description = htmlentities($_POST['description'], ENT_QUOTES); $keywords = htmlentities($_POST['keywords'], ENT_QUOTES); // check that page and title are both not empty if ($page == '' || $title == '') { // if they are empty, show an error $error = 'ERROR: Please fill in all required fields!'; renderForm($page, $title, $description, $keywords, $error, $id); } else { // if everything is fine, update if ($stmt = $mysqli->prepare("UPDATE URL SET page = ?, title = ?, description = ?, keywords = ? WHERE id=?")) { $stmt->bind_param("ssi", $page, $title, $description, $keywords, $id); $stmt->execute(); $stmt->close(); } // show an error message if the query has an error else { echo "ERROR: could not prepare SQL statement."; } header("Location: view.php"); } } // if the 'id' variable is not valid, show an error message else { echo "Error!"; } } // if the form hasn't been submitted yet, else { // make sure the 'id' value is valid if (is_numeric($_GET['id']) && $_GET['id'] > 0) { // get 'id' from URL $id = $_GET['id'];
// get the record from the database if($stmt = $mysqli->prepare("SELECT * FROM URL WHERE id=?")) { $stmt->bind_param("i", $id); $stmt->execute();
// show the form renderForm($page, $title, $description, $keywords, NULL, $id);
$stmt->close(); } // show an error if the query has an error else { echo "Error: could not prepare SQL statement"; } } // if the 'id' value is not valid, redirect the user back to the view.php page else { header("Location: view.php"); } } } /* NEW RECORD */ // if the 'id' variable is not set in the URL, else { // if the form's submit button is clicked, we need to process the form if (isset($_POST['submit'])) { // get the form data $page = htmlentities($_POST['page'], ENT_QUOTES); $title = htmlentities($_POST['title'], ENT_QUOTES); $description = htmlentities($_POST['description'], ENT_QUOTES); $keywords = htmlentities($_POST['keywords'], ENT_QUOTES);
// check that page and title are both not empty if ($page == '' || $title == '') { // if they are empty, show an error message $error = 'ERROR: Please fill in all required fields!'; renderForm($page, $title,$description, $keywords, $error); } else { // insert the new record into the database if ($stmt = $mysqli->prepare("INSERT URL (page, title, description, keywords) VALUES (?, ?)")) { $stmt->bind_param("ss", $page, $title, $description, $keywords); $stmt->execute(); $stmt->close(); } // show an error if the query has an error else { echo "ERROR: Could not prepare SQL statement."; }
// redirect the user header("Location: view.php"); } } else { renderForm(); } } // close the mysqli connection $mysqli->close(); ?>
"Please give us a simple answer, so that we don't have to think, because if we think, we might find answers that don't fit the way we want the world to be."
~ Terry Pratchett in Nation
Bookmarks