Foros del Web » Programando para Internet » PHP »

Controlar textarea antes de insertar

Estas en el tema de Controlar textarea antes de insertar en el foro de PHP en Foros del Web. Hola a todos: Tengo un formulario de introduccion de datos en una BD que incluye varios campos de texto que el usuario introduce en un ...
  #1 (permalink)  
Antiguo 26/05/2003, 06:09
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 22 años, 5 meses
Puntos: 0
Controlar textarea antes de insertar

Hola a todos:

Tengo un formulario de introduccion de datos en una BD que incluye varios campos de texto que el usuario introduce en un textarea.

Mi problema es controlar el numero de caracteres por linea y si ha introducido o no un salto de linea. Me explico: el espacio de que dispongo es muy limitado y solo se pueden introducir dos lineas de un maximo aproximado de unos 40 caracteres por linea.

Ya controlo y sustituyo el salto de linea por un <br> para mostrar el texto, pero es mucho suponer que el usuario va a introducir justo dos lineas de 40 caracteres o menos, y un unico salto de linea entre ellas.

En caso de que no sea asi, a la mierda las tablas...

He visto mensajes por aqui que recurren al JS para solucionar parcialmente este problema, pero tambien que se puede controlar con PHP de manera muuuy sencilla.

¿Alguna idea?

gracias con antelacion
__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.


Última edición por sgafo; 26/05/2003 a las 06:13
  #2 (permalink)  
Antiguo 26/05/2003, 08:39
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Primero, pasa tu cadena a array "cortando" por los saltos de línea:

$cadena = explode("\n", $cadena);

Luego, verifica que haya sólo 1 o 2 líneas:

for ($i=0; count($cadena) < 2; $i++) {

Después, verifica que cada cadena tenga 40 caracteres o menos:

if (strlen($cadena[i]) <= 40) {

Finalmente, junta las líneas de la cadena:

$nuevacadena .= $cadena[i];

Acaba los ifs y muestra los errores que necesites.
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 26/05/2003, 08:43
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 22 años, 5 meses
Puntos: 0
no estaba enfocando la solucion de esa manera pero lo probare....

gracias Cain
__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.

  #4 (permalink)  
Antiguo 26/05/2003, 08:47
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
De nada.

Y no se me ocurre otra forma de validar eso de las 2 líneas con un salto de carro de otro modo
__________________
M a l d i t o F r i k i
  #5 (permalink)  
Antiguo 26/05/2003, 08:57
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 22 años, 5 meses
Puntos: 0
el problema es dar por supuesto que se van a insertar dos lineas con un salto...

dada la informacion actual es posible que sea asi, pero en el caso de que no lo sea he de controlar que tenga el doble de caracteres y definir la celda con un tamaño fijo

todo sea que no me encuentre de repente con una chapuza del 15... grrrrrrrrrrrrrrrr
__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.

  #6 (permalink)  
Antiguo 26/05/2003, 09:00
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
El caso es ir jugando con los segmentos. Tu ves haciendo pruebas y ya verás como al final te sale.

Ánimo
__________________
M a l d i t o F r i k i
  #7 (permalink)  
Antiguo 26/05/2003, 09:31
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 22 años, 5 meses
Puntos: 0
jejeje... ok

sino, miro tu avatar y ya me rio un rato...
__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.

  #8 (permalink)  
Antiguo 26/05/2003, 16:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
PHP disponde de la función:

wordwrap()
http://www.php.net/manual/en/function.wordwrap.php

Con eso puedes insertar un salto de línea (sea \n o <br> según corresponda el médio donde muestres esa información (en HTML o en un texto plano/mail/<textarea> ...).

Lo de detectar el salto de línea . ya te lo ha comentado Cain más o menos.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 26/05/2003, 16:38
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 22 años, 5 meses
Puntos: 0
Insertar el salto de linea no es el problema, pero muchas gracias por la informacion...

desconozco demasiadas cosas de PHP

__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.

  #10 (permalink)  
Antiguo 27/05/2003, 01:57
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Aquí podrás ilustrarte sobre el Noble Arte del Desarrollo PHP: http://www.php.net
__________________
M a l d i t o F r i k i
  #11 (permalink)  
Antiguo 27/05/2003, 02:05
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 22 años, 5 meses
Puntos: 0
¿y tambien me enseñan ingles?

se intentara, se intentara...
__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.

  #12 (permalink)  
Antiguo 27/05/2003, 02:14
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
El manual está parcialmente traducido al español. Toda la parte iniciática está traducida, sólo faltan algunas librerías.
__________________
M a l d i t o F r i k i
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 19:26.