在 mysql 数据库中保存 Whizzywig 文本时出现问题

发布于 2024-11-29 20:51:29 字数 3852 浏览 0 评论 0原文

我正在使用一个名为“whizzywig”的所见即所得,以便使用 php 将内容保存在 mysql 数据库中。问题是,如果我有时使用某些格式(例如粗体或斜体),文本将无法正确保存。

文本已保存,但只是一段文本。通常,在多次更改格式后,更改后的文本不会保存。

我认为这是编纂或类似问题。

我使用以下函数:

要获取文本: 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);

?>

预先感谢。

I'm using a wysiwyg called "whizzywig" in order to save contents in a mysql database using php. The problem is that the text doesn't save right if I use some formats like bold or italic sometimes.

The text is saved but only a piece of text. Usually after changing the format several times the text after a change is not saved.

I think is a problem with the codification or something like that.

I use the functions below:

To fetch the text: utf8_decode($row['text'])

To save the text: utf8_encode('text')

I use ajax to save the text in the database. According to the "whizzywig" instructions I have to use the function syncTextarea() before pick up the dates. I do it too.

I think it could be a problem with the codification or maybe a problem with "whizzywig".

This is the code where I show the text from the database:

<?
$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>
          <?
      }  
}
?>

This is the form I fill with the text:

<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>

This is the ajax method called in order to save the text:

//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();
}

And this is the query I use to save the data:

<?
//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);

?>

Thanks beforehand.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

油饼 2024-12-06 20:51:29

使用它来保存来自whizziwig的数据:

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

并且您无需执行任何操作即可从数据库中取回数据。

Use this to save your data from whizziwig :

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

And you have nothing to do to get back data from database.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文