Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Cambiar el contenido de un <textarea> segun seleccion en un <select>

Estas en el tema de Cambiar el contenido de un <textarea> segun seleccion en un <select> en el foro de Frameworks JS en Foros del Web. Hola, Bueno pues ahora me encuentro tratando de mostrar un valor determinado (almacenado en una BD) en un textarea, segun lo que se seleccione en ...
  #1 (permalink)  
Antiguo 26/06/2011, 23:05
 
Fecha de Ingreso: junio-2009
Mensajes: 75
Antigüedad: 14 años, 10 meses
Puntos: 0
Cambiar el contenido de un <textarea> segun seleccion en un <select>

Hola,

Bueno pues ahora me encuentro tratando de mostrar un valor determinado (almacenado en una BD) en un textarea, segun lo que se seleccione en un elemento <select>.

Cuento con una tabla llamada "codigos_observaciones", donde tengo los campos "cod_observ" y "observ", donde cada "observ" tiene su respectivo "cod_observ"

Veran imagino que lo mas viable es que se haga con AJAX ya que el textarea forma parte de un formulario y debe enviarse al final con todos los datos juntos, pero la verdad mis nociones de AJAX son muy pocas (por no decir nulas), asi que quisiera saber si pueden auxiliarme un poco, dejenme mostrarles como tengo estructurados los elementos con los que voy a trabajar.

El Select esta formado de la siguiente manera:

Código PHP:
Ver original
  1. Cod. Obs.
  2. <br/>
  3. <select name="cod_observ" id="cod_observ" style="width: 100%" size="5">
  4. <?php
  5.        $consulta  = 'SELECT cod_observ FROM codigos_observaciones';
  6.        $resultado = mysql_query($consulta) or die('La consulta fall&oacute;: ' .  mysql_error());
  7.        while($b = mysql_fetch_array($resultado)){
  8.        echo '<option value="'.$b["cod_observ"].'">'.$b["cod_observ"].'</option>';
  9. }
  10. ?>     
  11. </select>

Y mi textarea esta así

Código HTML:
Ver original
  1. Descripción
  2. <br/>
  3. <textarea id="observ" name="observ" cols="20" rows="5"></textarea>

como pueden ver los elementos del select tambien son extraidos de la tabla "codigos_observaciones", lo que significa que al seleccionar cierto elemento solo tendra que extraer el campo "observ" donde "cod_observ" sea igual al criterio de busqueda que envie al seleccionar un elemento del select ya sea con la propiedad Onchange ú Onclick.

Ahora en otro sistema que realize, basandome en un ejemplo que encontre en internet, logre armar una función que con AJAX realizaba una consulta desde otra pagina que mandaba llamar y me mostraba el resultado sin recargar la pagina al presionar Enter, así que supongo que puedo partir de aqui para facilitar las cosas y solo modificarla para que funcione con mi select, podrian darme una mano por favor.

El codigo AJAX es le siguiente:

Código Javascript:
Ver original
  1. /****************Realizacion de consulta por medio de AJAX al presional ENTER Keycode == 13********************/
  2.       function detectkey(evt,obj) {
  3.       keycode = (evt.keyCode==0) ? evt.which : evt.keyCode;
  4.     if (keycode==13){
  5.           if (document.getElementById('NumFolio').value.length == 0){
  6.           alert("Debe completar el formulario");
  7.           document.getElementById('NumFolio').focus();
  8.           return 0;}
  9.           var Sfolio=obj.value + String.fromCharCode(keycode);
  10.           var pagina='externos/filtra.php?Sfolio=S'+Sfolio;
  11.          
  12.           divcontenido = document.getElementById('SSform1');
  13.           ajax=objetoAjax();
  14.           ajax.open("POST", pagina, true);
  15.           ajax.onreadystatechange=function() {
  16.             if (ajax.readyState==4) {
  17.               divcontenido.innerHTML = ajax.responseText
  18.             }
  19.           }
  20.           ajax.send(null);
  21.     }    
  22.       }

Asumiendo que se modifico ya el codigo AJAX, la pagina que realiza la consulta deberia quedar de la siguiente forma:

