Html искажается с php

У меня есть база данных mysql, которая в качестве одного из полей содержит описание html. Это описание не зависит от меня, оно получается и вставляется автоматически. Пример одного из этих описаний находится здесь:

http://www.nomorepasting.com/getpaste.php?pasteid=22492

Данные изначально экспортируются из базы данных доступа и, кажется, остаются нетронутыми. Пример экспортированных данных находится здесь:

http://www.yousendit.com/transfer.php?action=batch_download&batch_id=TTZtWmdsT01kMnVGa1E9PQ

Я пытаюсь вывести переменную, содержащую описание html, во всплывающее окно, чтобы отобразить ее как есть. Код, который я пытаюсь использовать для этого, находится здесь:

http://www.nomorepasting.com/getpaste.php?pasteid=22498

Однако он создает следующий HTML-код:

http://www.nomorepasting.com/getpaste.php?pasteid=22462

Есть незакрытый тег стиля, который предотвращает отображение остальной части страницы и открытие всплывающего окна. Насколько я могу судить, я сузил это до проблемы с php, потому что данные в mysql кажутся нормальными.

редактировать:

Я просто попытался выбрать только article_Desc из базы данных с помощью этого кода:

http://www.nomorepasting.com/getpaste.php?pasteid=22494

Что произвело это в результате:

http://www.nomorepasting.com/getpaste.php?pasteid=22496

edit2:

Похоже, возникла проблема с переменной countrycode, содержащей тег стиля. Когда я удаляю это, отображается изображение и создается всплывающее окно, только с результатами html, очень похожими на последнюю вставленную мной ссылку. Данные в базе данных кажутся правильными, так что может вызвать эту проблему?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
412
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Напоминает мне немного этот вопрос.

Вы видите здесь в коде PHP

child1.document.write(' . json_encode($row2["ARTICLE_DESC"]) . ');

а здесь в HTML-коде

child1.document.write("");

Это означает, что json_encode ($ row2 ["ARTICLE_DESC"]) выводит "". А поскольку json_encode ('') выводит "", это означает, что $ row2 ["ARTICLE_DESC"] пусто.

Обновлено:

$sql = "SELECT * FROM Auctions WHERE ARTICLE_NO ='$pk'";
$sql2 = "SELECT ARTICLE_DESC FROM Auctions WHERE ARTICLE_NO ='$pk'";

Второй sql2 не нужен, так как первый $ sql уже должен включать ARTICLE_DESC. Так

  1. Поле ARTICLE_DESC для этого ARTICLE_NO пусто.
  2. ARTICLE_DESC - неправильное имя.
  3. ARTICLE_DESC находится в другой таблице.

ИЗМЕНИТЬ при РЕДАКТИРОВАНИИ:

$query = "SELECT article_desc FROM Auctions WHERE ARTICLE_NO ='220288560247'";

Имя - article_desc, а не ARTICLE_DESC.

ИЗМЕНИТЬ КОММЕНТАРИИ:

Замените все вхождения ARTICLE_DESC на article_desc.

РЕДАКТИРОВАТЬ Теперь, когда у вас есть html-код, вам нужно заменить

json_encode($row['article_desc'])

с этим

str_replace(array("\n", "\r", "\t"), array('', '', ''), $row['article_desc']);

что можно сделать в красивой функции. Просто помните, что весь HTML-код, который вы печатаете, находится в

<!-- text -->

так что вы на самом деле ничего не увидите в новом окне ...

<!-- +++++++++++++++++++++++++ Bitte ändern Sie im eigenen Interesse nichts an diesem Code! ++++++++++++++++++++++++ -->
<!-- +++++++++++++++++++++++++ Das kann massive Fehldarstellungen ihrer Auktion zur Folge haben! +++++++++++++++++++ -->
<!-- +++++++++++++++++++++++++ ++++++++++++++++++++++++++ Ihr Supreme Team +++++++++++++++++++++++++++++++++++++++++ -->

Извините, я недостаточно обновил ссылку. Весь вопрос в том, что article_desc не пуст и что я не использую json_encode, я исправлю это.

user1253538 05.12.2008 16:13

Итак, вы дали мне -1, потому что ваш вопрос вводил в заблуждение ?!

OIS 05.12.2008 16:18

Нет? Вы мне очень помогли, я дал вам один, мне очень жаль, что это было -1, это не было намерением и должно быть исправлено сейчас.

user1253538 05.12.2008 16:27

Я смущен вашим вторым редактированием, потому что без json-кодирования результирующий html в последней опубликованной мной ссылке - это то, что назначается document.write, указанное article_desc является правильным и не пустым?

user1253538 05.12.2008 16:29

Я не понимаю, что "указанный article_desc правильный и не пустой?", Но это случай неправильного регистра. : P Когда вы получаете результат, который вы запрашиваете в нижнем регистре, и когда вы не получаете результат, вы запрашиваете в верхнем регистре.

OIS 05.12.2008 16:34

