Foros del Web » Programando para Internet » PHP »

Ayuda con script... ya no se me ocurre solucion!!! (incluye screenshot con error)

Estas en el tema de Ayuda con script... ya no se me ocurre solucion!!! (incluye screenshot con error) en el foro de PHP en Foros del Web. Hola a todos. Mi problema es con un TEXTAREA (no es el problema de los <br>!) Por favor ver imagen: Veran que tengo un TEXTAREA ...
  #1 (permalink)  
Antiguo 13/08/2005, 00:30
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Ayuda con script... ya no se me ocurre solucion!!! (incluye screenshot con error)

Hola a todos.

Mi problema es con un TEXTAREA (no es el problema de los <br>!)

Por favor ver imagen:



Veran que tengo un TEXTAREA de 430px, donde el usuario ingresa texto.

Ese texto, se captura mediante un script de PHP en $string, asegurandose de que los /n se interpreten como <br> (saltos de linea) con "$string = nl2br($string);"

Una vez hecho esto, el script colocara un comentario en la web.

Sobre el TEXTAREA de 430px habra un cuadro de exactamente la misma medida (430px) a donde se mostrara el $string. La idea es que el texto de $string quede DENTRO del cuadro, pero si el usuario al escribir dentro del TEXTAREA typea letras sin darle al ENTER, al llegar al limite derecho del TEXTAREA aparecera un SCROLL HORIZONTAL, permitiendole escribir cuantos caracteres quiera de forma linea, es decir, sin "New Line".

Veran esto mismo en la imagen... el problema es que cuando esto sucede, el script procesa el texto y al colocar el mensaje no existe ningun "new line", y el texto ingresado DESBORDA el cuadro, quedando esteticamente HORRIBLE... toda la linea excedida fuera del cuadro...

Sinceramente... probe todo... hasta progra dentro del script mil formas de automaticamente colocar los \n cada X cantidad de caracteres, pero no lo puedo solucionar aun asi.... GOOGLE solo me muestra a gente desesperada a la q en otros foros le responden "No hay solucion", pero a la vez veo sitios en los q esto no pasa.


CUALQUIER AYUDA SERA EXTREMADAMENTE UTIL !!!!!!!!

10000000000000000000000000 GRACIAS.
  #2 (permalink)  
Antiguo 13/08/2005, 06:23
 
Fecha de Ingreso: junio-2005
Mensajes: 28
Antigüedad: 12 años, 5 meses
Puntos: 0
Bueno, se me ha ocurrido una forma que vamos a improvisar y ver si funciona. Decirte, que no he probado este metodo, pero puede que funcione.

La cosa sería:

Sabemos que tamaño tiene el cuadro 430px, tambien debieramos saber que tamaño tienen los bordes (si es que tiene, p.ej: 5px). Tambien sabemos que el tamaño del texto es de p.ej 10px.

Vamos alla. El tamaño efectivo del del cuadro se nos queda en 420px (430-5-5). Bien, pues ahora sabemos que en cada linea nos entran 420/10=42 caracteres. Ahora debieramos comprobar que en cada linea vamos a escribir 42 caracteres o menos y sino, pues le metemos un salto de linea. Facil no?? Si tienes alguna pega, ya te escribo el codigo.


Un saludo.
  #3 (permalink)  
Antiguo 13/08/2005, 08:02
Avatar de MarioNunes  
Fecha de Ingreso: agosto-2005
Mensajes: 280
Antigüedad: 12 años, 4 meses
Puntos: 1
Buenas,

Igual el contenido de este post te puede ser de ayuda.

http://www.forosdelweb.com/showthrea...highlight=wrap

Un saludo.
__________________
www.pensandoenred.com
  #4 (permalink)  
Antiguo 14/08/2005, 15:59
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
MarioNunes: Gracias por el link a los foros, ya los habia leido y no obtuve solucion de ellos.

Terror_Zine: Hola, gracias por tu respuesta... estoy trabajando en un script que haga eso mismo, a mi en un principio se me habia ocurrido mas bien lo siguiente:

(en cada linea entran 54 caracteres)

$comentario = $_POST['comentario'];

for ($i = 0; $i < strlen($comentario); $i++) {
if ($i == 54) {
$start = substr($comentario, 0, $i);
$ancla = $i;
}
}

$end = substr($comentario, $ancla, $i);

$comentario = $start;
$comentario.= "\n";
$comentario.= $end;

$comentario = nl2br($comentario);

Con esto logro controlar que la primera linea tenga un "\n", ahora estoy viendo como lo
hago seguir "girando" entre el resto de caracteres buscando los proximos 54.

Se te ocurre alguna forma mas optima para hacerlo?

Muchas gracias por tu ayuda !
  #5 (permalink)  
Antiguo 14/08/2005, 18:20
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
hmm.. no se, modifique este script varias veces, e incluso genere otros mejores y mas simples... pero siempre algo queda mal. Ya me siento en una burbuja de incertidumbre... ¿como hacen en los foros como este para ingresar texto en ESTOS textarea y que salga perfecto? no se q hacer me parece q me voy a poner a llorar en un rinconsito de mi estudio a ver si alguna idea se me biene :P
Saludos y gracias nuevamente por la ayuda.
  #6 (permalink)  
Antiguo 15/08/2005, 18:11
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
S O L U C I O N A D O:

La solucion no requeria de ningun script engorroso... EXISTE una funcion que hace ese trabajo y se llama "Word Wrap" (Ver manual).

El codigo quedo simplemente asi: $comentario = $_POST['comentario'];

/*
// Compruebo que $comentario no tenga mas de 60 chars sin un espacio
if(strlen($comentario) > 60) {
$comentario = wordwrap($comentario,60,"<br>",1);
}

// Me aseguro de no parsear posible HTML incluido en el commentario
$comentario = htmlentities($comentario);

// Paso los NL a <BR> en el comentario
$comentario = nl2br($comentario);

*/


Thats all...

Gracias, saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:21.