使用外部 PHP 文件更新 SQL 表


Updating SQL Tables with external PHP file

我正在尝试使用表单更新数据库中的表,该表单显示表中的当前值,以便可以对其进行编辑,如下所示。这需要在页面顶部有一个 PHP/SQL"SELECT"脚本。

<form action="courseEdit.php" method="post" id="createCourse">
            <div id="wrapper1">
                <p> <?php echo $_SESSION['editcourse']['coursename'] ?> </p>
                <input id="location" type="text" name="location" value="<?php echo $_SESSION['editcourse']['location'] ?>" class="form-field" placeholder=" Location"/> 
                <input id="time" type="text" name="date" value="<?php echo $_SESSION['editcourse']['date'] ?>" class="form-field" placeholder=" Time"/> 
                <input id="minnumber" type="text" name="minnumber" value="<?php echo $_SESSION['editcourse']['minimumpeople'] ?>" class="form-field" placeholder=" Minimum Number of Students"/> 
                <input id="maxnumber" type="text" name="maxnumber" value="<?php echo $_SESSION['editcourse']['maximumpeople'] ?>" class="form-field" placeholder=" Maximum Number of Students"/> 
            </div>
            <div id="wrapper2">
                <textarea id="coursedesc" cols="50" rows="15" type="text" name="courseDesc" placeholder=" Course Description"><?php echo $_SESSION['editcourse']['description'] ?></textarea>
            </div>
            <input type="text" name="objectiveone" value="<?php echo $_SESSION['editcourse']['objective1'] ?>" class="form-field" placeholder=" Learning Objective One"/> 
             <input type="text" name="objectivetwo" value="<?php echo $_SESSION['editcourse']['objective2'] ?>" class="form-field" placeholder=" Learning Objective Two"/> 
             <input type="text" name="objectivethree" value="<?php echo $_SESSION['editcourse']['objective3'] ?>" class="form-field" placeholder=" Learning Objective Three"/> 
             <input type="text" name="objectivefour" value="<?php echo $_SESSION['editcourse']['objective4'] ?>" class="form-field" placeholder=" Learning Objective Four"/> 
             <input type="text" name="objectivefive" value="<?php echo $_SESSION['editcourse']['objective5'] ?>" class="form-field" placeholder=" Learning Objective Five"/> 
            <input onclick="" type="submit" value="Register" class="button" id="createCourseBtn"/>
 </form>
提交时,表单将

引用一个单独的页面,他们刚刚编辑的表单将更新之前显示的表格值。该代码发布在下面,但据我所知,一旦单击提交按钮,它就会移动到"courseEdit.php"并在此过程中忘记所有输入值。

 <?php
require("common.php");
$courseid = $_SESSION['editcourse']['courseID'];
$query = " 
            UPDATE courses
            SET 
                coursename = :coursename,
                location = :location, 
                date = :date,
                minimumpeople = :minnumber, 
                maximumpeople = :maxnumber, 
                description = :courseDesc,
                objective1 = :objectiveone,
                objective2 = :objectivetwo,
                objective3 = :objectivethree,
                objective4 = :objectivefour,
                objective5 = :objectivefive,
            WHERE
                courseID = $courseid
        "; 

        $query_params = array( 
            ':coursename' => $_POST['coursename'],
            ':location' => $_POST['location'], 
            ':date' => $_POST['date'],  
            ':minnumber' =>  $_POST['minnumber'],
            ':maxnumber' =>  $_POST['maxnumber'], 
            ':courseDesc' => $_POST['courseDesc'],
            ':objectiveone' => $_POST['objectiveone'],
            ':objectivetwo' => $_POST['objectivetwo'],
            ':objectivethree' => $_POST['objectivethree'],
            ':objectivefour' => $_POST['objectivefour'],
            ':objectivefive' => $_POST['objectivefive'],
        ); 
        try 
        { 
            $stmt = $db->prepare($query); 
            $result = $stmt->execute($query_params); 
        } 
        catch(PDOException $ex) 
        {   
            die("Failed to run query: " . $ex->getMessage()); 
        } 
        header("Location: myprofile.php"); 
        die("Redirecting to registercourse.php");  
?>

有没有办法把它放在初始页面上,让它只在提交时运行?或者,将值传递到下一个 php 文件中,以便可以正确更新它们?提前感谢!

您可以使用表单顶部的 php 函数 isset() 来检查用户是否提交了表单法典

   if(isset($_POST['location'])){  //use any valid field name
        $courseid = $_SESSION['editcourse']['courseID'];
        $query = " 
        UPDATE courses
        SET 
            coursename = :coursename,
            location = :location, 
            date = :date,
            minimumpeople = :minnumber, 
            maximumpeople = :maxnumber, 
            description = :courseDesc,
            objective1 = :objectiveone,
            objective2 = :objectivetwo,
            objective3 = :objectivethree,
            objective4 = :objectivefour,
            objective5 = :objectivefive,
        WHERE
            courseID = $courseid
    "; 

    $query_params = array( 
        ':coursename' => $_POST['coursename'],
        ':location' => $_POST['location'], 
        ':date' => $_POST['date'],  
        ':minnumber' =>  $_POST['minnumber'],
        ':maxnumber' =>  $_POST['maxnumber'], 
        ':courseDesc' => $_POST['courseDesc'],
        ':objectiveone' => $_POST['objectiveone'],
        ':objectivetwo' => $_POST['objectivetwo'],
        ':objectivethree' => $_POST['objectivethree'],
        ':objectivefour' => $_POST['objectivefour'],
        ':objectivefive' => $_POST['objectivefive'],
    ); 
    try 
    { 
        $stmt = $db->prepare($query); 
        $result = $stmt->execute($query_params); 
    } 
    catch(PDOException $ex) 
    {   
        die("Failed to run query: " . $ex->getMessage()); 
    } 
    //your can use meta tag to redirect user to another page
    ?>  
        <meta http-equiv="refresh" content="0; url=myprofile.php">
    <?php
   }
   ?>
   <!-- form details -->

请务必移除表单中的操作网址