Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Escribir en un textarea a través de una funcion

Estas en el tema de Escribir en un textarea a través de una funcion en el foro de Javascript en Foros del Web. Hola chicos, esperando que se encuentren de maravilla vengo a molestar con una pequeña duda, resulta que necesito escribir en un textarea desde una función ...

  #1 (permalink)  
Antiguo 17/04/2015, 09:21
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Escribir en un textarea a través de una funcion

Hola chicos, esperando que se encuentren de maravilla vengo a molestar con una pequeña duda, resulta que necesito escribir en un textarea desde una función al hacer click en un botón, les dejare un ejemplo para que sea más claro.

imaginemos que:
Código HTML:
Ver original
  1. <textarea rows="x" cols="x">
  2. SELECT Ciudad
  3. FROM Paises
  4. funcionParaEscribir();

y en una tabla tengo la lista de paises por ejemplo:

| Pais | | Boton |

| Holanda | | Agregar |
| Suecia | | Agregar |
| España | | Agregar |
| China | | Agregar |

y el botón por medio del evento "Onclick" llama a la función y esta imprime en el textarea, imaginemos que clickeamos el botón de China, entonces el textarea quedaría como

Código HTML:
Ver original
  1. <textarea rows="x" cols="x">
  2. SELECT Ciudad
  3. FROM Paises
  4. WHERE Pais = China

Espero que se haya entendido y espero que me puedan ayudar :)
  #2 (permalink)  
Antiguo 17/04/2015, 10:28
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: Escribir en un textarea a través de una funcion

¿Pero es de una base de datos real?
  #3 (permalink)  
Antiguo 17/04/2015, 10:47
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Escribir en un textarea a través de una funcion

Cita:
Iniciado por PHPeros Ver Mensaje
¿Pero es de una base de datos real?
Lo que puse es solo un ejemplo, pero si, lo que quiero logar es eliminar varias filas de una base de datos con solo 1 botón, otro ejemplo:

Chile 992
Costa Rica 995
Camerun 993
Croacia 990
Corea 997
(unos 700 paises hacia abajo)

Por ejemplo que elimine todos (los 700+ paises), menos Costa Rica y Chile

sería algo como:

Delete
From Paises
Where codigo >= 100 and codigo <= 997 (imaginemos que el pais inicial es el 100 y el país final es 997 en este caso Corea)
and not 995 (para no eliminar Costa Rica)
and not 992 (Para no eliminar Chile)

entonces lo que yo quiero hacer con ese botón de agregar, es que en un text area escriba el "and not (codigo)" para depués meter ese textarea en una variable para ser usada como query. Esto es una idea loca que se me ocurrio, ya que nunca lo he hecho, y nunca en mi vida he usado javascript, quisas haya otra manera de hacerlo, pero es lo único que se me ocurre u__U
  #4 (permalink)  
Antiguo 17/04/2015, 10:59
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: Escribir en un textarea a través de una funcion

¿Realmente conoces bien los usos y limitaciones de JavaScript?

Eso deberías hacerlo en el lado del servidor, no en el cliente a no ser que utilices una bd local, cosa que no.
  #5 (permalink)  
Antiguo 17/04/2015, 11:06
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Escribir en un textarea a través de una funcion

Cita:
Iniciado por PHPeros Ver Mensaje
¿Realmente conoces bien los usos y limitaciones de JavaScript?

