Добрый день всем-всем, очень давно читаю этот форум, но зарегистрироваться решил только сейчас, возник вопрос, метод решения гуглом мне совсем не помог, поэтому надеюсь найти помощь здесь. И так, ближе к делу: Имеется визуальный редактор ContentTools, сайт редактора - http://getcontenttools.com/ На сайте имеется туториал по его подключению, с чем проблем не возникло, возникли проблемы с сохранением отредактированного материала. Имеется база данных, в ней содержится информация, которая выводится средствами PHP. Ниже код условной страницы, которая нуждается в редактировании: HTML: <!DOCTYPE html> <html lang="ru"> <head> <title>Название</title> <link rel="stylesheet" type="text/css" href="bin/styles/main.css"> <link rel="stylesheet" type="text/css" href="bin/content-tools.min.css"> <script src="http://code.jquery.com/jquery-3.2.1.slim.min.js"></script> </head> <body> <div data-editable data-name="main-content"> <p> <?php $db = mysql_connect("localhost","name","password"); mysql_select_db("databasetest" ,$db); $sql = mysql_query("SELECT `text1` FROM `test` WHERE `id`='1'",$db); $result = mysql_fetch_array ($sql); print "$result[text1]"; ?> </p> </div> <script src="bin/content-tools.min.js"></script> <script src="bin/editor.js"></script> </body> </html> По этой ссылке имеется инструкция по настройке на английском - http://getcontenttools.com/tutorials/saving-strategies, но сколько я не перечитывал, видимо не хватает мозгов сообразить как это работает. Да, вижу, что присутствует питон, но я никогда не работал с ним в вебе. Помогите разобраться или толкните в правильном направлении, как с помощью этого редактора сохранить изменения? Возможно даже не прибегая к средствам питона. Если нужны еще какие-то данные, код, то обязательно отправлю.
нда... ну вообще в принципе знаете как в вебе сохраняют данные? В простейшем случае - форма с полями - кнопка сабмита - жмем - отправляя POST запрос серверной стороне.... она может быть на питоне, пыхе .. ноде... хоть на чем. В любом случае именно серверная сторона может сохранить в файл, БД и другие хранилища Если вам нужен простейший случай - делаете форму в форме этот редактор - кнопку сабмит, которая генерирует событие - отработка этого события там в примерах есть. Чуть сложнее асинхронная передача - то есть без перезагрузки текущей страницы... но там тоже все подробно расписано конкретно по шаагам распишите - что у вас получилось, а что нет ... и чего хотите конкретно
Код (Javascript): editor.addEventListener('saved', function (ev) { var name, onStateChange, passive, payload, regions, xhr; // Check if this was a passive save passive = ev.detail().passive; // Check to see if there are any changes to save regions = ev.detail().regions; if (Object.keys(regions).length == 0) { return; } // Set the editors state to busy while we save our changes this.busy(true); // Collect the contents of each region into a FormData instance payload = new FormData(); payload.append('__page__', window.location.pathname); for (name in regions) { payload.append(name, regions[name]); } // Send the update content to the server to be saved onStateChange = function(ev) { // Check if the request is finished if (ev.target.readyState == 4) { editor.busy(false); if (ev.target.status == '200') { // Save was successful, notify the user with a flash if (!passive) { new ContentTools.FlashUI('ok'); } } else { // Save failed, notify the user with a flash new ContentTools.FlashUI('no'); } } }; xhr = new XMLHttpRequest(); xhr.addEventListener('readystatechange', onStateChange); xhr.open('POST', '/x/save-page'); xhr.send(payload); }); Вот имеется такой код, который захватывает информацию о том, что нажата кнопка сохранения, далее необходимо как я понимаю написать PHP код, который будет отправлять информацию, полученную от этого скрипта с помощью POST. Если я правильно понимаю, то взаимодействие происходит в этой части кода: Код (Javascript): xhr = new XMLHttpRequest(); xhr.addEventListener('readystatechange', onStateChange); xhr.open('POST', '/x/save-page'); xhr.send(payload); UPD1: Получается вместо /x/save-page мне нужно прописать путь до файла с методом POST, который будет отправлять с помощью PHP в БД все? Код (Text): xhr.open('POST', '/x/save-page'); UPD2: Если это так, то тут все понятно, вопрос в другом, как в самом PHP скрипте принять передаваемые данные от AJAX, а затем сохранить их?
Код вызывает /x/save-page с использованием метода POST HTTP. Путь к странице сохраняется в параметре __page__ , содержимое каждой области хранится с использованием имени области в качестве имени параметра. В моем случае имя параметра это main-content в коде самой страницы? HTML: <div data-editable data-name="main-content"> Следовательно main-content - это своего рода ID в БД? /x/save-page - это путь до самого скрипта, который обрабатывает полученные данные и отправляет все в БД? Если я все верно понимаю, то: PHP: <?php include_once("config.php"); $result = mysql_query("SELECT 'data-name' FROM 'testtest'"); mysql_close($dbconnect); ?> Вопрос что прописывать тут, в таблице имеется столбец data-name с именами областей. Я в упор не понимаю, если не сложно, можете помочь хотя бы псевдокодом, PHP программистом не являюсь, но надо с чего-то начинать.
Я прошу прощения за свою тупость, пошел изучать учебники по PHP, все оказалось просто, нужно было мозг включить. PHP: <?php file_put_contents('test.txt', ''); $file=fopen('test.txt','a+'); fputs($file,$_POST['main_content']); fclose($file); ?> Правда до сих пор думаю, если областей редактирования 200, не писать же под каждую POST, можно перебрать циклом foreach? Правда это пока для меня загадка, спасибо ADSoft за хоть какую-то отзывчивость.
это ненормальное планирование UI- когда 200 областей редактирования в одной форме.... даже 20..... максимум что нужно 1-2, в край три ... иначе пользователь запутается вних
Посмотрите как работает инструмент - http://getcontenttools.com/demo Мне почему-то кажется, что вы не поняли меня немного)