繁体   English   中英

如何使用php表单更新表中的特定行?

[英]How do I update a specific row in a table using php form?

请多多包涵,我还不熟悉该语言。 我有一张表格,其中列出了申请人记录,例如申请人编号,姓名和状态。 我想使用PHP表单在特定行上更新“已雇用”或“失败”的申请人状态。 但是,我不确定提交时如何在其行上获取特定的提交名称。 或者,如果您有解决方法,我将不胜感激。 非常感谢你的帮助。

<!DOCTYPE html>
<html>
      <h2>Applicant Records</h2>
<?php

$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password ="";
$mysql_database = "applicantrecord";

// Create connection
$conn = new mysqli($mysql_hostname, $mysql_user, $mysql_password, $mysql_database);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sqli = "SELECT id, firstname, lastname, status FROM applicant";
$result = $conn->query($sqli);


if ($result->num_rows > 0) { ?>
    <table class="table">
    <thead>
        <tr>
            <th>Applicant No.</th>
            <th>Lastname</th>
            <th>Firstname</th>
            <th>Status</th>
            <th></th>
        </tr>
    </thead>
<?php
    // output data of each row

    echo "<tbody>";
    while($row = $result->fetch_assoc()) 
    { ?>
            <tr>
                <td>
                    <?php echo $row["id"]; 
                        $appid = $row["id"];
                    ?>  
                </td>
                <td>
                    <?php echo $row["lastname"]; ?>
                </td>
                <td>
                    <?php echo $row["firstname"]; ?>
                </td>
                <td>
                    <?php echo $row["status"]; ?>
                </td>
                <td>
                </td>
                <td>

                        <div>
                        <form action="" role="form" method="post" name="form<?php echo $appid; ?>">
                        <select name="applicant_status">
                        <option value="Hired">Hire</option>
                        <option value="Failed">Fail</option>
                        </select>

                        </p>
                        <button type="submit" class="btn btn-default" name = "submit<?php echo $appid; ?>" data-dismiss="modal">Submit</button>                     
                        </form>
                        <?php

                        if(isset($_POST["submit"])){
                            $dbhost = 'localhost';
                            $dbuser = 'root';
                            $dbpass = '';
                            $newappid = $appid;
                            $newapptstatus = $_POST['applicant_status'];
                            $connect = mysql_connect($dbhost, $dbuser, $dbpass);
                        if(! $connect ) {
                            die('Could not connect: ' . mysql_error());
                            }

                        $sql_sub = "UPDATE applicant ". "SET status = '$newappstatus'".  
                                    "WHERE id = '$newappid'" ;
                                    mysql_select_db('applicantrecord');
                        $retval = mysql_query( $sql_sub, $connect );

                        if(! $retval ) {
                        die('Could not update data: ' . mysql_error());
                            echo "<script type= 'text/javascript'>alert('An error occured! Applicant status update failed!');</script>";
                        }

                        echo "<script type= 'text/javascript'>alert('Applicant status updated successfully!');</script>";
                        mysql_close($connect);

            }                   
                        ?>
                        </div>

                </td>
            </tr>
    <?php }
    echo "</tbody>";
    echo "</table>";
} else {
    echo "0 results";
}
$conn->close();
?>

</html>

在检查$_POST['submit']设置的if语句中,索引“ submit”不存在。 因此isset($_POST['submit'])计算结果为false并且从未执行过用于更新表的查询。

变量$appid随添加的每一行而更改,因此当页面加载完成并且在某一行上按下了提交按钮时, $appid不一定包含正确的行号。

为了解决这个问题,您可以在表单中使用隐藏的输入:

<input name="id" value="<?php echo $appid ?>" type="hidden">

然后,您可以将isset($_POST['submit'])替换为isset($_POST['id'])并设置$newappid = $_POST['id']以获取要更改的行号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM