проблемы с сохранением текста в базе данных MySQL - PullRequest
1 голос
/ 17 августа 2011

Я использую wysiwyg под названием «whizzywig» для сохранения содержимого в базе данных mysql с использованием php. Проблема в том, что текст не сохраняется правильно, если я использую некоторые форматы, например, полужирный или курсив.

Текст сохранен, но только часть текста. Обычно после изменения формата несколько раз текст после изменения не сохраняется.

Я думаю, что это проблема с кодификацией или что-то в этом роде.

Я использую функции ниже:

Чтобы получить текст: utf8_decode($row['text'])

Для сохранения текста: utf8_encode('text')

Я использую ajax для сохранения текста в базе данных. В соответствии с инструкциями "whizzywig", я должен использовать функцию syncTextarea(), прежде чем забрать даты. Я тоже это делаю.

Я думаю, что это может быть проблема с кодификацией или проблема с "whizzywig".

Это код, в котором я показываю текст из базы данных:

<?
$result = mysql_query("SELECT * FROM noticias order by fecha desc limit $RegistrosAEmpezar, $RegistrosAMostrar");
echo mysql_error($con);
?>
<table>
<?
if(mysql_num_rows($result)==0)
{
    ?> <tr><td colspan="4">No hay noticias en la base de datos</td></tr> <?
}
else
{
    while($row = mysql_fetch_array($result))
      {
          ?>
          <tr><th>Fecha:</th><td><?= $row['fecha'] ?></td><th>Título</th><td><?= $row['titulo'] ?></td></tr>
          <tr><th>Texto:</th><td colspan="3"><?= corta_texto(utf8_decode($row['texto'])) ?></td></tr>
          <tr><td colspan="4"><a href="javascript:eliminar_noticia(<?= $row['id_noticia'] ?>)">Eliminar</a> | <a href="javascript:popUp('sec_admin/not_upd.php?keepThis=true&TB_iframe=true&height=600&width=760&id_noticia=<?= $row['id_noticia'] ?>')">Actualizar</a> | <a href="javascript:popUp('sec_admin/not_det.php?keepThis=true&TB_iframe=true&height=600&width=760&id_noticia=<?= $row['id_noticia'] ?>')">Mostrar</a>

          </td></tr>
          <?
      }  
}
?>

Это форма, которую я заполняю текстом:

<form id="noticias_ins">
<fieldset>
<table>
    <tr><td>
    Título:
    </td><td>
    <input type="text" name="titulo" size="90" />
    </td></tr>
    <tr><td colspan="2">
    Contenido:
    </td></tr>
    <tr><td colspan="2">
    <textarea style="width:100%; height:300px" name="texto"></textarea>
    </td></tr>
    <tr><td colspan="2">
    <input type="button"  value="guardar" onclick="guarda_noticia()" />
    </td></tr>
    </table>
</fieldset>
</form>

Это метод ajax, вызываемый для сохранения текста:

//Guardar noticia
function guarda_noticia(){

//Obtengo form y campos
var form=document.getElementById("noticias_ins");

var titulo=form.elements["titulo"].value;
syncTextarea();
var texto=form.elements["texto"].value;

if( titulo.length==0 || texto.length==0)
{
    document.getElementById("info").innerHTML="Error, el título y el téxto no pueden estar vacios";
document.getElementById("info").style.display='block';
return;
}

xmlhttp_not.onreadystatechange=function()
{
  if (xmlhttp_not.readyState==4 && xmlhttp_not.status==200)
{
    document.getElementById("info").innerHTML=xmlhttp_not.responseText;
document.getElementById("info").style.display='block';
verNoticias(1);
listado_mostrado_not=true;
}
}
//Envío al php para la inserción
syncTextarea();
xmlhttp_not.open("GET","sec_admin/not_ins.php?titulo="+titulo+"&texto="+texto,true);
xmlhttp_not.send();
}

И этот запрос я использую для сохранения данных:

<?
//Listado de noticias
include("../conexion.php");

$titulo=$_GET['titulo'];
$texto=utf8_encode($_GET['texto']);
$fecha=date("Y-m-d H:i:s");

$result = mysql_query("INSERT INTO noticias (fecha, titulo, texto)
VALUES ('".$fecha."', '".$titulo."', '".$texto."')");

if($result)
echo "Se ha insertado correctamente la noticia";
else
echo "Ha habido errores en la inserción de la noticia";

mysql_close($con);

?>

Заранее спасибо.

1 Ответ

1 голос
/ 15 января 2012

Используйте это, чтобы сохранить ваши данные из whizziwig:

$txt = htmlspecialchars($txt, ENT_QUOTES);
$txt = mysql_real_escape_string($txt);

И вам нечего делать, чтобы вернуть данные из базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...