我想编写一个自定义表单,通过查找机器的序列号来筛选出我感兴趣的行,以提供所有其他信息(例如全名和电子邮件),这样我就可以让用户指出修改其他信息的详细信息。
<?php
/*
Template Name: Details Edit
*/
get_header();
?>
<body>
    <div style="width:800px; margin:0 auto;">
        <form action="" method="post"><br><br>
            <label for="search"> Search (Machine S/N) To Edit: <br>
                <input id="search" style="width:400px; margin:auto;" type="text" name="search" value="" required/>
            </label><br>
            <input type="submit" name="submit" value="Search">
            <input type="reset"> <br><br>
        </form>
    </div>
</body>
<?php
$search = \'\';
if( isset($_POST[\'submit\'])){
    $search = isset($_POST[\'search\']) ? $_POST[\'search\'] : \'\';
    global $wpdb;
    $result = $wpdb->get_results ( " SELECT * FROM  patient_details WHERE m_sn = \'$search\'" );
    if ($result>0){
        foreach ( $result as $page )
        { ?>
        <div style="width:800px; margin:0 auto;">
        <form action="" method="post">
            <label for="_p_name"> Name: <br>
                <input id="_p_name" style="width:400px; margin:auto;" type="text" name="_p_name" value="<?php echo $page->p_name; ?> " required/>
            </label><br>
            <label for="_email"> Email Address: <br>
                <input id="_email" style="width:400px; margin:auto;" type="text" name="_email" value="<?php echo $page->email; ?>" required/>
            </label><br>
            <label for="_m_sn"> Machine Serial Number <br>
                <input id="_m_sn" style="width:400px; margin:auto;" type="text" name="_m_sn" value="<?php echo $page->m_sn; ?>">
            </label><br>
                <input type="checkbox" id="checkbox" required/>
                <label for="checkbox"> I have checked the information are correct.
                </label><br><br>
            <input type="submit" name="update" value="Update">
            <br><br>
        </form>
    </div>
        <?php
            echo \'<pre>\';
            print_r($_POST); 
            $_p_name = $_email = $_m_sn = \'\';
            if ( isset($_POST[\'submit\'])){
            $_p_name = isset($_POST[\'_p_name\']) ? $_POST[\'_p_name\'] : \'\';
            $_email = isset($_POST[\'_email\']) ? $_POST[\'_email\'] : \'\';
            $_m_sn = isset($_POST[\'_m_sn\']) ? $_POST[\'_m_sn\'] : \'\';
            global $wpdb;
            $sql=$wpdb->query(" UPDATE `patient_details` SET `p_name`=\'$_p_name\',`email`=\'$_email\',`m_sn`=\'$_m_sn\' WHERE `p_id` = \'$page->p_id\' ");
        ?>
    <?php
    };
    } 
} ?>
<?php
getfooter();
?>
 上面写着
            echo \'<pre>\';
            print_r($_POST); 
 旨在告诉我表单中输入了什么,但我收到了以下反馈:
Array
(
    [search] => P1234567890B
    [submit] => Search
)
 所以,我需要帮助如何让程序检测“的输入”_p\\U名称“"E_电子邮件“;是否使用更新功能形成和修改?或者,您有什么建议可以让我更好地编写此程序;向上搜索以允许用户修改数据库表中的详细信息;?谢谢你!非常感谢您的帮助
 
                SO网友:Muhammad Saqib Sarwar
                我有一些意见/建议可能会有所帮助。
您应该在搜索表单中使用GET方法而不是POST方法,以便在更新表单中使用POST方法。
更新查询不应是生成更新表单的循环的一部分。我建议将更新代码移到文件的顶部,并将其置于可用核心字段的条件下。
更新表单中没有具有p\\U id名称的字段,因此请为其包含一个隐藏字段,并根据该字段的值更新数据库。
还要确保所有生成的标记都显示在body标记中。
希望在进行这些更改后,您将拥有更好的代码结构,并且还能够解决任何遗留问题。
祝你好运