Eso deberías hacerlo en el lado del servidor, no en el cliente a no ser que utilices una bd local, cosa que no.
Pero tiene que existir algún modo de eliminar de una base de datos solo las filas que selecciono, ya que sería convertir esa query que te digo en algun metodo, pero para hacerlo dinamico cosa de agregar lineas a la query solo se me viene a la mente javascript como solución. La solución actual es buscar desde el primer rango hasta el anterior al que no quiero borrar, pero eso me haría realizar 2 busquedas o muchas más, es por eso que quiero implementar algo para eliminar solo filas seleccionadas, y con el "AND NOT" puedo excluir las que no quiero eliminar, tienes alguna sugerencía de como podría hacerse? :(
  #6 (permalink)  
Antiguo 17/04/2015, 11:10
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: Escribir en un textarea a través de una funcion

¿Y cómo piensas conectarte a la base de datos?
  #7 (permalink)  
Antiguo 17/04/2015, 11:12
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Escribir en un textarea a través de una funcion

Cita:
Iniciado por PHPeros Ver Mensaje
¿Y cómo piensas conectarte a la base de datos?
Ya tengo la conexión y todo, actualmente tengo metodos para eliminar filas de 1 en 1 y otro para eliminar todas las filas, pero me falta algo para eliminar todas las filas a exepción de algunas que esten entremedio de la lista, para realizar todo esto utilizo java, jsp y servlets.
  #8 (permalink)  
Antiguo 17/04/2015, 11:16
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Escribir en un textarea a través de una funcion

Sería mejor si pasaras esos valores a una función la cual los envíe a tu archivo JSP y ahí ya ejecutas las sentencias SQL. Podrías tener varias sentencias para diversos casos y en los parámetros, enviarías uno cuyo valor decidirá qué sentencia utilizar.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 17/04/2015, 11:23
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Escribir en un textarea a través de una funcion

Cita:
Iniciado por Alexis88 Ver Mensaje
Sería mejor si pasaras esos valores a una función la cual los envíe a tu archivo JSP y ahí ya ejecutas las sentencias SQL. Podrías tener varias sentencias para diversos casos y en los parámetros, enviarías uno cuyo valor decidirá qué sentencia utilizar.

Saludos
Mira mi app consta de un jsp formulario de busqueda y jsp de resultados, entonces en el JSP de busqueda coloco los rangos y luego en los resultados me crea una tabla con todos los datos entre dichos rangos, entonces necesito eliminarlos, pero hay ocaciones en las que hay filas que no se deben eliminar, entonces para evitar realizar otra busqueda con diferentes rangos lo ideal sería poder seleccionar esa fila para que no sea eliminada.

En el fondo lo que quiero hacer es lo mismo que haces para eliminar tus correos electronicos, seleccionas cuales borrar y listo (Pero en este caso sería al revés, seleccionarias los que NO quieres borrar)
  #10 (permalink)  
Antiguo 17/04/2015, 11:41
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Escribir en un textarea a través de una funcion

¿Y si envías los datos que no deseas eliminar y en la consulta SQL utilizas un NOT IN?

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 20/04/2015, 06:07
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Escribir en un textarea a través de una funcion

Cita:
Iniciado por Alexis88 Ver Mensaje
¿Y si envías los datos que no deseas eliminar y en la consulta SQL utilizas un [URL="http://www.w3resource.com/mysql/comparision-functions-and-operators/not-in.php"][inline]NOT IN[/inline][/URL]?

Saludos
El problema es que las filas que no se eliminan no tienen ningún criterio, no es que tengan un campo que diga "esta se elimina" "esta no se elimina" es por eso que estoy tan complicado con el tema, lo más cercano a un criterio es que "Esta fila se elimina porque si"

  #12 (permalink)  
Antiguo 20/04/2015, 09:30
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Escribir en un textarea a través de una funcion

Empieza preguntándote cómo y por qué es que eliges a los datos que no serán eliminados, así encontrarás el criterio para realizar lo demás.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #13 (permalink)  
Antiguo 20/04/2015, 12:18
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Escribir en un textarea a través de una funcion

Cita:
Iniciado por Alexis88 Ver Mensaje
Empieza preguntándote cómo y por qué es que eliges a los datos que no serán eliminados, así encontrarás el criterio para realizar lo demás.

Saludos
Pregunté y resulta que las filas que se eliminan son solo para tener un margen, por ejemplo tienen 10 filas y eliminan 9, porque solo necesitan 1, el problema es que ellos deciden cuales se quedan y cuales no, yo no tengo manera de saberlo.
  #14 (permalink)  
Antiguo 20/04/2015, 12:57
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Escribir en un textarea a través de una funcion

Si es el usuario el que decide, entonces, permítele ingresar los valores necesarios, solo que él verá nombres y no identificadores.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #15 (permalink)  
Antiguo 21/04/2015, 06:07
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Escribir en un textarea a través de una funcion

Cita:
Iniciado por Alexis88 Ver Mensaje
Si es el usuario el que decide, entonces, permítele ingresar los valores necesarios, solo que él verá nombres y no identificadores.

Saludos
Resulta que el usuario solo recibe las fechas de las filas que hay que eliminar, y estas llegan a ser desde 300 hasta 700, por lo que ellos buscan entre rangos de fechas y realizan el eliminado, pero hay ocaciones en las que hay filas con fechas que no deben ser eliminadas, así que ellos buscan desde una fecha hasta esa fecha que no hay que eliminar, entonces eso genera que realicen más de una busqueda.

un ejemplo muy sencillo.
  • Desde arriba envían 300 fechas.
  • El usuario ingresa la query de busqueda con los siguientes datos:
  • Where fecha > 25-03-2012 and fecha < 12-05-2012
  • Se listan las fechas
  • El usuario se percata de que la fecha "22-04-2012" no debe ser eliminada.
  • Debido a ese problema se realiza una busqueda con otros valores
  • Where fecha > 25-03-2012 and fecha < 22-04-2012
  • Se eliminan dichas fechas
  • Se realiza denuevo una busqueda
  • Where fecha > 25-03-2012 and fecha < 12-05-2012
  • Ahora resulta que hay otra fecha entremedio que no debe ser eliminada

Y bueno, eso genera una gran cantidad de busquedas, por lo que se vuelve algo realmente latero y agotador.
  #16 (permalink)  
Antiguo 21/04/2015, 07:38
 
Fecha de Ingreso: abril-2015
Mensajes: 24
Antigüedad: 9 años
Puntos: 1
Respuesta: Escribir en un textarea a través de una funcion

Hola.

Añadir texto en un textarea es fácil.

Para empezar tendrías que simplificar la lista. ¿Porqué colocar un botón de agregar?.

| Holanda | | Agregar |
| Suecia | | Agregar |
| España | | Agregar |
| China | | Agregar |

Coloca el nombre del país en el botón con el país que corresponda y ya está.

<input type=button value=Holanda><input type=button value=Suecia> etc....

Para seguir realiza una función que sume el valor previo del textarea al del botón, caso de pulsarlo.

//creamos la variable pais cuyo valor cambiará según el botón que pulsemos.
var pais=0

function anadir(){

nombreformulario.nombretextarea.value=nombreformul ario.nombretextarea.value+pais;

}

Las etiquetas de los "inputs" les añadiremos los onclicks respectivos, modificando el valor del país y ejecutando acto seguido la función.

<input type=button value=Holanda onclick="pais='Holanda';anadir()"><input type=button value=Suecia onclick="pais='Suecia';anadir()"> etc....

Debes poner un nombre al formulario, ya que salvo que utilices Internet Explorer, otros navegadores te van a responder que los nombres de campo carecen de argumento.

<body><form name=elquequieras></form>

Si al Textarea le llamas "pepito":

<textarea name="pepito" rows="2" cols="55" value='' readonly>

la función completa quedaría así:

var pais=0

function anadir(){

elquequieras.pepito.value=elquequieras.pepito.valu e+pais;

}

Y si quieres que los nombres no salgan pegados los unos con los otros, deberás añadir un espacio en entre nombre y nombre añadido en el modo siguiente.

elquequieras.pepito.value=elquequieras.pepito.valu e+' '+pais;
  #17 (permalink)  
Antiguo 21/04/2015, 08:37
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Escribir en un textarea a través de una funcion

Permitanme la intrusión, estas complicando mucho mucho (demasiado) lo que de por si es sencillo.

Vamos por partes:
Mediante un formulario con dos input type="date" le pides al usuario que ingrese dos fechas (desde/hasta) respectivamente, por ejemplo 25-03-2012 y 12-05-2012.

NOTA AL MARGEN: ¿Notaron que para escribir la palabra "DESDE" hacemos un circulo con el dedo sobre el teclado? XD

Bueno, esos dos datos se lo envías al servidor y este arma una query de este estilo:
Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE fecha BETWEEN {fecha_desde} AND {fecha_hasta}
la ejecuta y devuelve el resultado, dicho resultado lo muestras en una grilla/tabla por pantalla, todos los registros que te retorne, en cada fila pones un input type="checkbox" (por defecto desmarcado) que indique si esa fila no se debe borrar, si por ejemplo, el usuario se percata que la fecha 22-04-2012 no hay que borrarla, marca este casillero.

Luego, abajo de todo tienes un boton que diga "BORRAR LOS NO SELECCIONADOS", esto lo que hace es enviar al servidor los datos de fecha (desde/hasta) y los de todos los checkbox marcados.

El servidor arma una query como esta:
Código MySQL:
Ver original
  1. DELETE FROM tabla WHERE fecha BETWEEN {fecha_desde} AND {fecha_hasta} AND fecha NOT IN ({fechas_checkbox_separadas_por_coma})

Y listo problema resuelto, solo haces dos querys, una para leer y otra para borrar, el usuario no escribe sql en ningun lado, opera visualmente sobre los datos.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #18 (permalink)  
Antiguo 21/04/2015, 11:21
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Escribir en un textarea a través de una funcion

Cita:
Iniciado por Alexis Ver Mensaje
¿Y si envías los datos que no deseas eliminar y en la consulta SQL utilizas un NOT IN?
Oshho, te lo dije.

Buena, Nehuen.

Por cierto, creo que al escribir DESDE, se forman dos vectores que, a su vez, forman un ángulo obtuso. Al menos así lo veo yo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #19 (permalink)  
Antiguo 21/04/2015, 11:59
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Escribir en un textarea a través de una funcion

Cita:
Iniciado por NSD Ver Mensaje
en cada fila pones un input type="checkbox" (por defecto desmarcado) que indique si esa fila no se debe borrar, si por ejemplo, el usuario se percata que la fecha 22-04-2012 no hay que borrarla, marca este casillero.

Luego, abajo de todo tienes un boton que diga "BORRAR LOS NO SELECCIONADOS", esto lo que hace es enviar al servidor los datos de fecha (desde/hasta) y los de todos los checkbox marcados.

El servidor arma una query como esta:
Código MySQL:
Ver original
  1. DELETE FROM tabla WHERE fecha BETWEEN {fecha_desde} AND {fecha_hasta} AND fecha NOT IN ({fechas_checkbox_separadas_por_coma})

Y listo problema resuelto, solo haces dos querys, una para leer y otra para borrar, el usuario no escribe sql en ningun lado, opera visualmente sobre los datos.
Muchas gracias por la respuesta amigo, bueno eso es exactamente lo que quiero lograr y lo primero en lo que pensé, pero tristemente no tengo idea como hacerlo, no se como ingresar a la Query el valor obtenido por el checkbox, ni como separar los valores con "comas", si pudieras iluminarme con ese conocimiento te lo agradecería enormemente :(
  #20 (permalink)  
Antiguo 21/04/2015, 12:17
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Escribir en un textarea a través de una funcion

Crea un array de checkbox.

Código HTML:
Ver original
  1. <input type = "checkbox" name = "ejemplo[]" value = "4674" />
  2. <input type = "checkbox" name = "ejemplo[]" value = "2342" />
  3. <input type = "checkbox" name = "ejemplo[]" value = "5345" />

Y cuando envíes los datos del formulario, tendrás un array solo con los valores marcados en $_POST['ejemplo'], luego, los unes con comas usando la función implode y, finalmente, armas tu consulta.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #21 (permalink)  
Antiguo 22/04/2015, 08:20
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Escribir en un textarea a través de una funcion

Cita:
Iniciado por Alexis88 Ver Mensaje
Crea un array de checkbox.

Código HTML:
Ver original
  1. <input type = "checkbox" name = "ejemplo[]" value = "4674" />
  2. <input type = "checkbox" name = "ejemplo[]" value = "2342" />
  3. <input type = "checkbox" name = "ejemplo[]" value = "5345" />

Y cuando envíes los datos del formulario, tendrás un array solo con los valores marcados en $_POST['ejemplo'], luego, los unes con comas usando la función implode y, finalmente, armas tu consulta.

Saludos
Gracias por el dato Alexis :) hice el input dentro del ciclo, supongo que se creo el array y bueno como he dicho antes, no se nada de javascript, y mucho menos de PHP por lo que nisiquiera se como imprimir los valores del array.
al final el codigo del td teminó así.
Código HTML:
Ver original
  1. <td><input type="checkbox" name="chkFilas[]" value="<%= lista.getID() %>"</td>

Por lo que debería crear el array con los valores de las ID unicas de cada fila, ¿no?
  #22 (permalink)  
Antiguo 22/04/2015, 09:46
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Escribir en un textarea a través de una funcion

¿Estás trabajando con PHP o con JSP? Porque para imprimir en PHP —que es el lenguaje que mencionas—, se imprime así <?php echo $variable; ?> o así <?=$variable?> (si usas una versión anterior a PHP 5.4.0, debes asegurarte que la directiva short_open_tag se encuentre activada en el archivo php.ini).

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #23 (permalink)  
Antiguo 22/04/2015, 09:52
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Escribir en un textarea a través de una funcion

Ouch, justo estaba editando el post ha ha ha ha, Alexis estoy usando JSP



Cita:
Iniciado por Alexis88 Ver Mensaje
Crea un array de checkbox.

Código HTML:
Ver original
  1. <input type = "checkbox" name = "ejemplo[]" value = "4674" />
  2. <input type = "checkbox" name = "ejemplo[]" value = "2342" />
  3. <input type = "checkbox" name = "ejemplo[]" value = "5345" />

Y cuando envíes los datos del formulario, tendrás un array solo con los valores marcados en $_POST['ejemplo'], luego, los unes con comas usando la función implode y, finalmente, armas tu consulta.

Saludos
Gracias por el dato Alexis :) hice el input dentro del ciclo, supongo que se creo el array y bueno como he dicho antes, no se nada de javascript, y mucho menos de PHP por lo que nisiquiera se como imprimir los valores del array.
al final el codigo del td teminó así.
Código HTML:
Ver original
  1. <td><input type="checkbox" name="chkFilas[]" value="<%= lista.getID() %>"</td>


