Foros del Web » Programando para Internet » Javascript »

Problemas con TextArea

Estas en el tema de Problemas con TextArea en el foro de Javascript en Foros del Web. Hola, tengo un formulario el cual, una vez que le ingreso datos, le hago un Submit. Al hacerle submit, el formulario recae sobre si mismo ...
  #1 (permalink)  
Antiguo 08/07/2005, 00:44
 
Fecha de Ingreso: enero-2004
Mensajes: 77
Antigüedad: 20 años, 3 meses
Puntos: 0
Problemas con TextArea

Hola, tengo un formulario el cual, una vez que le ingreso datos, le hago un Submit. Al hacerle submit, el formulario recae sobre si mismo es decir

pagina1.php
<form method="get" name="formulario" action="pagina1.php">
<input type="text" name="Nombre">
<input type="text" name="edad">
<TEXTAREA NAME="Opinion" ROWS="4" COLS="30"></TEXTAREA>
<input type="button" name="guardar" value="Guardar" onclick="Validar
(this.value);">
<input type="hidden" name="Boton">
</form>

Cuando presiono el botón me lleva a una función Javascript que al validar los campos que no sean vacío ni no numéricos en el caso de la edad me Submitea el formulario y le asigna el nombre del botón, en este caso "GUARDAR" al campo oculto "Boton", y luego caerán las variables más abajo en el código php.

<?
Recibe_Variables()
{
$Nombre = $_GET['Nombre'];
$Edad = $_GET['Edad'];
$Opinion = $_GET['Opinion'];
}

//Hasta aquí todo bien Luego validaré qué el botón sea Guardar, Eliminar, Buscar, etc. y entrará al trozo de código que le corresponde según el valor del botón.

