提交php mysqli更新表单后,我有一个空白页面,

时间:2013-09-28 01:14:14

标签: php mysqli prepared-statement

您好我正在尝试完成此更新,它一直向我发送一个没有错误的空白页面,并且不将信息提交到DataBase。据我所知,一切都达到预备语句的要点,它从数据库和以前的搜索查询中提取id和其他变量没有问题,但不会让我继续下去。任何人都可以看到我出错的地方,我只是看不到它?

<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 } ?>

                                    <br><strong>Item Type: *  </strong><input name="item_type" value="<?php echo $item_type; ?>" type="text"><br>
                                    <br><strong>Location: *  </strong><input name="location" value="<?php echo $location; ?>" type="text"><br>
                                    <br><strong>Date Last Test: * </strong><input name="date_last_test" value="<?php echo $date_last_test; ?>" type="date"><br>
                                    <br><strong>Serial Number: *</strong><input name="serial_number" value="<?php echo $serial_number; ?>" type="text"><br>
                                    <br><strong>Date Next Test: *</strong><input name="date_next_test" value="<?php echo $date_next_test; ?>" type="date"><br>
                                    <br><strong>Comments: *</strong><input name="comments" value="<?php echo $comments; ?>" type="text"><br>

                                    <p style="text-align: left;">* required</p>
                                    <input name="submit" value="Submit" type="submit"><div style="text-align: left;">
                            </div></div><div style="text-align: left;">
                        </body>
                </html>

    /*

       EDIT RECORD

    */
    // if the 'id' variable is set in the URL, we know that we need to edit a record
    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'];
                            $item_type = htmlentities($_POST['item_type'], ENT_QUOTES);
                            $location = htmlentities($_POST['location'], ENT_QUOTES);
                            $date_last_test = htmlentities($_POST['date_last_test'], ENT_QUOTES);
                            $serial_number = htmlentities($_POST['serial_number'], ENT_QUOTES);
                            $date_next_test = htmlentities($_POST['date_next_test'], ENT_QUOTES);
                            $comments = htmlentities($_POST['comments'], ENT_QUOTES);


                            // check that firstname and lastname are both not empty
                            if ($item_type == '' || $location == ''|| $date_last_test == ''|| $serial_number == ''|| $date_next_test == ''|| $comments == '' )
                            {
                                    // if they are empty, show an error message and display the form
                                    $error = 'ERROR: Please fill in all required fields!';
                                    renderForm($item_type, $location, $date_last_test, $serial_number, $date_next_test, $comments, $error, $id);
                            }
                            else
                            {
                                    // if everything is fine, update the record in the database
                                            if ($stmt = $mysqli->prepare("UPDATE `Calibration_and_Inspection_Register` SET `item_type` = ?, `location` = ?, `date_last_test` = ?, `serial_number` = ?, `date_next_test` = ?, `comments` = ?
                                            WHERE `id`=?"))
                                    {
                                            $stmt->bind_param("issdsds",`$id`, `$item_type`, `$location`, `$date_last_test`, `$serial_number`, `$date_next_test`, `$comments`);
                                            $stmt->execute();
                                            $stmt->close();
                                    }

                                    // show an error message if the query has an error
                                    else
                                    {
                                            echo "ERROR: could not prepare SQL statement.";
                                    }
                                    // redirect the user once the form is updated
                                    //header("Location: View Calibration and Inspection records.php");
                            }        
                    }
                   // if the 'id' variable is not valid, show an error message
                    else
                    {
                            echo "Error with ID !";
                    }
            }
            // if the form hasn't been submitted yet, get the info from the database and show the form
            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 recod from the database
                            if($stmt = $mysqli->prepare("SELECT `item_type`,`location`,`date_last_test`,`serial_number`,`date_next_test`,`comments`,`id` FROM `Calibration_and_Inspection_Register` WHERE id=?"))
                            {
                                    $stmt->bind_param("i", $id);
                                    $stmt->execute();

                                    $stmt->bind_result($item_type, $location, $date_last_test, $serial_number, $date_next_test, $comments, $id);
                                    $stmt->fetch();

                                    // show the form
                                    renderForm($item_type, $location, $date_last_test, $serial_number, $date_next_test, $comments, $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 All Calibration and Inspection Records.php");
                    }
            }
    }

2 个答案:

答案 0 :(得分:3)

显示所有错误可能会有所帮助

添加

error_reporting(E_ALL);
ini_set( 'display_errors','1'); 

在你的php页面顶部...

加上不确定,但这对我来说不合适..

header("Location: View All Calibration and Inspection Records.php");

应该至少

header("Location: viewallcalibrationandinspectionrecords.php");

答案 1 :(得分:1)

回顾这个问题,一年后,我可以看到我做错了什么。 在我没有给它任何行动的形式,我把它留在了<form action="" method="post">。应该是<form action="#" method="post">。初学者的基本内容。