尝试通过 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',
我正在制作一个带有保存功能的自定义 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',