2016-07-08 3 views
-1

Я создаю пользовательский редактор WYSIWYG с функцией сохранения, а через функцию сохранения я запустил некоторый код, чтобы получить все в пределах определенного div, сохранить его в таблице данных или перезапишите его. Но сейчас я пытаюсь загрузить страницу назад.Попытка печати на html-страницу через PHP

Процесс выглядит следующим образом: вы нажимаете кнопку сохранения и запускаете скрипт PHP под названием save.php, как показано ниже.

Моя проблема в том, что я хочу, чтобы она загружала или повторяла содержимое в пределах определенного div на исходной странице html. Как мне это сделать? Мне нужно, чтобы он работал, как функция innerHTML в Javascript, в основном.

Ниже приведены файлы, которые я использую, по крайней мере, соответствующие части.

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 
      } 

Спасибо всего заранее за помощь мне! Я застрял на нем хотя бы на несколько часов!

EDIT: Прежде чем люди комментируют SQL-инъекции, я принял это во внимание. Это я получаю код, работающий на моем локальном хосте, прежде чем я запускаю его через тонну анти-sql-меток инъекций, которые я уже делал в прошлом. Код, который я предоставляю, имеет значение только для функциональности на этом этапе.

EDIT # 2: Код для инъекций уже существует. Кажется, я забыл предоставить эту информацию. Повторяю, код, который я здесь привел, это только код, относящийся к функциональности. Я избежал строк, обрезал и т. Д. И т. Д., Но этот код не нужен, чтобы люди могли понять, что я пытаюсь сделать.

+0

Вам нужно использовать AJAX для сохранения текста. Также ваши запросы '$ sqlSave' и' $ sqlLoad' уязвимы для SQL-инъекций. Вы должны использовать связанные параметры для ** всех ** данных, предоставленных пользователем. – Mike

+0

Есть много учебников, которые входят в AJAX, https://learn.jquery.com/ajax/. Вы частично предотвращаете SQL-инъекции. Вы должны делать это повсюду, делая это позже, это плохая идея. – chris85

+0

Спасибо за быстрый ответ Майк. Проверьте мои изменения. Я знаю SQL, но в настоящее время я сосредоточен на функциональности в первую очередь, поэтому он работает. Как я могу сделать Ajax из файла PHP, как в моей функции загрузки php, как бы я вызвал вызов Ajax для хранения значений в json-файле? – verdeletg

ответ

1

Вы можете использовать AJAX запрос в для связи с сервером, передавать данные и получить ответ. Есть много хороших учебных пособий, но, поскольку я впервые узнал об этом на веб-сайте W3Schools, я собираюсь направить вас туда.

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»

EDIT ************

В AJAX звонка можно добавить DATATYPE если вы хотите JSon

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

Обратите внимание, что вопрос не был помечен jQuery. Чистые JS-запросы AJAX не выполняются так. – Mike

+0

@naderbesada Что делают данные? я знаю тип данных и все остальные, но что именно делают данные? – verdeletg

+0

@ Майк, вы действительно не помогаете кому-то, кто пытается идентифицировать проблему здесь. Если JQuery - это решение, я рад его использовать. Я понимаю, что вы очень уважаемый член сообщества, но остановитесь. – verdeletg

Смежные вопросы