Código PHP:
Ver original
  1. <?PHP
  2. $conexion = mysql_connect("localhost", "root", "root") or die ("No se puede conectar con el servidor");
  3. $db="bitacora_seguridad"; // el nombre de la base de datos
  4.     mysql_select_db($db, $conexion) or die('No pudo seleccionarse la BD.'); // conectamos con la base de datos
  5.  
  6.     if(isset($_REQUEST['cod_observ'])) {
  7.     $cod_obs = $_REQUEST['cod_observ'];
  8.     $query="SELECT observ
  9.            FROM codigos_observaciones
  10.            WHERE (cod_observ LIKE '$cod_obs')";
  11.      };
  12.      
  13.      $consulta=mysql_query($query,$conexion);
  14. ?>
  15. <?php
  16.     echo"<td>";
  17.         echo"Descripcion";
  18.         echo"<br/>";
  19.         echo"<textarea id='observ' name='observ' cols='20' rows='5'>";
  20.             while($row = mysql_fetch_array($consulta)) {
  21.             $row['observ'];
  22.             }
  23.         echo"</textarea>";
  24.     echo"</td>";
  25. ?>

Realmente solo falta que el AJAX se acomode para que se active al seleccionar alguna opcion del select, realiza la consulta y la muestra en el textarea, podrian ayudarme a modificarlo o darme una idae de como quedaria por favor.
  #2 (permalink)  
Antiguo 26/06/2011, 23:46
 
Fecha de Ingreso: junio-2009
Mensajes: 75
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Cambiar el contenido de un <textarea> segun seleccion en un <select>

Hola,

jugando un poco con el codigo lo eh modificado de la siguiente manera:

Codigo AJAX

Código Javascript:
Ver original
  1. /************Funciones de Ajax para el intercambio Asincrono de Información*************/
  2.     function objetoAjax(){
  3.           var xmlhttp=false;
  4.           try {
  5.               xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  6.           } catch (e) {
  7.               try {
  8.                  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  9.               } catch (E) {
  10.                   xmlhttp = false;
  11.           }
  12.           }
  13.           if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  14.               xmlhttp = new XMLHttpRequest();
  15.           }
  16.           return xmlhttp;
  17.       }
  18. /****************Realizacion de consulta por medio de AJAX  usando un <select>********************/
  19.       function detectkey(evt,obj) {
  20.           var cod_observ=obj.value;
  21.           var pagina='externos/filtra_observ.php?cod_observ='+cod_observ;
  22.           divcontenido = document.getElementById('SSform1');
  23.           ajax=objetoAjax();
  24.           ajax.open("POST", pagina, true);
  25.           ajax.onreadystatechange=function() {
  26.             if (ajax.readyState==4) {
  27.               divcontenido.innerHTML = ajax.responseText
  28.             }
  29.           }
  30.           ajax.send(null);  
  31.       };

Comprobandolo con el firebug parece que si envia la información al seleccionar algun elemento del select, pero parace que estoy teniendo problemas en la forma de mostrar el resultado, puesto que solo me regresa el textarea vacio.

El resultado lo muestro así:

Código PHP:
Ver original
  1. <?PHP
  2.     $conexion = mysql_connect("localhost", "root", "root") or die ("No se puede conectar con el servidor");
  3.     $db="bitacora_seguridad"; // el nombre de la base de datos
  4.     mysql_select_db($db, $conexion) or die('No pudo seleccionarse la BD.'); // conectamos con la base de datos
  5.  
  6.     if(isset($_REQUEST['cod_observ'])) {
  7.     $cod_obs = $_REQUEST['cod_observ'];
  8.     $query="SELECT observ
  9.            FROM codigos_observaciones
  10.            WHERE (cod_observ LIKE '$cod_obs')";
  11.      };
  12.      
  13.      $consulta=mysql_query($query,$conexion);
  14. ?>
  15. <?php
  16.     echo"<td>";
  17.         echo"Descripcion";
  18.         echo"<br/>";
  19.         echo"<textarea id='observ' name='observ' cols='20' rows='5'>";
  20.             while($row = mysql_fetch_array($consulta)) {
  21.             $row['observ'];
  22.             }
  23.         echo"</textarea>";
  24.     echo"</td>";
  25. ?>

Donde podra estar el error?, no logro ver algo mal :S
  #3 (permalink)  
Antiguo 27/06/2011, 00:08
 
Fecha de Ingreso: junio-2009
Mensajes: 75
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Cambiar el contenido de un <textarea> segun seleccion en un <select>

Hola,

¡Listo!, bueno pues solo era cuestion de agregar un echo antes de mostrar el resultado. jejeje

Problema resuelto amigos, gracias.

Saludos.

Etiquetas: ajax, contenido, seleccion, 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 21:28.