EDIT: Uffff luego de horas de meter manos, logré crear la cadena con los valores, utilicé la siguiente funcion:
Código Javascript:
Ver original
  1. var filasCheck = "";
  2.                 function crearCadena(){
  3.                 filasCheck = "";
  4.                 $('input[name="chkFilas[]"]:checked').each(function() {
  5.                 filasCheck += $(this).val() + ",";
  6.                 });
  7.                 //eliminamos la última coma.
  8.                 filasCheck = filasCheck.substring(0, filasCheck.length-1);
  9.                 }

Y la funcion es llamada por medio del evento "onChange" del checkbox :D!!!!

Ahora tengo que guardar esa cadena en una variable utilizando servlets, para llamar al metodo, espero que me resulte xd
  #24 (permalink)  
Antiguo 22/04/2015, 11:12
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Escribir en un textarea a través de una funcion

Si envías los datos del formulario sin intervención de JavaScript, los datos de los checkbox marcados se enviarían automáticamente, llegando un array de ellos y con la función join de JSP, los unirías con comas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #25 (permalink)  
Antiguo 22/04/2015, 11:14
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Escribir en un textarea a través de una funcion

Ahora tengo el problema final haha, resulta que al hacer la consulta, la cadena que contiene los valores de los checkboxs se guardan con comillas simples, y eso arruina la consulta.

