PHP-按ID

时间:2016-03-18 14:20:45

标签: php sql

所以基本上我有一张讲师和他们的细节。删除或编辑记录有两个选项。我设法让删除工作,但不编辑记录。当我单击编辑时,我的编辑用户表单出现了,但我无法将更改保存到我的数据库中。它也不输出我不成功的消息或任何东西,只是再次回到表中。

这是我的代码

修改用户表单

    <form class="register" method="post" autocomplete="off" action="<?php echo $_SERVER['PHP_SELF'];?>">
        <div>
            <h2>Edit Lecturer Form </h2>
            <table class="form">
                <tr>
                    <td>
                        <label>

                            <span>First Name</span><input name="lectFirstName" type="text" required="true" title="First Name (up to 45 Characters)" pattern="[a-zA-Z0-9óáéí']{1,48}">
                            <span>Last Name</span><input name="lectLastName" type="text" required="true" title="Last Name (up to 45 Characters)" pattern="[a-zA-Z0-9óáéí']{1,48}">
                            <span>Password</span><input name="lectPass1" type="password" required="true" title="Password (min 5 to 8 Characters)" pattern="[A-Za-z-0-9_]{5,8}">
                            <span>Re-enter Password</span><input name="lectPass2" type="password" required="true" title="Password (5 to 8 Characters a-z,A-Z,0-9 and underscore)" pattern="[A-Za-z-0-9_]{5,8}">
                        </label>
                    </td>
                </tr>

                <tr>
                    <td></td>
                </tr>

                <tr>
                    <td>
                        <label>
                            <span>Hit Enter to finish</span>
                            <input name="send" type="submit" id="sendButton" value="Enter">
                        </label>
                    </td>
                </tr>
            </table>
        </div>
    </form>

编辑代码

$table='lecturer';  
$PK="LectID";

    if(isset($_POST['editRecord'])) //edit button has a name of editRecord
    {
        if(isset($_POST['send'])) //send button in edit user form has name of send
        {

            $selectedID=$_POST['LectID'];



            $lectFirstName=$conn->real_escape_string($_POST['lectFirstName']);
            $lectLastName=$conn->real_escape_string($_POST['lectLastName']);
            $pass1=$conn->real_escape_string($_POST['lectPass1']);
            $pass2=$conn->real_escape_string($_POST['lectPass2']);

            if ($pass1===$pass2)
            {
                $sqlUpdate="UPDATE $table SET FirstName='$lectFirstName', LastName='$lectLastName', password='$pass1' where $PK='$selectedID'";
                if(queryEdit($conn,$sqlInsert)==1) 
                {
                    echo "<h3>New data inserted successfully</h3>";
                }
                else
                {
                    echo "<h3>Edit unsuccessful</h3>";
                }

            }

            else
            {
                echo "<p>Passwords dont match - data not entered";
            }

            $sqlData="SELECT * FROM $table WHERE LectID='$lectID'";  //get the data from the table
            $sqlTitles="SHOW COLUMNS FROM $table";  //get the table column descriptions

            //execute the 2 queries
            $rsData=getTableData($conn,$sqlData);
            $rsTitles=getTableData($conn,$sqlTitles);

            //check the results
            $arrayData=checkResultSet($rsData);
            $arrayTitles=checkResultSet($rsTitles);

            //use resultsets to generate HTML tables
            generateTable($table, $arrayTitles, $arrayData);

            //close the connection
            $conn->close();
        }

            include 'FORMS/editUserForm.html';

    }
    else //this is the first time the form is loaded
    {
        //display table with delete options
        //Query string

        $sqlData="SELECT * FROM $table";  //get the data from the table
        $sqlTitles="SHOW COLUMNS FROM $table";  //get the table column descriptions


        //execute the 2 queries
        $rsData=getTableData($conn,$sqlData);
        $rsTitles=getTableData($conn,$sqlTitles);

        //check the results
        $arrayData=checkResultSet($rsData);
        $arrayTitles=checkResultSet($rsTitles);

        //use resultsets to generate HTML tables with DELETE button
        generateDeleteEditTable($table, $PK, $arrayTitles, $arrayData);

        //close the connection
        $conn->close();
    }

修改记录按钮

   <form class="small_button" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
        <button class="smallBtn" name="editRecord" type="submit" value="<?php echo $id;?>"><?php echo $buttonText; ?></button>
    </form>

查询编辑功能

function queryEdit($ connection,$ sql)

{
    try {
        if ($connection->query($sql)===TRUE)  //execute the insert sql
        {
            return 1;  //if successful
        }
        else
        {
            return 0;  //if not successful
        }
    }
    //catch exception
    catch(Exception $e) {
        if (__DEBUG==1)
        {
            echo 'Message: ' .$e->getMessage();
            exit('<p class="warning">PHP script terminated');
        }
        else
        {
            header("Location:".__USER_ERROR_PAGE);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您需要在表单中存储要编辑的记录的ID(在<input type="hidden" name="LectID" ... />字段中)。当表单数据从客户端到达时,服务器需要知道要编辑的ID。

答案 1 :(得分:0)

<form class="small_button" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
        <button class="smallBtn" name="editRecord" type="submit" value="<?php echo $id;?>"><?php echo $buttonText; ?></button>
</form>

在表单中,您没有任何名为“send”的HTML元素。

只有在isset($_POST['send']

时才会执行您的PHP代码