Как хранить html в базе данных mysql

Я пытаюсь сохранить HTML в базе данных, поэтому, когда я извлекаю форму из базы данных, мне нужно показать ее как форму, а не текст. Есть ли способ сделать это?

Это форма

$form = "<form id='' method='' action='' class=''> <input type='hidden' name='my-item-id' value= $uid /> <input type='hidden' name='my-item-name' value=$title /> <input type='hidden' name='my-item-price' value='1' /> <input type='hidden' name='my-item-qty' value='1' /> <input type='submit' name='my-add-button' class='button' value='Add to cart'/> </form>"; 

в тот момент, когда я извлекаю вышеуказанное из базы данных, он отображается как текст,

также поле формы в базе данных – varchar(1000)

 include('adodb.inc.php'); include('adodb-pager.inc.php'); $sql = 'select title as "TITLE",description as "DESCRIPTION",form as "ADD TO CART" from mathspapers order by sysdate desc'; $pager = new ADODB_Pager($db,$sql); $pager->Render(); в include('adodb.inc.php'); include('adodb-pager.inc.php'); $sql = 'select title as "TITLE",description as "DESCRIPTION",form as "ADD TO CART" from mathspapers order by sysdate desc'; $pager = new ADODB_Pager($db,$sql); $pager->Render(); в include('adodb.inc.php'); include('adodb-pager.inc.php'); $sql = 'select title as "TITLE",description as "DESCRIPTION",form as "ADD TO CART" from mathspapers order by sysdate desc'; $pager = new ADODB_Pager($db,$sql); $pager->Render(); 

благодаря

Когда вы храните текст в базе данных, вы, вероятно, используете addslashes() .
Затем, когда вы возвращаете текст из базы данных, вам нужно что-то вроде stripslashes() перед тем, как вы покажете свой HTML-текст. Руководство PHP по штриховым рисункам

Вместо хранения всего шаблона формы (и значений) в поле db я могу посоветовать вам хранить только имена полей полей и данные (значения) в качестве пар ключ-значение.

Вы можете легко использовать их, если вы храните их стандартным способом; (используйте на странице обработки формы)

 $form_data = "my-item-id=".$_POST["my-item-id"]."&my-item-name=".$_POST["my-item-name"]."&my-item-price=".$_POST["my-item-price"]."&my-item-qty=".$_POST["my-item-qty"]; 

затем храните $ form_data только в db

использовать данные из db (конечно, после вытягивания $ form_data из db) вы можете использовать parse_str

 parse_str($form_data,$form_data_from_db); 

echo $ form_data_from_db ["my-item-id"] будет печатать ваш сохраненный ввод формы, например

Но это не мой главный совет. Как вы будете строить свой шаблон для каждого сохраненного поля данных? Просто создайте функцию для создания формы, как это делает большинство cms.

попробуй это ;

 function myform_pattern_1($id,$method,$action,$class,$form_data){ parse_str($form_data,$fd); $form_html = "<form id='' method='' action='' class=''>"; $form_html .= "<input type='hidden' name='my-item-id' value='".$fd["my-item-id"]."' />"; $form_html .= "<input type='hidden' name='my-item-name' value='".$fd["my-item-id"]."' />"; $form_html .= "<input type='hidden' name='my-item-price' value='".$fd["my-item-id"]."' />"; $form_html .= "<input type='hidden' name='my-item-qty' value='".$fd["my-item-id"]."' />"; $form_html .= "<input type='submit' name='my-add-button' class='button' value='Add to cart'/>"; $form_html .= "</form>"; return $form_html; } 

Вызовите эту функцию, где вам нравится;

 echo myform_pattern_1("form_id","post","","form_class",$form_data); 

Это использование имеет большое преимущество для вашего метода. Вы можете изменить синтаксис формы, когда захотите. Вы, возможно, захотите интегрировать плагин проверки JQuery позже или просто хотите использовать другой стиль или даже изменить синтаксис, добавив теги, вам придется изменить все сохраненные поля db, если вы храните всю форму на db. Использование функции намного более гибкое. Также вы не будете использовать db для хранения ненужных тегов-повторений и т. Д.

надеюсь, вам понравится, cys

Для получения дополнительной информации о parse_str; http://php.net/manual/en/function.parse-str.php enter code here

Если бы я должен был догадаться, я бы сказал, что ваше поле VARCHAR слишком мало, чтобы обрабатывать весь HTML-код, поэтому тег где-то срезается, в результате чего HTML отображается как текст.

Моя догадка без каких-либо дополнительных доказательств заключается в том, что вы конвертируете форму html в свои безопасные эквиваленты html, поэтому она просто выводит текст в виде текста, это просто текст.

Дважды проверьте свой вывод, что фактический исходный код не является чем-то вроде &lt; для <

Из документации PHP для htmlspecialchars: Некоторые символы имеют особое значение в сделанных переводах HTML, которые являются наиболее полезными для повседневного веб-программирования. Если вам требуется перевести все символы HTML-символов, вместо этого используйте htmlentities ().

Результат сохраняется в db, а затем, когда он вытягивается из db.

У тебя есть это.