me queda así.
Código SQL:
Ver original
  1. DELETE FROM Tabla WHERE fecha >= fecha_desde  AND fecha <= fecha_hasta
  2. AND fecha NOT IN('fecha1,fecha2,fecha3')

y debería ser así:
Código SQL:
Ver original
  1. DELETE FROM Tabla WHERE fecha >= fecha_desde  AND fecha <= fecha_hasta
  2. AND fecha NOT IN(fecha1,fecha2,fecha3)

¿Alguien sabe como puedo quitar las molestas comillas simples?

La consulta la hago dentro de un metodo java el cual es el siguiente:
Código Java:
Ver original
  1. String query = "DELETE FROM Tabla "+
  2.                       + "WHERE fecha >= ? and fecha  <= ? "
  3.                       + "AND StartTimeUTC NOT IN(?)";
  4.             PreparedStatement eliminar = conexion.prepareStatement(query);
  5.             eliminar.setInt(1, fecha_desde);
  6.             eliminar.setInt(2, fecha_hasta);
  7.             eliminar.setString(3, cadena);
  8.             eliminar.execute();
  9.             return true;
  #26 (permalink)  
Antiguo 22/04/2015, 19:29
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Escribir en un textarea a través de una funcion

El problema no son las comillas simples, el problema es de concepto.

