Comunidad de diseño web y desarrollo en internet online

LoadVars. ¿Hay limitaciones?

Citar            
MensajeEscrito el 03 Feb 2009 06:38 pm
Buenas tardes.

Estoy haciendo un pequeño backoffice o gestor de contenidos y me he encontrado una situación desconcertante. Me bajo un texto guardado en una BD MySQL a traves de la pertinente combinación PHP y loadVars de Actionscript sin ningun problema. El texto que muestro en pantalla tiene una longitud de 3097 caracteres. El problema viene cuando le hago algún cambio (o sin hacer alguno) y lo quiero guardar de nuevo en la base de datos, que no lo hace. Probando, depurando ... he llegado a que parece haber una limitación con la longitud del texto que envio hacia el PHP para guardar en el MySQL. Si el texto tiene más de 1275 caracteres da error y no lo guarda. El codigo Actionscript es...

Código :

var GuardaTexto:LoadVars = new LoadVars();
...
on(release){
   txtAcceso.text="";
   GuardaTexto.VALOR=txtEdicion.text;
   GuardaTexto.NOMBRE_CAMPO=PanelesArray[lstPaneles.selectedItem.data][3];
   GuardaTexto.ORDEN=ORDEN;
   GuardaTexto.sendAndLoad("http://www.mivueb.com/php/GuardarVALOR.php",GuardaTexto, "GET");
}
...
GuardaTexto.onLoad=function (exito){
   if (exito){
      txtAcceso.text=this["estado"];
   }else{
      txtAcceso.text="ERROR EN EL SCRIPT PHP";
   }
}

Donde el txtEdicion.text es textArea que contiene el texto grande.

y el PHP...

Código :

include ("includes/config.php");
include ("includes/funciones.php");
//nos conectamos a mysql
$cnx = conectar ();
//Montamos la SQL
$VALOR=$_GET['VALOR'];
$VALOR=htmlentities(addslashes($VALOR));
$NOMBRE_CAMPO = $_GET['NOMBRE_CAMPO'];
$ORDEN = $_GET['ORDEN'];
$paramSQL = "UPDATE TEXTOS SET VALOR = '".$VALOR."' WHERE NOMBRE_CAMPO = '".$NOMBRE_CAMPO."' AND ORDEN = ".$ORDEN.";";
$res = mysql_query($paramSQL);
if (mysql_errno()) {
        $estado = "estado=Error MySQL ".mysql_errno().": ".substr(mysql_error(),0,40)."...";
}else{ 
        $estado = "estado=".substr($paramSQL,0,13)." REALIZADO CON EXITO";
}
echo $estado;
mysql_close(cnx);
?>

¿Es un problema de limitación de de longitud de texto para subir ó es algo que se me escapa?

Por bosquimano

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Feb 2009 10:46 pm
Hola

Primero hay que saber estos datos sobre las url que procesan los servidores y los navegadores bajo el metodo get
Navegadores

    * Internet Explorer: 2,083 carácteres
    * Firefox: 65, 536 carácteres
    * Safari: 80.000 carácteres
    * Opera: 190.000 carácteres

Servidores

    * Apache: 4,000 carácteres
    * Microsoft Internet Information Server (IIS): 16, 384 carácteres.
    * Perl HTTP::Daemon: 8.000 caracteres.

date cuenta que tu envias por el metodo GET:

Código ActionScript :

GuardaTexto.sendAndLoad("http://www.mivueb.com/php/GuardarVALOR.php",GuardaTexto, "GET");


Por tanto queda un request enorme http://www.mivueb.com/php/GuardarVALOR.php?NOMBRE_CAMPO=dfjsnidfnfdik.... valores muy largos :S prueba enviando por el metodo "POST" y en el php usa $_POST en lugar de $_GET, ademas en la base de datos no uses vchar para el tipo de dato, usa el tipo de dato TEXT, en estos caso es mejor, permite 65000 caracteres.

aqui una nota en la documentacion de loadVars:

El entorno de prueba de Flash siempre utiliza el método GET. Si desea probar el método POST, debe asegurarse de que intenta utilizarlo desde un navegador.


Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 04 Feb 2009 08:08 pm
Muy agradecido LongeVie...

Tanto por el conocimiento aportado, como por la magnifica exposición. Problema resuelto. Procedo a buscarme otro... =)

Por bosquimano

5 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.