Хорошо, я убедился, что все это строчные буквы, но происходит то же самое, хотя теперь проблема сузилась.

user1253538 05.12.2008 16:37

Нет, просто article_desc. Аукционы по-прежнему должны иметь большой A, а ARTICLE_NO должен быть в верхнем регистре.

OIS 05.12.2008 16:39
Ответ принят как подходящий

Файл CSV выглядит немного беспорядочно. Похоже, что поля разделены табуляцией и ничем не заключены. Это может быть нормально для простых данных, но когда вы начнете вставлять HTML, у вас будут проблемы - глядя на один из твоих других вопросовs, похоже, что парсер CSV сбивается с толку и разбивает одно поле HTML на несколько - это, кажется, происходит каждый раз, когда он сталкивается с табуляция (а может также двойная кавычка?)

Вы можете изменить формат файла CSV? Я бы посоветовал вам использовать запятые для разделения полей и определить символ вложения (например, двойные кавычки) для более сложных строк, таких как HTML - я думаю, вам нужно будет убедиться, что любые двойные кавычки внутри строки также сбежал. Также имейте в виду, что вам может потребоваться удалить или избежать разрывов строк внутри этих строк в зависимости от того, что их анализирует, но я не совсем уверен в этом.

Редактировать после вашего комментария

Вам не нужно беспокоиться о строке, содержащей разделитель, если она заключена в символ. Если вам нужна строка, содержащая три поля, и три строковых значения:

String1
String2
Stri,ng3

Следующий не является действителен и будет рассматриваться парсером как четыре поля

String1,String2,Stri,ng3

Следующий является действителен, потому что разделитель «заключен» в двойные кавычки

"String1", "String2", "Stri,ng3"

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

String1
String"2

поле CSV может быть экранировано как

"String1", "String\"2"

Если я правильно помню, вы импортировали в MySQL с помощью LOAD DATA ?, поэтому для приведенных выше примеров вы можете использовать такие параметры, как

FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'

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

Редактировать 2

Если оставшиеся проблемы связаны с разрывом строки, вы можете заменить строку \n на \\n и \r на \\r в коде, который экспортирует каждое поле в CSV.

Хорошо, это могло быть проблемой, я думал, что вкладки - лучшее, что можно использовать в качестве разделителя, когда имеешь дело с данными, которые могут содержать любой другой тип символа. Я не думал, что html будет содержать символы табуляции. Поскольку html может содержать что угодно, я не знаю, какой разделитель использовать

user1253538 05.12.2008 16:57

О \ t и \ n позаботится json_encode? И это тоже не проблема, как вы можете видеть в HTML-коде.

OIS 05.12.2008 17:15

Тогда что приводит к тому, что часть HTML оказывается в COUNTRYCODE?

user1253538 05.12.2008 17:16

Он заканчивается кодом страны, потому что синтаксический анализатор csv считает, что поле HTML на самом деле состоит из нескольких полей, поэтому он не синхронизируется, и данные кода страны теряются.

Tom Haigh 05.12.2008 17:24

@OIS - я думаю, проблема в том, что в базе данных MySQL есть плохие данные - json_encode на данный момент не актуален. Если только я не правильно понял проблему.

Tom Haigh 05.12.2008 17:27

Похоже, ты на деньгах. Выбор article_desc после importin в исходной вкладке с разделителями возвращает следующее: nomorepasting.com/getpaste.php?pasteid=22502 Я получаю странные результаты и ошибки при попытке ввода через запятые или точки с запятой, независимо от их включения.

user1253538 05.12.2008 18:05

не могли бы вы привести пример вашего последнего файла CSV и скрипта создания таблицы для таблицы mysql?

Tom Haigh 05.12.2008 18:08

Мне нужно идти, но я сделаю это первым делом в понедельник, спасибо за вашу помощь!

user1253538 05.12.2008 18:15

похоже, теперь он работает с заключением и точкой с запятой. по какой-то причине он не позволяет мне экспортировать с запятыми в качестве разделителя. файл находится в yousendit.com/download/TTZueEVYT2J1Yk1LSkE9PQ. Я получаю сообщение об ошибке из основного файла, но он работает, если я вызываю get_auction отдельно, я не уверен, почему?

user1253538 08.12.2008 14:40

Этот файл не содержит HTML?

Tom Haigh 08.12.2008 15:56

Должно, это основа того, что я сейчас использую? Не во всех записях есть html, ищите <title> или что-то подобное. Вы знаете, почему это половина размера файлов с разделителями табуляцией? Хотя я могу заставить всплывающие окна работать, похоже, что он не отображает полный html, но он отображается с использованием кода из моей второй последней ссылки.

user1253538 08.12.2008 16:28

Проблема, о которой я упоминал выше, похоже, связана с Unicode, поскольку popwindow не имеет символа html, включая и после первого символа unicode, поскольку там, где мой test.php просто повторяется, а не использует json_encode, он просто отображает символы как знаки вопроса или что-то в этом роде.

user1253538 08.12.2008 16:36

Другие вопросы по теме