Tanto IN como NOT IN no reciben un único valor sino un conjunto de valores.
No puedes poner IN(?) porque dentro del IN van N elementos, es decir, lo correcto seria poner NOT IN (?, ... ,?) donde los puntos suspensivos representan a los N signos de interrogacion.

En el momento que armas la query para preparar debes poner tantos signos de pregunta como valores tengas, luego cuando vas a enlazar los parametros, debes enlazar tantos como tengas.
En este caso particular "join" no te sirve de nada, lo que necesitas es algo parecido al str_repeat de php, no recuerdo si hay alguno en jsp nativo que haga esto, sino puedes construirlo fácilmente con un for.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #27 (permalink)  
Antiguo 22/04/2015, 23:43
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Escribir en un textarea a través de una funcion

En este caso en el que la consulta es parametrizada (no sabía que lo era), en efecto, no tiene sentido usar la función join. Creo que en JSP no hay una función equivalente a la que menciona NSD, así que —como también te lo mencionan— una estructura repetitiva será suficiente.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #28 (permalink)  
Antiguo 23/04/2015, 09:27
Avatar de oshho  
Fecha de Ingreso: marzo-2015
Mensajes: 40
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Escribir en un textarea a través de una funcion

Para nada chicos, me sirvió perfectamente :D!!