if (isset($_GET['Boton'])) //pregunto si existe algo llamado botón
{
$Boton = $_GET['Boton'];

if ($Boton == 'Guardar')
{
//Realizo toda la operación de inserción, pero una vez que insertó, mando un mensaje en Javascript, que ya ha sido guardado el formulario, pero se me borran todos los campos, y yo quiero que queden puestos, para lo cual los recargo con otra función

<script>
carga_datos("<?=$Nombre;?>","<?=$Edad;?>","<?=$Opi nion;?>");
</script>

?>

La función Javascript estará más arriba, y será

function carga_datos(Nombre,Edad,Opinion)
{
document.formulario.Nombre.value = Nombre;
document.formulario.Edad.value = Edad;
document.formulario.Opinion.value = Opinion;
}

Todo esto me funciona perfecto, siempre y cuando en el campo TEXTAREA no haya apretado un ENTER. Si no presiono ENTER para bajar una línea en el TEXTAREA está todo ok, pero si lo presiono para bajar una línea, al recargar me da un error de CONSTANTE DE CADENA SIN TERMINAR. Alguien sabe por que sucede?, hay que darle trato especial para recargar un TEXTAREA o asingarle un valor con Javascript?
  #2 (permalink)  
Antiguo 08/07/2005, 01:41
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Puedes poner en los campos lo siguiente (y pasas de la función JS):

Código PHP:
<form method="get" name="formulario" action="pagina1.php">
<input type="text" name="Nombre" value="<?=$_GET['Nombre'];?>">
<input type="text" name="edad" value="<?=$_GET['edad'];?>">
<TEXTAREA NAME="Opinion" ROWS="4" COLS="30" value="<?=$_GET['Opinion'];?>"></TEXTAREA>
<input type="button" name="guardar" value="Guardar" onclick="Validar
(this.value);">
<input type="hidden" name="Boton">
</form>
Si no hay ningún valor no pondrá nada, pero si lo hay sí lo pondrá.

Por otra parte te recomiendo para estas cosas usar el método Post en vez del Get. La referencia a lo enviado en php sería, como ya sabrás, $_POST[] en vez de $_GET[].

Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 08/07/2005, 18:47
 
Fecha de Ingreso: enero-2004
Mensajes: 77
Antigüedad: 20 años, 3 meses
Puntos: 0
Hola. Me sirvió tu respuesta, pero sólo a medias.

En la sección de código "GUARDAR" me sirvió tomar los datos que se habían enviado y volverlos a poner, y ningun problema al darle el value en el Text Area.

El problema estaría en la sección BUSCAR, porque ahí tengo que según un número de folio, buscar en la base de datos, y entregar el resto de los datos en pantalla, pero sobre los mismos componentes. Así me veo obligado a entregarle un valor al campo Text Area, y con una función javascript.

Pero como dije antes, cuando en el Text Area no se ha apretado ningún ENTER, la función javascript, funciona de maravillas, pero si le doy un Enter, inmediatamente me reclama con el error "CONSTANTE DE CADENA SIN TERMINAR".

Help Me please.
  #4 (permalink)  
Antiguo 09/07/2005, 13:07
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Creo que te has empeñado en usar un javascript en algo que no es necesario.

Para hacer una consulta a la base de datos no hace falta un JS. No te he entendido, me lo puedes explicar un poco más?
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #5 (permalink)  
Antiguo 09/07/2005, 13:14
 
Fecha de Ingreso: enero-2004
Mensajes: 77
Antigüedad: 20 años, 3 meses
Puntos: 0
Lo que sucede es que estoy usando un mismo formulario para todo, cosa que sea más cómodo, en vez de un ir y venir de páginas sin sentido y engorroso para el usuario.

Entonces en el mismo formulario voy a tener todos los botones, y la página se recargará sobre si misma.

Por lo tanto, como dije antes en el GUARDAR me puede servir el darle el value a cada uno de los campos con el $_GET[] que le corresponda, ya que habré ingresado todos los campos y simplemente se recargarán con el mismo valor enviado.

Pero cuando yo quiera BUSCAR algo, necesito que sobre los mismos campos del formulario se recarguen los datos, para evitarme estar haciendo una ida a una página solo para mostrar. Además al recargar sobre los mismos campos, tengo la opción inmediata de modifcar algún valor que no me agrade con el botón MODIFICAR.

Por lo tanto claro, consultaré a la base según un número entregado por el usuario, y un año, y entonces haré la consulta dandole a variables PHP los resultados. Pero para que me aparezcan en pantalla, necesito que los campos del formulario, ya sean input, select, textarea o demases tomen el valor de las variables php. Hasta ahora lo he hecho, simplemente llamando una función javascript desde el php, y entregandole las variables, para que luego la función javascript me recargue los componentes con los tipicos document.form.componente.value = variable;.

Si hubiese una función php que me pueda recargar valores sobre el formulario, pero una vez que ya se cargó el formulario sería perfecto.
  #6 (permalink)  
Antiguo 09/07/2005, 13:30
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Pues puedes aprovechar el valor de la variable botón haciendo lo siguiente en el text area:
<TEXTAREA NAME="Opinion" ROWS="4" COLS="30">
<?if($_GET['boton']=="GUARDAR"){
echo $_GET['Opinion'];
}
else{
echo $dato['opinion'];
}
?>
</textarea>

Siendo dato el array donde guardas los datos de la consulta. Como ves se puede hacer con PHP sin usar Javascript.
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #7 (permalink)  
Antiguo 09/07/2005, 14:45
 
Fecha de Ingreso: enero-2004
Mensajes: 77
Antigüedad: 20 años, 3 meses
Puntos: 0
Nop, la verdad el problema no lo tengo cuando el botón es igual a guardar, sino que mis problemas empiezan cuando es = BUSCAR.

Cuando guardo es util ponerle al text area un value con $_GET, pero cuando busco algo, no cargo todos los componentes del formulario, sino que busco por ejemplo con un número de folio:

<input type="Text" name="Numero">
<input type="Text" name="Nombre">
<input type="Text" name="Edad">
<TEXTAREA NAME="Opinion" ROWS="4" COLS="30"></TEXTAREA>
<input type="hidden" name="boton">
<input type="button" name="Guardar">
<input type="button" name="Buscar">
<input type="button" name="Modificar">
<input type="button" name="Eliminar">

Entonces una vez que apreto Guardar, claro al recargarse todos los valores que ingresé se volverán a poner donde corresponden, Número, Nombre, Edad y TextArea.

No así, cuando yo haga una búsqueda, pues solo buscaré con el número, por lo tanto no tiene sentido que recargue con un $_GET puesto que no he ingresado nada más que el número. Por lo tanto la próxima vez que se recargue la página volverá con el número, entrará en la sección BUSCAR, y dentro de ahí, se ejecutará el SQL que me rescate el resto de los valores, como Nombre, Edad y Opinion. Una vez allí, y sólo allí deberé darle el valor a los componentes con las variables Php, es decir, tengo que si o si usar una función javascript.
  #8 (permalink)  
Antiguo 09/07/2005, 14:55
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Si te interesas un poco más por el código que te he puesto y tratas de entenderlo te darás cuenta de uqe lo que hace es:

Primero comprueba si lo que has hecho ha sido guardar y si es así pone el texto que has puesto al rellenar el formulario.

Segundo, si no has guardado (es decir: has buscado) lo que hace es poner el texto que has sacado de la base de datos con la consulta SQL. Supongo que la forma que tengas de sacar los datos es similar a esta:

$servidor='localhost';
$nombreBD="name";
$clave="login";
$baseDeDatos="base";
$conexionBD=mysql_connect($servidor,$nombreBD,$cla ve) or die("Error ".mysql_errno().": ".mysql_error());
mysql_select_db($baseDeDatos,$conexionBD);
$SQL="select * from tabla where algo=".$_GET['esto'];
$resultadoConsulta=mysql_query($SQL,$conexionBD);
$datos=mysql_fetch_array($resultadoConsulta);

Por lo que al poner $datos['contacto']se está diciendo que ponga el contenido del campo 'contenido' rescatado de la base de datos.


No sé si así te queda claro.

__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #9 (permalink)  
Antiguo 09/07/2005, 15:01
 
Fecha de Ingreso: enero-2004
Mensajes: 77
Antigüedad: 20 años, 3 meses
Puntos: 0
Me sirve, pero tengo que modificarlo todo

La estructura de la web va así


Formulario
Código php

Es decir
<html>
<head>
<script>
Funciones de validación y recarga
</script>
<form method>
Formulario con todos sus componentes
<form>
<?
Código php donde recibo variables

$Boton = $_GET['Boton'];
if $Boton = "Guardar"
{
Recibo variables e inserto
}

if $Boton = "Buscar"
{
Realizo el SQL de búsqueda y cargo variables
}

etc. etc.

Por lo tanto no me sirve a menos que transporte todo el código php hacia arriba y además sería un poco engorroso hacer un if then por cada componente del formulario no crees?.

Igual es buena la idea pero lo que expongo acá es un mini formulario comparado con el que realmente tengo. Que por lo menos tiene unos 10 componentes.
?>
  #10 (permalink)  
Antiguo 09/07/2005, 15:11
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Vamos a ver. Tú cuando pides lso datos via SQL pides todos de una vez, no? pues no tienes que volver a solicitar esos datos. En vez de cargar los valores de los campos en variables javascript, lo que tienes que hacer es poner esos valores en el value del formulario.

Si no logro hacerme entender (Es algo muy sencillo, te lo aseguro) prueba este código:
Código PHP:
<form method="get" name="formulario" action="pagina1.php">
<input type="text" name="Nombre" value="<? echo ($_GET['Boton']=='guardar')? $_GET['Nombre']:$dato['Nombre'];?>">
<input type="text" name="edad" value="<? echo ($_GET['Boton']=='guardar')? $_GET['edad']:$dato['edad'];?>">
<TEXTAREA NAME="Opinion" ROWS="4" COLS="30" ><? echo ($_GET['Boton']=='guardar')? $_GET['Opinion']:$dato['Opinion'];?></TEXTAREA>
<input type="button" name="guardar" value="Guardar" onclick="Validar
(this.value);">
<input type="hidden" name="Boton">
</form>
Suponiendo que guardes el contenido de los campos SQL dentro de un array llamado $dato.

__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
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 13:32.