试图通过PHP打印到html页面

时间:2016-07-08 00:01:28

标签: javascript php html echo innerhtml

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

过程如下:你按下保存按钮,它会运行一个名为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:反注射代码已经存在。我想我似乎忘了提供这些信息。我再说一遍,我在这里提供的代码只是与功能相关的代码。我已经逃脱了弦乐,修剪等等等,但是这些代码并不是必须让人们了解我想要做的事情。

2 个答案:

答案 0 :(得分:1)

您可以使用 AJAX请求与服务器进行通信,发送数据并接收回复。那里有很多很好的教程,但是自从我第一次在W3Schools网站上学到它以后,我会在那里推荐你。

答案 1 :(得分:0)

您可以使用如下所示的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'];

?>

将按照Ajax调用的数据部分中指定的#34;

回显&#34; GETvalue

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

在AJAX调用中,如果需要json

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