Puedo eliminar las filas que tengo seleccionadas sin ningún problema, la query la hice de esta manera:
Código Java:
Ver original
  1. String query = "DELETE FROM Tabla "+
  2.                       + "WHERE fecha >= ? and fecha  <= ? "
  3.                       + "AND fecha IN("+cadena+")";
  4.             PreparedStatement eliminar = conexion.prepareStatement(query);
  5.             eliminar.setInt(1, fecha_desde);
  6.             eliminar.setInt(2, fecha_hasta);
  7.             eliminar.execute();
  8.             return true;

Marco el tema como solucionado y desde ya muchisimas gracias a todos los que participaron en este problema hahaha, hasta pronto :)
  #29 (permalink)  
Antiguo 23/04/2015, 09:42
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Escribir en un textarea a través de una funcion

Creo que NSD se refería a los signos de interrogación dentro del NOT IN, pero en fin, ya está funcionando y eso es bueno.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #30 (permalink)  
Antiguo 23/04/2015, 10:46
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Escribir en un textarea a través de una funcion

¡NO! ¡Ojo! ¡Cuidado! ¡Peligro!
¿Cual es el sentido de usar sentencias preparadas si le vas a harcodear los parámetros?
Las sentencias preparadas son una herramienta de seguridad y dicha seguridad no se logra enlazando la mitad de los parámetros y harcodeando la otra mitad, no tiene ningún sentido hacer eso.

Primero pensé que no usabas sentencias preparadas, por tal motivo sugerí (ya alexis lo había mencionado) el join, pero luego, al ver que usabas sentencias preparadas asumí que conocías el concepto y la importancia de esta practica, que por lo visto desconoces.

Cuando preparas una sentencia lo que haces es aislar la funcionalidad que buscas de los parametros necesarios para llevarla a cabo, la funcionalidad la defines tu como profesional de sistemas, pero los parámetros los define el usuario, si un usuario, por el motivo que sea, puede alterar una funcionalidad hay un buco de seguridad.

Es importante (clave, central, vital) que no harcodees una sentencia preparada, esfuérzate un poco, solo son 6 renglones mas, y agrega tantos signos de interrogación como sea necesario y luego enlaza los parametros pertinentes.

Asi como estas ahora, tu sistema es vulnerable a ataques de inyección sql el mas trillado de todos los ataques conocidos y el mas fácil de prevenir.
El año paso abri un tema sobre esto, no es algo menor lo que estas pasando por alto.

Saludos.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Etiquetas: funcion, select, textarea
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 05:53.