尝试通过 PHP 打印到 html 页

Trying to print onto an html page via PHP

我正在制作一个带有保存功能的自定义 WYSIWYG 编辑器,通过保存功能我有 运行 一些代码来获取某个 div 内的所有内容,将其保存到数据 table 或覆盖它。但是现在,我正在尝试重新加载页面。

过程如下:您按下保存按钮,运行是一个名为 save.php 的 PHP 脚本,如下所示。

我的问题是我希望它加载或回显原始 html 页面上某个 div 内的内容。我该怎么做呢?我需要它像 Javascript 的 innerHTML 函数一样工作,基本上。

以下是我使用的文件,至少是相关部分。

test.html:

<form method="post" name="blog-post" id="blog-post">
        <input type="hidden" name="postID" value="1"><!--Get the post's id-->           
        <div class="blog-editor-bar">
            <a href="#" data-command='save'
                onclick="submitForm('save.php');">
                <i class='fa fa-save'></i>
            </a>
        </div>

        <div id="blog-textarea" contenteditable>
        </div>
        <textarea style="display:none;" id="blog-post-cont" name="post-content"></textarea>
</form>

test.js:

function submitForm(action){
    var theForm = document.getElementById("blog-post");
    theForm.elements("post-content").value = document.getElementById("blog-textarea").innerHTML;
    theForm.action = action;
    theForm.submit();
}

save.php:

$conn = mysqli_connect('localhost', 'root', '', '');

        if (mysqli_connect_errno()){
            echo "<p>Connection Failed:".mysqli_connect_error()."</p>\n";
        }
    //store stuff in database
        //Get Variables
            $postid = $_POST['postID'] ? $_POST['postID'] : null;
            $post = $_POST['post-content'] ? $_POST['post-content'] : null;
    //if exists, overwrite
            if($postid != null || $postid != ""){
                $sqlSave = "SELECT * FROM wysiwyg.post WHERE idpost = $postid";
                $rSave = mysqli_query($conn, $sqlSave) or die(mysqli_error($conn));
                if(mysqli_num_rows($rSave)){
                    $sqlOverwrite = "INSERT INTO wysiwyg.post(post) VALUES(?) WHERE idpost = ?";
                    $stmt = mysqli_prepare($conn, $sqlOverwrite);
                    mysqli_stmt_bind_param($stmt, "sd", $post, $postid);
                    mysqli_stmt_execute($stmt);
                    mysqli_stmt_close($stmt);
                    mysqli_close($conn);
                } else {
                    newSave();
                }
                loadSave();
            }

            function newSave(){
                $sqlNewSave = "INSERT INTO wysiwyg.post(post) VALUES(?)";
                $stmt = mysqli_prepare($conn, $sqlNewSave);
                mysqli_stmt_bind_param($stmt, "s", $post);
                mysqli_stmt_execute($stmt);
                mysqli_stmt_close($stmt);
                mysqli_close($conn);
            }

            function loadSave(){
                $sqlLoad = "SELECT * FROM wysiwyg.post WHERE idpost = $postid";
                $rLoad = mysqli_query($conn, $sqlLoad) or die(mysqli_error($conn));
                //This is the part I'm stuck on
            }

在此先感谢大家对我的帮助!我已经坚持了至少几个小时!

编辑:在人们评论 SQL 注入之前,我已经考虑到了它。这是我在 运行 之前通过我过去已经做过的大量反 sql 注入方法让代码在我的本地主机上工作。我提供的代码目前仅对功能重要。

编辑 #2:防注入代码已经存在。我想我似乎忘记提供该信息。我再说一遍,我在这里提供的代码只是与功能相关的代码。我已经对字符串进行了转义、修剪等等,但是没有必要提供这些代码来让人们了解我正在尝试做的事情。

您可以使用 AJAX 请求 与服务器通信,发送数据并接收响应。那里有很多很好的教程,但由于我是在 W3Schools 网站上第一次学习它,所以我会在那里推荐你。

你可以使用这样写的AJAX请求:

<script>
    $(document).ready(function(){
        $.ajax({                        //start an AJAX call
            type: 'GET',                      //Action: GET or POST
            data: {VariableName: 'GETvalue'},    //Separate each line with a comma
            url: 'Destination.php',           //save.php in your case
                success: function(data)){         //if values send do this 

                    //do whatever

                } 
            }); //end ajax request
        });
    </script>

这允许您在不刷新的情况下将信息发送到您的 php 页面 所以在我的示例中,您可以在 PHP 端执行此操作

<?php 

echo $_GET['VariableName'];

?>

会回显"GETvalue as specified in the data section of the Ajax call"

编辑************

在 AJAX 调用中,您可以根据需要添加数据类型 json

$.ajax({                        
    type: 'GET',                      
    data: {VariableName: 'GETvalue'},   
    dataType: 'json'                   // Allows Json values or you can change it to whatever you want
    url: 'Destination.php',